본문 바로가기

Study/정보보안기사

31. FTP 보안

1. 파일 관련 프로토콜

FTP(File Transfer Protocol)

: 하나의 호스트에서 다른 호스트로 파일을 복사하기 위해 TCP/IP에 의해 제공되는 표준 기능

- FTP는 호스트 간에 두 개의 연결을 설정 (C/S 응용들과 다름)

- 하나의 연결은 데이터 전송을 위하여 사용되고, 다른 하나는 명령과 응답 등의 제어정보를 위하여 사용됨

- 포트 21번: 제어 연결을 위해 사용 / 포트 20번: 데이터 연결을 위해 사용

- 파일을 받고 보내고 삭제하기 등을 위한 다양한 명령을 구비하고 있음

 

[FTP 로그인 순서와 인증] - 단순 사용자명/ 비밀번호 방식

- USER 명령: 사용자명을 전송하여 어떤 사용자가 접근을 시도하는지 확인

- PASS 명령: 사용자의 비밀번호를 전송

- 서버는 사용자 DB에서 사용자명과 비밀번호를 대조하여 접근을 시도하고 있는 사용자가 접근 권한이 있는지 확인

 

★[FTP 연결]★

(+) Active 모드 및 Passive 모드의 사용 여부는 FTP 서버가 아닌 클라이언트가 결정

① FTP 능동(Active) Mode(일반 연결)

: 클라이언트에서 서버측 21번 포트로 접속하여 제어채널을 생성, 데이터는 서버에서 클라이언트로 접속하여 데이터를 보내는 방식

+ 만약 클라이언트 PC에 방화벽이 설치되어 외부에서의 접속을 허용하지 않는다면 FTP 접속은 되지만(제어채널 연결O) 이후 데이터 채널 연결이 불가능하여 파일을 받을 수 없는 문제가 발생할 수 있음

- 서버가 21, 20번 포트 사용

- 서버에서는 두 개의 포트만 열면 서비스 가능

- 두 번째 connection은 서버에서 클라이언트로 접속

 

<동작방식>

1) FTP 클라이언트는 FTP 서버의 21번 포트로 연결 설정하여 제어(Control)채널을 생성

2) 사용자가 파일 목록을 보기 위해 ls 명령을 입력하면 FTP 클라이언트는 사용할 임시포트(1024번 이상 포트)를 결정하여 FTP 서버에게 알림(PORT 명령)

3) FTP 서버는 FTP 클라이언트가 알려준 포트로 연결을 설정하여 데이터(Data) 채널을 생성

4) 데이터 채널을 통해 데이터를 송신한 후 데이터 채널 연결을 종료

 

② FTP 수동(Passive) Mode(수동 연결)

: 클라이언트에서 서버측 21번 포트로 접속하여 제어(Control)채널을 생성하고, 데이터 채널도 클라이언트에서 서버로 접속하여 데이터를 보내는 방식

- 서버가 21, 1024번 이후 포트 사용

- 데이터 전송 위해 1024번 이후 포트 사용

- 서버에서 클라이언트로 접속해야 하는 모순 해결을 위해 고안된 방식

- 서버에서는 21번 포트와 1024번 이후의 모든 포트 오픈

- 보안을 위해 서버에서 passive 모드로 사용할 포트 제한

 

<동작방식>

1) FTP 클라이언트는 FTP 서버의 21번 포트로 연결 설정하여 제어채널 생성

2) 사용자가 파일 목록을 보기 위해 ls 명령을 입력하면 FTP 클라이언트는 수동모드로 연결하기 위해 PASV 명령을 전송하고 이 명령을 받은 FTP 서버는 사용할 임시포트를 결정하여 FTP 클라이언트에게 알려줌

3) FTP 클라이언트는 FTP 서버가 알려준 포트로 연결을 설정하여 데이터 채널을 생성

4) 데이터 채널을 통해 데이터를 송신한 후 데이터 채널 연결을 종료

 


익명 FTP

