정보보안기사

FTP 보안

SNNP 2023. 1. 22. 07:37

FTP (File Transfer Protocol)

FTP는 well known TCP 포트 사용

User 명령을 통해 사용자명을 전송하여 어떤 사용자가 접근을 시도하는지 확인

PASS 명령을 통해 사용자의 비밀번호 전송

제어 연결(21번 포트), 데이터 연결(20번 혹은 1024번 이후 포트)

FTP 연결

default는 active 모드

passive 모드 사용 여부는 클라이언트가 결정

Active 모드 Passive 모드
- 서버가 21,20 번 포트 사용
- 서버에는 두 개의 포트만 열면 서비스 가능
- 두 번째 connection 은 서버에서 클라이언트로 접속
- 클라이언트에 방화벽 설치 시 접속 불가
- 서버가 21,1024번 이후 포트 사용
- 데이터 전송을 위해 1024번 이후 포트 사용
- 서버에서 클라이언트로 접속해야 하는 모순 해결을 위해 고안한 방식
- 서버에서는 21번 포트와 1024번 이후의 모든 포트 오픈
- 보안을 위해 서버에서 passive 모드로 사용한 포트 제한
- 두 번째 connection은 클라이언트에서 서버로 접속

익명 FTP

익명 FTP는 기술지원이나 고객지원, 파일 배포 등을 하고자 하는 단체에서 사용하는 경우가 많음

계정이나 PW가 불필요, 이름으로 anonymous / PW로 이메일 주소를 사용

입력하는 비밀번호는 실제 비밀번호가 아니면 누가 접속하고 있는지 서버가  로그에 기록하는데 쓰임

TFTP(Trivial File Transfer Protocol)

FTP 기능을 전부 지원할 필요가 없거나 모두 지원하는 것이 비현실적인 경우를 위해 간단한 TFTP 개발

UDP 69번 포트 사용(흐름 제어, 오류 제어를 위한 기능 없어서 제어 메커니즘 생성해야 함)

읽기 전용 메모리나 디스크 없는 워크스테이션에 설치할 때 주로 사용

 

TFTP 메시지

  • 읽기 요구(RRQ) : 클라이언트가 서버로부터 데이터를 읽기 위한 연결을 설정하는 데 사용
  • 쓰기 요구(WRQ) : 클라이언트가 서버로부터 데이터를 쓰기 위한 연결을 설정하는 데 사용
  • 데이터(DATA) : 클라이언트 또는 서버가 데이터 블록을 전송하기 위하여 사용
  • 확인 응답(ACK) : 클라이언트 또는 서버 데이터 블록을 수신하였다고 응답하기 위해 사용
  • ERROR 메시지 : 클라이언트 또는 서버가 연결을 설정하지 못하거나 데이터 전송 중에 문제가 발생할 때 사용

 

FTP와의 차이점

  • 전송 : TCP와 UDP의 차이와 같이 TFTP는 단순성이 중요하다고 다양한 기능을 지원
  • 한정된 개수의 명령 : 파일을 보내고 받는 것만 가능
  • 한정된 데이터 표현 방식 : 아스키와 바이너리 방식 지원
  • 인증의 부족 : 삭제 기능처럼 위험한 기능은 지원하지 않음, 인증 기능이 없어서

NFS와 삼바

NFS

  • TCP/IP 프로토콜로 네트워크 상에서 파일 시스템을 운영할 수 있도록 해주는 프로토콜
  • 데이터의 보안과 무결성을 보장
  • 인증된 네트워크 사용자가 공유된 네트워크 파일을 자신의 저장 장치에 있는 것처럼 사용하는 방법 제공

삼바

  • SMB(server message block, NW 파일 공유 프로토콜)를 사용하여 유닉스 계열 시스템과 윈도우 시스템 간 자원 공유
📍scp
네트워크상에서 안전하게 파일을 복사할 수 있도록 해주는 유틸리티, 데이터 전송과 사용자 인증을 위해 SSH 사용

FTP 보안 위협 및 대책

