시스템 보안

15. FTP(1)

JNU 2022. 11. 2. 23:44
반응형

오늘은 FTP를 직접 설정해보고 보안 문제도 해결해보도록 할 거야

사실, FTP는 네트워크 보안에서도 몇 번 다뤄봤기 때문에 어렵지 않을 거야

실습환경은 SUlinux를 기반으로 했어

실습에 앞서 FTP의 개념을 이해하고 들어가자

조금 어려울지라도 잘 따라오도록!

 

 

 

1. FTP의 종류

1. FTP : 일반적인 FTP로 인증을 해야 진입할 수 있는 방식

2. anonymous FTP : 인증을 하되 인증=Anonymous로 password=email 주소로 진입하는 방식

3. TFTP : 무인증 FTP로 port 69번을 사용

4. VSFTP: FTP와 Anonymous 기능이 같이 합해져 있는 형태

 

 

2. FTP 운영 MODE

FTP는 운영 mode가 총 두 가지가 있는데, 하나는 active mode, 또 하나는 passive mode야

actvice mode부터 알아보도록 할게

 

- active mode

ftp에서 default로 설정되어 있는 mode

ftp 접속 요청을 client가 하되 server의 data port가 client의 data port로 접속 요청하는 방식

 

- passive mode

ftp 접속 요청을 client가 하되

active mode와 반대로 client의 data port가 server의 data port로 접속 요청하는 방식

 

 

무슨 소리인지 잘 이해가 안 되면 밑에 그림을 보고 이해해보자!

잘 보이지..??? 직접 그렸다고!!! 잘보여야 돼!! ㅋㅋㅋㅋ

 

위의 그림에서 1st 접속 요청은 active와 passive 둘 다 동일한 조건이야

다만, 둘의 차이점은 ftp 접속 요청을 하는 주체가 누구냐에 따라 달라지는 거야

'A'는 active를 뜻하고 'P'는 passive를 뜻하는 부분이야!

 

 

그렇다면, 언제 active mode를 쓰고 언제 passive mode를 써야 할까?

관리자 입장에서는 passive mode를 쓰는 것이 관리하기에 매우 적합한 방법이야

그 이유는 port 설정에 있어

 

 

server에서 사용하는 ftp port는 기본적으로 고정되어 있어

만약 고정되어있지 않으면 client들이 ftp 접속할 때마다 port를 변경해서 접속해야 하기 때문에 불편하지

다만, client들이 ftp를 접속할 때는 dynamic 하게 port를 바꿔가며 접속을 하게 되는데

passive mode가 아닌 active mode로 ftp를 실행하게 되면 server가 client로 접속을 요청하는데

client의 ftp port가 무엇인지 찾아내기 어렵기 때문에 반대로 client가 server로 접속 요청을 하는 방식인

passive mode가 더 효율적이라는 거야!

정리하자면 client들의 관리를 위해서라면 server 관리자 입장에서 passive mode가 효율적이다! 

어려우면 이렇게만 알아둬!

으.... 너무 길었지?? ㅜ

 

아무튼 설명은 여기까지만 하는 걸로 하고 이제 직접 실습을 진행해보도록 할 거야!

환경설정 파일과 ftp 접속을 하기 위한 설정 변경 등을 해볼 테니까 잘 따라와

 

 

 

3. FTP 설정

FTP 환경설정 file : /etc/vsftpd/vsftpd.conf

사용자 접근통제 file : /etc/vsftpd/ftpusers, /etc/vsftpd/user_list

 

ftpusers file : PAM에서 제어하는 file

user_list file : FTP service에서 제어하는 file

 

두 파일 모두 제어하는 목록은 바로 계정 이름이야

등록된 계정 이름들은 모두 ftp 차단이 되고 등록되지 않은 계정 이름들은 모두 허용되는 형식이야

 

user-list 목록
ftpusers 목록

 

첫 번째로 실습할 부분은 anonymous ftp 사용이야

anonymous ftp 사용을 위해 vsftpd.conf 파일의 내용을 몇 가지 변경시켜볼게!

 