: 서버에 계정이 없는 사용자가 서버 자원에 한정된 접근을 할 수 있는 권한을 제공

- 기술지원, 고객지원, 파일배포 등을 하고자 하는 단체에서 사용하는 경우 ↑

- 사용자는 계정, 패스워드 필요 X

- 사용자 이름으로 anonymous란 단어를, 패스워드로 이메일주소를 사용 O → 서버가 누가 접속중인지 로그에 기록하기 위해 사용


TFTP(Trivial File Transfer Protocol)

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

- UDP 69번 포트 사용

- 소프트웨어 패키지를 읽기 전용 메모리나 디스크 없는 워크스테이션에 설치할 때 주로 쓰임

- TFTP는 FTP와 다르게 파일을 보내고 받는 기능만 지원

- 지원하는 데이터 방식은 ASCII와 바이너리 뿐

- 인증 기능 X

 

<데이터 전송>

1) 데이터 전송 단계는 연결 설정과 종료 사이에 수행됨

2) 파일은 데이터와 블록으로 나뉘고, 마지막 블록을 제외한 각 블록은 정확히 512바이트의 크기를 가짐 / 마지막 블록은 0~511 바이트의 크기

3) TFTP는 연속적인 데이터 블록으로 파일을 전송하기 위하여 흐름 제어와 오류 제어 메커니즘을 생성해야 함


NFS(Network File System)

: TCP/IP 프로토콜을 사용하여 네트워크상에서 파일시스템을 운영할 수 있도록 해주는 프로토콜

- 데이터의 보안, 무결성 보장 / 인증된 네트워크 사용자가 공유된 네트워크 파일을 마치 자신의 저장장치에 있는 것처럼 사용할 수 있는 방법 제공

- 여러명이 함께 사용하는 대용량 프로그램이나 데이터를 하나의 호스트에 넣어 두고 NFS로 연결하여 사용하면 디스크 공간 절약O


삼바(Samba)

: SMB(Server Message Block) 프로토콜을 사용하여 유닉스 계열 시스템과 윈도우 시스템 간에 파일 및 프린터 자원을 공유할 수 있는 기능 제공

 

*SMB: 도스나 윈도우에서 파일이나 디렉터리 및 주변 장치들을 공유하는데 사용되는 메시지 형식


2. FTP 보안 위협 및 대책★

 

[FTP 보안]

- FTP가 요구하는 비밀번호는 평문(암호화X)으로 되어 있어 공격자가 가로채어 사용 할 수 있음

- 데이터 전송 연결 또한 보호되지 않은 평문으로 데이터를 전송함

SSL-FTP: 보안을 위해 FTP응용 계층과 TCP 계층 사이에 보안 소켓 계층을 추가한 것

 

[SFTP(Secure File Transfer Protocol; 보안 파일 전송 프로토콜) 프로그램]

- SSH 기반의 파일 전송 프로토콜

- SSH에서 SSH 클라이언트와 SSH 서버사이에 보안 연결이 성립되었을 때, 다중방식을 사용할 수 있는 응용 프로그램 중 하나

- SFTP는 SSH응용 요소의 일부

- FTP처럼 동작할 수 있는 쌍방향 프로그램

- SSH 클라이언트와 SSH 서버 사이에서 파일을 전송하기 위해 인터페이스 명령 세트를 사용함

- TCP 22번 포트 사용

 

(+) FTPS(FTP over SSL/TLS): 전송계층의 SSL/TLS 기반의 파일 전송 프로토콜 (TCP 990 포트 사용)

 

*SSH(Secure Shell Protocol): 네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 인터넷과 같은 공개 네트워크를 통해 통신할 때 보안적으로 안전하게 통신하기 위해 사용하는 프로토콜

 

[TFTP 보안]

- TFTP는 보안에 대한 고려X + 사용자 확인이나 비밀번호X 

<보안성을 얻기 위한 방법>