FTP 보안

비밀번호가 암호화되지 않아서 공격자가 가로채어 사용할 수 있음

보안을 위해 FTP 응용 계층과 TCP 계층 사이에 보안 소켓 계층(SSL)을 추가할 수 있음

SFTP(Secure File Transfer Protocol) 프로그램

SSH 프로토콜의 일부분인 유닉스 프로그램

SSH 기반 파일 전송 프로토콜로 22/tcp 포트 사용

TFTP 보안

보안에 대한 고려가 없음

TFTP 필요한 경우 secure mode로 운영

secure mode는 chroot 기능을 이용하여 지정한 디렉터리 상위로 접근하지 못하도록 제한함

Bounce attack

데이터 채널 생성 시 목적지를 확인하지 않는 FTP의 구조적 취약점을 이용한 공격

보통 익명 FTP 서버 이용하고 그 FTP를 경유하여 호스트를 스캔

PORT 명령을 조작하여 공격대상 네트워크를 스캔하고 FTP 서버가 공격자가 원하는 곳으로 데이터를 전송

 

Bounce attack 보안

  • FTP의 원래 규약을 어느정도 제한
  • FTP의 원래 규약은 인정하되 다른 서비스가 20번 포트 접속을 요청하면 거절하는 방법

Anonymous FTP 취약점

보안 절차를 거치지 않은 익명의 사용자에게 FTP 서버로의 접근을 허용

익명 사용자가 서버에 쓰기 권한이 있을 때 악성 코드 생성 가능

 

Anonymous FTP 보안대책

  • 반드시 사용해야하는 경우가 아니면 서비스를 제거
  • 익명 사용자의 루트 디렉터리, bin, etc, pub 디렉터리의 소유자와 퍼미션 관리(권한 축소)
  • 개인정보나 중요 정보는 보이지 않도록 마스킹 처리

FTP 접근제어 설정

ftpusers 파일을 통한 접근제어

  • ftpusers 파일은 접속을 제한할 계정정보를 담고 있는 설정파일
  • 중요 계정을 ftpusers 파일에 명시하여 접속을 제한

TCPwrapper를 통한 접근제어

  • TCPWrapper의 설정파일인 hosts.allow, hosts.deny 파일을 이용하여 IP 기반 접근제어 수행
  • FTP 데몬 프로그램 별로 TCPwrapper 연동 설정 필요

 

FTP 서비스 운영

proftpd

wu-ftp의 대안, 안정적이고 빠름, xinetd / standalone 형태로 작동 가능

 

ftp 접속 시 확인 설정

  • /etc/passwd, /etc/shadow에 사용자 계정이 있는지 검사
  • /etc/ftpusers에 사용자 id가 있으면 거부
  • /etc/shell에 등록되지 않은 셸을 사용하는 유저는 접근 거부

proftp 설정 파일 옵션

  • ServerType standalone (inetd) : 서버 타입 설정
  • RootLogin off : 루트 계정 로그인 허용 안함
  • User nobody : 데몬 동작 계정
  • Group nobody : 데몬 동작 그룹
  • ServerIdent On "Welcome to FTP" : 버전 정보 숨기기
  • MaxClients : 최대 접속 허용
  • TimeoutLogin : 아이디/암호로 인증이 완료될 때까지의 제한 시간
  • TimeoutIdleftp : 접속 후 아무런 데이터 전송이 없는 idle 상태
  • TimeoutSession : 일정 시간 후에는 무조건 접속 종료
  • Limit Command : 사용 가능한 command를 제한

vsftpd(Very Secure FTP Demon)

주요 기능

  • 가상 IP별 별도의 환경 설정 가능
  • 가상 사용자 설정
  • 전송 대역폭 지정
  • PAM 지원
  • xferlog 표준 로그 파일보다 상세한 자체 로그 파일 형식 지원
  • standalone 방식과 inetd(xinetd)를 통한 운영 모두 지원
  • IP별로 다른 환경 파일 지정 가능(tcp_wrappers와 함께 사용 시)