And Brain said,
FTP(File Transfer Protocol)의 개념과 보안 문제 본문
반응형

1. FTP란 무엇인가?
FTP(File Transfer Protocol)는 네트워크를 통해 파일을 전송하는 표준 프로토콜로, 1971년 최초 개발 이후 꾸준히 사용되고 있습니다. 주로 클라이언트-서버 구조를 기반으로 동작하며, TCP 프로토콜을 사용하여 안정적인 파일 전송을 지원합니다.
1.1 FTP의 주요 특징
- 클라이언트-서버 모델: FTP 서버가 클라이언트의 요청을 처리하여 파일을 전송.
- 제어(21번 포트) & 데이터(20번 또는 다수의 랜덤 포트) 연결: 별도의 데이터 채널을 통해 파일을 전송함.
- 다양한 전송 모드: Active Mode와 Passive Mode를 지원하여 방화벽 환경에 적응 가능.
- 명령어 기반 인터페이스: get, put, ls, cd 등의 명령어를 사용하여 파일을 주고받음.
2. FTP의 보안 문제
기본 FTP는 보안이 취약하여 다양한 공격에 노출될 가능성이 큰데, 다음은 대표적인 보안 취약점들입니다.
2.1 평문 전송으로 인한 정보 유출
기본 FTP는 사용자 아이디, 비밀번호, 파일 내용을 암호화 없이 그대로 전송한기에, 네트워크를 가로채는 공격(스니핑, MITM)을 당하면 공격자가 로그인 정보를 쉽게 확보할 수 있습니다.
2.2 익명 FTP(Anonymous FTP) 취약점
- 익명(anonymous) 계정을 허용하면 누구나 인증 없이 서버에 접속 가능.
- 익명 접근이 허용된 경우, 내부 파일이 공개될 위험이 있음.
- 공격자가 악성 파일을 업로드하여 서버를 감염시킬 가능성 존재.
2.3 디렉토리 탐색 및 권한 문제
- FTP 서버의 잘못된 설정으로 인해 사용자가 홈 디렉토리 이외의 경로로 이동할 수 있음.
- chroot 설정이 없으면 루트 디렉토리 접근이 가능하여 보안에 취약.
2.4 패시브 모드(Passive Mode)와 방화벽 문제
- 패시브 모드는 랜덤 포트를 사용하기 때문에 방화벽 설정이 어려움.
- 특정 네트워크 환경에서는 FTP 데이터 전송이 차단될 수도 있음.
2.5 악성코드 및 불법 자료 배포
- FTP 서버를 공개적으로 운영하면 공격자가 불법 파일(해킹툴, 스팸 메일, 악성코드)을 업로드할 가능성이 있음.
- 보안이 취약한 FTP 서버는 사이버 범죄의 기반으로 악용될 수 있음.
3. FTP 보안 강화 방안
기본 FTP의 보안 취약점을 보완하기 위해서 아래와 같은 다양한 대책을 마련할 수 있습니다.
3.1 익명 FTP 차단
일반 FTP 설정에서 익명 접속 비활성화
# /etc/passwd에서 ftp 또는 anonymous 계정 삭제
userdel ftp
userdel anonymous
# FTP 서비스 재시작
systemctl restart ftp
ProFTP 설정에서 익명 접속 비활성화
# /etc/proftpd/proftpd.conf 파일 수정
sed -i 's/<Anonymous ~ftp>/#<Anonymous ~ftp>/' /etc/proftpd/proftpd.conf
sed -i 's/User ftp/#User ftp/' /etc/proftpd/proftpd.conf
sed -i 's/UserAlias anonymous ftp/#UserAlias anonymous ftp/' /etc/proftpd/proftpd.conf
# ProFTP 서비스 재시작
systemctl restart proftpd
vsFTP 설정에서 익명 접속 비활성화
# vsftpd.conf에서 익명 접속 비활성화
sed -i 's/^anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd.conf
# vsFTP 서비스 재시작
systemctl restart vsftpd
3.2 보안이 강화된 대체 프로토콜 사용
최근에는 FTP 대신 보안이 강화된 파일 전송 프로토콜을 사용하는 것이 권장됩니다.
- SFTP (Secure FTP): SSH 기반 파일 전송 (암호화 지원)
- FTPS (FTP over SSL/TLS): SSL/TLS 암호화를 지원하는 FTP
- Rsync: 빠르고 효율적인 동기화 파일 전송 도구
- Git: 버전 관리 및 파일 동기화에 특화된 분산 시스템
- NFS SMB, SCP, etc...
3.3 사용자 계정 보안 강화
- ftp 또는 anonymous 계정을 삭제하여 보안 강화
userdel ftp
userdel anonymous
- 사용자별 chroot 설정을 통해 디렉터리 이동 제한
echo "chroot_local_user=YES" >> /etc/vsftpd.conf
systemctl restart vsftpd
3.4 방화벽 및 네트워크 보안
- 패시브 모드에서 사용하는 포트를 제한하여 방화벽 설정을 최적화
echo "pasv_min_port=40000" >> /etc/vsftpd.conf
echo "pasv_max_port=50000" >> /etc/vsftpd.conf
systemctl restart vsftpd
- 특정 IP만 FTP 접속 허용
iptables -A INPUT -p tcp --dport 21 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j DROP
3.5 로그 모니터링 및 접근 제어
- FTP 접속 로그를 정기적으로 모니터링하여 비정상적인 접근 감지
tail -f /var/log/vsftpd.log
- Fail2Ban을 사용하여 무차별 대입 공격(Brute Force) 방지
yum install fail2ban -y
systemctl enable fail2ban --now
FTP는 여전히 많이 사용되는 파일 전송 프로토콜이지만, 기본적인 보안 설정이 부족하면 해킹 및 악성코드 유포의 경로로 악용될 수 있습니다. FTP 보안을 강화하려면 익명 접속 차단, SFTP/FTPS 전환, Rsync/Git 등 대체 프로토콜 사용, 방화벽 설정, 로그 모니터링 등의 조치를 적극적으로 적용하시기 바랍니다.
반응형
'IT > 보안' 카테고리의 다른 글
AWS로 배우는 IAM, 넌 지나갈 수 없다. (+Spring boot 연동 예제) (1) | 2025.02.12 |
---|---|
버퍼 오버플로우(Buffer Overflow) 공격, 원리와 그 방어 (1) | 2025.02.11 |
NFS(Network File System)의 개념과 보안문제 (0) | 2025.02.11 |
DoS/DDoS(Denial of Service) 공격, 원리와 그 방어 (0) | 2025.02.10 |
PAM, 리눅스 인증(Authentication)의 최전선 (0) | 2025.02.05 |
Comments