본문 바로가기

[혁신성장 청년인재] 인공지능을 활용한 보안전문가 양성과정

Day13: 리눅스 관리자 | FTP | NFS | 쉘프로그래밍


시작부터 반성

원래 당일 배운거 당일 정리를 해야 하는데, 귀찮아서 미뤘더니 하루만에 다 까먹어버렸다. 

그렇게 이틀이 지나고 주말이 지나버려서 뭘 배웠는지 그 생생한 기억을 다 잊어버렸다 ㅠ.ㅠ

수업 시 작성했던 메모 중심으로 정리를 하긴 하지만, 앞으로는 꼭 당일에 정리를 해야겠다.

 

짤막 간단 보안 상식 (나중에 자세히 알아보기)

http 평문 전송 80번포트
https http 내용을 암호화하기 위해 발전시킨 프로토콜. http내용을 443포트로 넘긴다. 하지만 443포트로 넘기기 전에는 평문이며, 열어서 볼 수 있다는 취약점이 있다.
hsts 처음부터 433포트로 진행이 돼, 열어서 볼 수 X
QUIC Quick UDP Internet Connections. 첨부터 암호화해서 전송.  
http/3 나중에 자세히 알아보기

FTP 
설치 

 

yum -y install vsftpd

systemctl restart vsftpd

 

yum -y install ftp

 

ftp 연결하기

 

[root@web ~]# ftp 70.12.113.64

Connected to 70.12.113.64 (70.12.113.64).

220 (vsFTPd 3.0.2)

Name (70.12.113.64:root): user01

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> passive

Passive mode off.

ftp> passive

Passive mode on.

ftp> 

 

? 하면 사용할 수 있는 명령어 보임

 

binary 용량 큰 파일 보낼 때

hash

 

cd 는 접속한 서버 내에서 디렉터리 변경

접속한 디렉토리 말고, 다른 파일 경로로 받고 싶을 때. (local) lcd 로 받으면 /tmp 에 받아진다. 

 

vsftp의 보안취약점

ftp 접속 계정과 시스템계정이 같다. very secure ftp 임에도 불구하고, 시스템 계정이 그대로 노출됨. ftp 만을 위한 가상 계정을 사용하는 게 좋음 

 

장점은 파일 다운로드 업로드시 접속한 사용자 권한으로 설정되어, 편하다.



tcp-dump 에서 네트워크 정보 다 보임.


방화벽

firewall-cmd    

           

[root@web ~]# firewall-cmd --get-zones

block dmz drop external home internal public trusted work

 

trust : zero trust 개념. 네트워크를 통과했어도 믿지 말고 한 번 더 검증하자.

 

iptables -L

 

FTP는 포트를 2개 사용한다. 근데 방화벽에서 포트는 21번반 열어서 활용한다. 전에는 포트 둘 다 열었는데, 그걸 stateless(상태고려X) 방식이다. 방화벽에 지나가는 모든 통신에 대해 정책을 넣어줘야 통신이 됨. 

 

stateful inspection (상태 고려O)

네트워크는 메모리로 남음. 세션은 맺으면 established(related) 라고 해. 그런 애들은 by pass 로 걸어줌. 한 번 방화벽 통과한 서비스는 룰 정책 걸어줄 필요 없다. 

 

 


RPC 통신 Remote Procedure call

user 를 하나 만들어서, 로그인이 안되는 사용자데몬을 동작시켜..

0~1023 프로세스 중 하나를 root 권한으로 이용해서 client 가 접속하면 들어오게 해줌.  rpcinfo -p

 

ex. maria db 

 

rpc보다 , 로그인 안되는 계정 하나 만들어서 프로세스 접속하도록 하는 게 편함. 


파일 입출력에 대한 컨트롤 방법

쉡 프로그래밍

 

~ data.txt 에 저장

 

hong 28 011-222-2222 seoul 

park 34 017-333-3333 kyunggi 

im 23 019-444-4444 chungnam 

son 49 016-555-5555 us 

gil 19 018-666-6666 korea

jang 21 011-7777-7777 japan 

lee 16 016-8888-8888 china 

sa 45 017-9999-9999 canada 

hwang 32 015-555-5555  kwangju

 

cut paste diff sort uniq sed awk

 

cut 은 빠르다. 기능적으로는 아쉽. 간격이 일정해야 함.

[root@web ~]# cut -d " " -f 1,3 data.txt

hong 011-222-2222

park 017-333-3333

im 019-444-4444

son 016-555-5555

gil 018-666-6666

jang 011-7777-7777

lee 016-8888-8888