1. anonymous_enable=YES

초기 설정에는 NO로 설정되어 있는데 이를 YES로 변경시켜줘

11번 라인에 주석 처리된 부분을 보면 Allow anonymous FTP?라고 써져있지?

 

 

2. Listen_port=2121

항상 보안을 위해서라면 port 번호도 well-known port 그대로 쓰는 것이 아니라

변경된 port로 사용해야지!

나는 기억하기 쉽게 맨 마지막 라인에 추가했어 위치는 상관없어!

참고로 여기 대문자 L로 쓰면 안돼!! 소문자로 쓸 것!!

 

3. userlist_enable=YES

위에서 ftp 접근통제하는 두개의 file이 있었는데 하나가 ftpusers file이고

다른 하나가 userlist file이었어

ftpusers는 PAM에서 제어하지만 userlist file은 vsftpd.conf에서 사용여부를 결정할 수 있어

YES로 설정을 했으니 현재 ftp의 접근통제는 userlist file을 통해서 이뤄지고 있는거야

 

 

 

 

그렇다면 anonymous ftp가 사용하는 파일이 있을 텐데 어디에 있을까?

바로  /var/ftp/pub file이야 여기서 ftp가 이뤄지는데

windows에서 알드라이브를 설치한 후  ftp 접속을 해보도록 할게

접속 전에 iptables는 stop 한 상태에서 실습하도록 하자! (service iptables stop)

추후에 iptables를 허용한 상태에서 ftp 접속하는 방법도 배워보도록 할 거야!

 

 

 

1. /var/ftp/pub 디렉터리에 파일 생성하기

windows에서 ftp 접속 시 알맞게 연결했는지 확인하기 위한 작업

 

 

2. windows10에서 sulinux(192.168.10.135)로 ftp 접속 시도 

이때 알드라이브를 설치해서 접속했어!

sulinux에서 생성한 디렉터리와 파일이 그대로 있지?

ftp 접속이 성공적으로 이루어진 거야

 

 

 

한 가지 알아둘 점은 현재 windows10의 알드라이브에서 파일을 생성할 수 없어 

왜냐면 pub 디렉터리에 w 권한을 주지 않았기 때문이야

우리가 예전에 디렉터리와 파일 권한에 대해 배워봐서 알고 있을 거야

만약 파일을 생성하도록 한다면 기타 권한에 w 권한을 주도록 해야겠지?

pub의 권한이 지금 755로 설정되어있는 것을 볼 수 있어

 


 

 

 

자 그런데 여기서 한 가지 신기한 점이 있어

현재 pub 디렉터리의 위치가 어딘지 알고 있지? /var/ftp 디렉토리의 하위 디렉터리로 존재하는데

여기서 /var/ftp 디렉터리에 모든 권한을 주는 chmod 777 /var/ftp를 실행하게 되면 어떻게 될까?

/var/ftp 디렉토리에 777을 주는 실험을 해보도록 할게

 

 

1. chmod 777 ftp로 권한을 full로 부여하자

 

 

2. windows10에서 알드라이브로 ftp접속을 시도하자

 

 

3. 어..?! 접속이 불가능하네..??

 

 

이를 통해 알 수 있는 점은 pub 디렉터리의 상위 디렉터리인 /var/ftp 디렉터리의 권한을 777로 부여하면

ftp 서비스 자체적으로 anonymous로 접속을 불가능하게 막게 되어있어

왜냐면 익명의 사용자가 full 권한을 갖게 되면 시스템 운영에 있어서 취약점이 발생하게 되거든!

따라서 anonymous 사용할 때는 full 권한을 주지 않도록 해야 돼! 

 



 

 

오늘은 ftp에 대해 전반적으로 알아보고 실습을 해봤는데 아직 해야 할게 많이 남아있어 ㅜㅜ

다음 시간에 이어서 anonymous ftp를 다뤄보고 active, passive mode도 같이 실습하도록 할게!

 

 

 

반응형