- 중요하지 않은 파일에만 접근할 수 있도록 제한해야 함

  →TFTP 서버 근처에 있는 라우터에 보안을 구현하여 특정한 호스트만 서버에 접근할 수 있도록

- TFTP가 필요한 경우 secure mode로 운영

- secure mode: chroot기능을 이용하는 것으로 지정한 디렉터리를 최상위 디렉터리로 지정하여 지정한 디렉터리의 상위 디렉터리로 접근하지 못하도록 제한하는 방식

 

★[Bounce attack]★

: 제어 채널과 데이터 채널을 다르게 사용하고 데이터 채널을 생성할 때 목적지를 확인하지 않는 FTP 설계의 구조적 취약점을 이용하는 공격

- 능동 모드에서 PORT 명령을 실행할 때 IP와 포트를 요청한 클라이언트가 아닌 임의의 주소로 지정할 수 있는데 이러한 FTP 설계의 취약점을 이용하는 방식

- 주로 익명 FTP 서버를 이용

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

 

<Bounce Attack 보안>

① FTP의 원래 규약을 어느 정도 제한하는 방법

② FTP의 원래 규약은 인정하되 다른 서비스가 20번 port(데이터 연결 위해 사용하는 포트) 접속을 요청하면 거절하는 방법

 

[Anonymous FTP 취약점]

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

- 익명 FTP는 보안상 심각한 취약점을 가지고 있기 때문에 반드시 사용해야하는 경우가 아니라면 서비스를 제거

- 익명 사용자의 루트 디렉터리, bin, etc, pub 디렉터리의 소유자와 퍼미션을 관리

 

[FTP 접근 제어 설정]

① ftpusers 파일을 통한 접근 제어

- 중요 계정(root 등)에 대해서는 FTP 직접 접속을 제한해야 함

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

 

② TCPWrapper를 통한 접근 제어

- TCPWrapper의 설정파일인 hosts.allow, hosts.deny 파일을 이용하여 IP 기반의 접근제어를 수행

- FTP 데몬 프로그램별로 TCPWrapper 연동 설정 필요


3. FTP 서비스 운영

(+) 일반적으로 FTP 사이트(서버)는 FTP 서버 소프트웨어(데몬)을 사용하는 컴퓨터이다.UNIX 계열의 proftpd, wuftp / 레드햇 리눅스의 vsftpd / 윈도우 NT 계열의 ISS

 

① proftpd

- wu-ftpd의 대안으로 개발

- 매우 안정적이고 빠름

- xinetd / standalone 형태로 작동 가능

 

<ftp 접속 시 확인 설정>

- /etc/passwd, /etc/shadow에 사용자 계정이 있는지 검사

- /etc/ftpusers에 사용자 id가 있으면 거부

- /etc/shell에 등록되지 않은 셸을 사용하는 유저는 접근 거부 → RequireValidShell off

 

② vsftpd(Very Secure FTP Daemon)

- 가상 IP별 별도의 환경 설정 기능(설정파일의 listen_address = 이용)

- 가상 사용자 설정

- 전송 대역폭 지정

- PAM 지원

- xferlog 표준 로그 파일보다 상세한 자체 로그 파일 형식 지원

- Standalone 방식과 inetd(xinetd)를 통한 운영 모두 지원

- IP별로 다른 환경 파일 지정 기능(tcp_wrappers와 함께 사용할 때)

 

*inetd(internet service daemon)? 유닉스 시스템에서 돌아가는 슈퍼 서버 데몬으로 인터넷 서비스들을 제공

*Standalone 방식? 시스템에 독자적으로 프로세스가 구동되어 서비스를 제공하는 데몬

*daemon? 멀티태스킹 운영 체제에서 데몬은 사용자가 직접적으로 제어하지 않고 백그라운드에서 돌면서 여러 작업을 하는 프로그램(백그라운드에서 항시 실행되는 프로그램..)

 


출처: 2021정보보안기사&산업기사(알기사)

'Study > 정보보안기사' 카테고리의 다른 글

32. 이메일 보안  (0) 2022.02.23