네트워크를 통해 서버와 클라이언트간에 파일을 전송하는 프로토콜로 안전한 암호화된 통신을 하기 위해서서는 SSH를 기반으로 하는 SFTP(SSH FTP, 22/tcp)나 전송계층의 SSL/TLS 기반으로 하는 FTPS(FTP over SSL/TLS, 990/tcp)가 있습니다.
FTP 동작 모드
① 능동(Active) 모드
FTP 클라이언트의 기본 설정 값으로 설정되어 있고, 클라이언트에서 서버의 21/tcp 포트로 접속하여 제어채널을 생성하고 서버의 20/tcp 포트로 클라이언트에 접속하여 데이터 채널을 생성한 후에 데이터를 전송하는 방식입니다.
[설명]
제일 먼저 클라이언트가 서버의 21/tcp 포트로 연결하여 제어 채널을 생성 한 후 사용자가 ls 명령어를 통해 파일 리스크를 보기 위해 실행하면 클라이언트는 데이터 채널로 사용할 임시포트(3001/tcp)를 서버에게 알려줍니다. 그러면 서버는 서버의 20/tcp 포트를 사용하여 클라이언트가 알려준 임시포트로 3001/tcp 포트로 연결하여 데이터 채널을 생성하고 데이터 채널을 통해 데이터를 전송 한 후 데이터 채널을 종료하게 됩니다.
만약에 클라이언트에 방화벽이 설치되어 있는 경우에는 서버로 ftp 접속은 되지만 서버에서 클라이언트로 데이터 채널을 통해 파일을 받을 수 없습니다.(클라이언트 방화벽에서 Inbound 허용/Outbound 차단) FTP 서버(20/tcp)에서 클라이언트의 1024/tcp 포트 이상으로 접속을 해야하는데 클라이언트의 방화벽에서 outbound 차단 정책으로 인해 차단이 되는 것이기 때문에 이를 해결하기 위해서는 클라이언트 방확벽 정책에서 1024/tcp 이상 포트를 허용해 주면 데이터를 정상적으로 가져올 수 있게 됩니다.
② 수동(Passive) 모드
FTP 수동 모드는 클라이언트에서 서버의 21/tcp 포트로 접속하여 제어 채널을 생성하고 테이터 채널도 클라이언트에서 서버로 접속하여 데이터 채널을 생성하여 데이터를 보내는 방식입니다. 이와 같은 방식은 능동모드에서 클라이언트에 방화벽이 설치되어 데이터 채널을 통해 데이터를 정상적으로 가져오지 못하는 문제를 해결할 수 있습니다.
[설명]
클라이언트가 서버의 21/tcp 포트로 연결하여 제어 채널을 생성 한 후 사용자가 ls 명령어를 통해 파일 리스크를 보기 위해 실행하면 수동모드로 연결하기 위해 클라이어트에서 서버로 "PASV" 명령을 전송하고 서버는 데이터 채널에서 사용할 임시포트(4000/tcp)를 클라이언트에게 알려줍니다. 그러면 클라이어트는 서버가 알려준 임시포트로 접속하여 데이터 채널을 생성한 후 서버가 데이터를 보내면 데이터 채널은 종료하게 됩니다.
FTP 보안 취약점
① FTP 바운스(Bounce) 공격
FTP 프로토콜의 구조적 취약점을 이용한 공격으로 제어 채널과 데이터 채널이 다르게 사용하고 데이터 채널을 생성할 때 목적지를 확인하지 않는다는 점에서 FTP 서버의 버그가 아니라 원래 FTP 프로토콜의 설계 상에서 발생한 문제라고 볼 수 있습니다.
C:\Users\MSPARK> ftp -d 10.10.20.100 10.10.20.100에 연결되었습니다. 220 (vsFTPd 3.0.3) ---> OPTS UTF8 ON 200 Always in UTF8 mode. 사용자(10.10.20.100:(none)): seven ---> USER xxxx 331 Please specify the password. 암호: ---> PASS xxxx 230 Login successful. ftp> get date.out ---> PORT 10,10,20,99,196,121 200 PORT command successful. Consider using PASV. ---> RETR date.out 226 File send OK |
능동모드에서 PORT 명령을 통해 IP 주소와 포트를 지정하여 전달해 주는데 이때 IP 주소와 포트 번호를 실제 클라이언트가 아닌 임의의 IP 주소를 지정하여 공격자가 원하는 곳으로 데이터를 전송할 수 있습니다. 참고로 포트번호는 (196X256)+121=50297 포트(데이터 채널 포트) 입니다.
② TFTP(Trivial FTP) 공격
일반적으로 diskless의 호스트에서 부팅 이미지를 전달할 목적으로 사용하며 69/udp 포트를 사용, 별도의 인증과정 없이(계정/패스워드를 인증 없이) 지정된 디렉토리에 접근할 수 있는 보안상의 취약점을 가지고 있습니다. 이런 문제를 해결하기 위해서는 TFTP를 secure 모드로 운영을 해야 하는데 secure 모드란 chroot 기능을 이용하여 지정된 디렉토리의 상위 디렉토리로는 접근하지 못하도록 제한하는 것입니다.
③ Anonymous FTP 공격
Anonymous FTP는 익명의 계정(패스워드가 없는 계정)으로 FTP에 접속하여 서버의 파일에 접근할 수 있기 때문에 악성코드나 바이러스등을 업로드할 수 있습니다. 보안상 심각한 문제를 야기할 수 있습니다.
※ FTP 접근제어 설정
ftpusers 파일 내용에서 ftp 접속을 제한할 계정를 제한함으로써 특히 root 등 중요 계정으로 접속되지 않도록 제한해야 합니다.
'자격증' 카테고리의 다른 글
정보보안기사(실기) :: DNS Spoofing 공격과 DNS Cache Poisoning 공격 (0) | 2022.06.24 |
---|---|
정보보안기사 (실기) / 리눅스마스터 1급 :: DNS(Domain Name System) (0) | 2022.06.23 |
리눅스마스터 1급(실기) :: 데이터 백업 관리 (0) | 2022.06.22 |
리눅스마스터 1급(실기) :: 커널과 프로세스 (0) | 2022.06.21 |
정보보안기사(실기) :: TCP SYN Flooding(DDoS) 공격 (0) | 2022.06.21 |