본문 바로가기

시스템 보안

16. FTP(2)

반응형

이번 시간에는 FTP에 대해 더 알아보도록 할 거야

지난 시간에 배웠던 passive mode와 active mode를 직접 실습해보고

어떤 설정을 바꿔야 active mode와 passive mode로 나뉘는지 알아보도록 할게!

 

 

 

1. Active mode 설정

 

/etc/vsftpd/vsftpd.conf 파일에 57번 line과 60번 line을 살펴보자

57. idle_session_timeout=600

60. data_connetcion_timeout=120

 

57번에서 나오는 idle_session은 ftp의 control port를 뜻해

즉 client와 server가 처음 ftp를 접속 시도할 때 사용하는 port라고 볼 수 있어

57번 설정은 바로 그 port에 대한 시간 설정을 600초로 맞춘다는 이야기야

 

60번에서 나오는 data_connetcion은 ftp의 data port를 뜻해

control port로 client와 server의 session이 확립된 상태에서 data 송수신이 이뤄져야 하는데

이때 사용하는 port가 data port야!

그래서 60번 설정은 data port를 연결할 수 있는 시간을 120초로 제한하겠다는 이야기야

보통 session_timout 시간을 data_connction_timout 시간보다 길게 설정을 해

session 확립을 해놓은 상태에서는 언제든 data port가 접속할 수 있기 때문이지

 

 

iptables는 중단하고 vsftpd는 다시 재시작하도록 하자

 

자 그러면 이제 vsftpd.conf 파일에 맨 마지막 줄에 listen_port=2121로 고정시키자

여기까지 설정이 완료되면 우리가 평상시에 수행하는 active mode ftp 방식이야

일단 설정을 마쳤으니 ftp가 정상 작동하는지 확인해보자

참고로 방화벽은 잠시 꺼둔 상태에서 실습해보도록 할게! (iptables stop 하기)

 

windows10에서 sulinux로 ftp 접속을 하자 이 떄 사용하는 아이디는 jinwoo야 root가 차단되어 있어서!

 

 

jinwoo 파일에 정상적으로 접속했어

 

 

여기까지가 active mode로 접속한 내용이었어

그렇다면 passive mode는 어떻게 접속해야 될까?

먼저 ftp control port를 고정시켜주고 iptables에도 해당 port를 등록해줘야 해

실습하면서 설정해볼게!

 

 

 

 

2. Passive mode 설정

 

우리가 보안상의 문제로 vsftpd.conf 파일의 마지막 줄에 listen_port=2121을 추가했었지?

이제 2121 port를 iptables에 고정시켜보도록 할 거야

하지만 iptables에 2121 port를 등록해도 ftp 인증은 가능하지만 data port가 연결되지 않아

data들을 조회할 수 없어!

밑의 사진이 바로 그런 예야

 

iptables에 2121번 port 고정시키고 iptables restart 실행!

 

 

 

 

centos7로 sulinux의 ftp에 접속을 하면 인증에 성공했지만 

해당 ftp 파일과 디렉터리를 볼 수 없게 돼

왜냐면 data port가 dynamic 하게 설정되기 때문에 해당 port를 정적으로 잡지 못했기 때문이야

이제 control port는 고정이 되었으니 data port도 고정을 시켜야겠지?

그러려면 다시 vsftpd.conf 파일로 돌아와서 다음과 같이 설정을 값을 넣어줘야 해

 

 

pasv_min_port=2020

pasv_max_port=2020

data port는 접속할 때마다 항상 바뀌기 때문에 아예 고정을 시키는 방법이야

그리고 iptables에도 2020을 허용하도록 설정을 추가해줘야 해

vsftpd와 iptables 설정이 끝났으니 service restart를 하고 centos7에서 ftp 접속을 시도해보자

 

 

 

 

아까 2020번 port를 iptables와 vsftpd.conf 파일에 설정하기 전에는 볼 수 없었던 ftp 파일을

지금은 볼 수 있게 되었지? 바로 data port까지 정적으로 고정시켰기 때문에 가능한 거야

이것이 바로 active mode와  passvie mode의 차이점이라고 볼 수 있어

 

 

 

 

3. Chroot 설정

마지막으로 알아볼 내용은 바로 chroot_list 설정이야

chroot_list를 설정하지 않는다면 아래 사진처럼 해당 계정의 파일만 볼 수 있는 게 아니라

접속한 server의 root 파일까지 진입할 수 있게 되어있어

 

이러한 취약점을 막기 위해선 어떻게 해야 될까? 지금부터 그 방법에 대해 설명하도록 할게

다시 vsftpd.conf 파일로 들어가 볼까?

이 파일에 94번, 96번 line이 존재하는데 주석을 풀어주도록 하자

 

94. chroot_list_enable=YES  >> chroot_list를 실행시키는 것에 대해 동의

96. chroot_list_file=/etc/vsftpd/chroot_list  >> chroot_list를 적용할 파일 경로

 

그리고 chroot_list 파일을 새로 만들고 계정을 등록하도록 하자

94번,96번 line 주석 풀기
jinwoo 계정을 등록

 

 

service vsftpd restart 명령으로 vsftpd를 다시 시작하고 windows10에서 ftp 접속을 해보자

그러면 다음과 같이 디렉토리가 축소되어서 나올 거야

이렇게 되면 해당 계정의 사용자는 제한된 영역에서만 ftp를 사용할 수 있게 되는 거야

jnu 디렉토리 말고 진입할 수 있는 디렉토리가 없음을 볼 수 있어

 



 

 

여기까지가 ftp 설정과 보안 설정에 대한 내용이었어

두 편에 나눠서 설명한 내용이기 때문에 많이 복잡하겠지만 잘 기억해두고 활용할 수 있도록!

 

반응형

'시스템 보안' 카테고리의 다른 글

시스템 보안  (0) 2022.11.22
리눅스 비밀번호 설정  (0) 2022.11.04
15. FTP(1)  (0) 2022.11.02
17. 아파치 서버 설정  (0) 2022.01.04
14. Samba  (0) 2021.12.29