sa 017-9999-9999

hwang 015-555-5555

 

[root@web ~]# cut -d ":" -f 1,7 /etc/passwd

root:/bin/bash

bin:/sbin/nologin

daemon:/sbin/nologin

adm:/sbin/nologin

lp:/sbin/nologin

sync:/bin/sync

 

grep -li umask /etc/* 2> /dev/null

 

//생각보다 많이 쓰인다. 

grep -c root /etc/passwd

2

 

grep

fgrep

egrep

 

pgrep 은 프로세스 잡는거로 완전 다른거..

 

sort data.txt

기본적으로 오름차순

  • 내림차순으로 -r

  • 특정 필드 기준으로 정리하기 등 -t

# sort -n -r -t ":" -k3 /etc/passwd | head

 

uniq 명령을 쓰려면 sort 를 필수로 해야함.

 

sed : 출력 시 바꿔서 출력하는 거

sed ‘/japan/d’ data.txt → japan 삭제하고 출력

sed '/japan/p' data.txt → japan 두 번 나오게 출력

sed '1,3d' data.txt

 

sed 's/japan/bosung/g' data.txt

 

sed -n '5,$s/japan/bosung/gp' data.txt

 

sed -e 's/us/bosung/g' -e '/japan/d' data.txt



[root@web ~]# cat sedfilter 

s/us/bosung/g

/japan/d

[root@web ~]# sed -f sedfilter data.txt

hong 28 011-222-2222 seoul 

park 34 017-333-3333 kyunggi 

im 23 019-444-4444 chungnam 

son 49 016-555-5555 bosung 

gil 19 018-666-6666 korea

lee 16 016-8888-8888 china 

sa 45 017-9999-9999 canada 

hwang 32 015-555-5555  kwangju




 

sed -f quiz data.txt | cut -d " " -f 1,3 | tail -5

[root@web ~]# cat quiz 

s/japan/busan/g

/china/d


[root@web ~]# df -ThP | awk '{print $1, $6}'

Filesystem Use%

devtmpfs 0%

tmpfs 0%

tmpfs 1%

tmpfs 0%

/dev/mapper/centos-root 16%

/dev/mapper/vg--test-lv_test1 1%

/dev/mapper/vg--test-lv_test2 1%

/dev/mapper/centos-home 1%

/dev/sda1 19%

tmpfs 1%

 

[root@web ~]# df -ThP | awk '$2 == "xfs" {print $1, "사용량="$6}'

/dev/mapper/centos-root 사용량=16%

/dev/mapper/vg--test-lv_test1 사용량=1%

/dev/mapper/centos-home 사용량=1%

/dev/sda1 사용량=19%

 

df -ThP | sed 's/%//g' | awk '$2 == "xfs" && $6 > 10 {print $1, "사용량="$6"%"}'

 

awk '{print $3}' lastb.txt | grep ^ip- | sort -n | uniq | sed -e 's/ip-//g'

70.12.113.139

70.12.113.52.

70.12.113.54.

70.12.113.56.

70.12.113.59.

70.12.113.62.

70.12.113.64.

70.12.113.69.

70.12.113.71.

70.12.113.74.

70.12.113.75.



awk '{print $3}' lastb.txt | grep ^ip- | sort -n | uniq | sed -e 's/ip-//g' -e 's/\.$//g'

70-12-113-139

70-12-113-52

70-12-113-54

70-12-113-56

70-12-113-59

70-12-113-62

70-12-113-64

70-12-113-69

70-12-113-71

70-12-113-74

70-12-113-75

 

마지막 자리의 . 을 지워주기



` 숫자 1 앞에 있는 문자. `` 내의 결과를 의미한다. 

 

파일 출력 강의

[root@web ~]# for i in `ls /proc | grep ^[0-9] | sort -n`

> do

> ls -l /proc/$i/exe 2>/dev/null

> done

 

[root@web ~]# cat awk_practice.txt 

BEGIN {

sum=0;

line=0;

}

{

sum += $2;

line ++;

}

END {

average = sum / line;

print "나이의 평균 : " average " 세 ";

}

[root@web ~]# awk -f awk_practice.txt data.txt

나이의 평균 : 29.6667 세 


NFS ( Network file system)

설치

yum -y install nfs-utils

 

mkdir -p /exports/hj

chmod 775 /exports/*

chown user01:nfsgroup /exports/*

 

cat /etc/exports

/exports/hj 70.12.113.0/24(rw,sync,sec=sys)

 

exportfs -r

systemctl restart nfs-server

 

showmount

showmount 70.12.113.64 --exports

 

 

반응형