[정보보안기사] 애플리케이션 보안 - 인터넷 응용 보안 (1) FTP 보안
본문 바로가기

[정보보안기사] 애플리케이션 보안 - 인터넷 응용 보안 (1) FTP 보안

액트 2019. 6. 24.

인터넷 응용 보안


- 목차 -

1. 인터넷 응용 보안
    (1) FTP 보안
        ① FTP 개념
        ② FTP 서비스 운영
        ③ FTP 공격 유형
        ④ FTP 보안 대책


1. 인터넷 응용 보안

(1) FTP(File Transfer Protocol) 보안

        ① 개념 

            ▶ TCP/IP 네트워크상에서 한 호스트에서 다른 호스트로 데이터 파일을 전송하는 데 사용하는 표준 프로토콜

            ▶ Transfer Layer 프로토콜로로 TCP를 사용하며, 서버-클라이언트 모델을 구성하고 있음

            ▶ FTP 세션은 암호화되지 않기에, 사생활 보호 또는 개인정보 보호 기능을 제공하지 않음

            ▶ 인증정보 또한 평문으로 전달되어 스니핑 당하면 인증정보가 유출될 수 있음

            ※ 스니핑이란?

               일명 패킷 가로채기 공격, 네트워크 상에 떠돌아다니는 패킷이나 데이터 등을 홈쳐보는 것을 뜻함.

 

        ② 서비스 운영 

            ▶ Unix/Linux에서 사용자 별로 FTP Server에 접근 제어를 하려면 /etc/ftpusers에 등록함                         

             Windows에서는 FTP Server를 만들려면 IIS가 설치되어야 함

             FTP는 제어를 하기 위한 연결과 데이터 전송을 위한 연결을 따로 사용해서 효율적이고 신뢰성 있는 데이터 전송을 제공한다.

                ▷ PI(Protocol Interpreter) : 제어 명령 송/수신하는 역할 (port: 21)

                 DTP(Data Transmission Process) : 데이터를 송/수신하는 역할 (port: 20)

 

            Ⅰ. Active Mode

                클라이언트가 원하는 포트 사용

                   1) 클라이언트가 서버의 Command Port(21번)로 데이터 전송을 위해 사용할 포트를 알림

                   2) 서버가 Command Port(21번)에서 클라이언트로 ACK 신호를 보냄

                   3) 서버가 Data Port(20번)에서 클라이언트가 알려준 포트로 연결을 시도

                  → 서버가 클라이언트로 연결을 시도한다는 문제점이 발생(방화벽 차단될 수 있음) => Passive Mode 사용

                   4) 클라이언트가 서버의 Data Port(20번)로 ACK 신호를 보냄

                      ※ 클라이언트는 1024 이상의 임의의 포트를 사용

http://learnwithrahul.blogspot.kr/

 

            Ⅱ. Passive Mode

                방화벽과 같은 보안 설루션 때문에 방화벽을 통해 FTP를 사용해야 하는 문제점을 해결

                Active Mode와 달리, 서버가 클라이언트로 자신이 데이터를 보내고자 하는 포트를 정하는 방식

                  1) 클라이언트가 서버의 Command Port(21번)로 Passive Mode로 접속하겠다고 알림

                  2) 서버가 Command Port(21번)에서 클라이언트에게 데이터 전송을 위해 사용할 포트를 알림

                  3) 클라이언트가 서버가 알려준 포트로 연결을 시도

                  4) 서버가 클라이언트로 ACK신호를 보냄

                     ※ 클라이언트는 1024 이상의 임의의 포트를 사용

                     ※ 서버가 1024 이상의 포트를 열어둬야 된다는 점에서 보안적인 문제점이 있을 수 있지

http://learnwithrahul.blogspot.kr/

 

            Ⅲ. Anonymous FTP

                사용자들이 할당받은 ID 없이도 FTP 서버에 접근하고 서비스를 이용할 수 있게 해 준다

                FTP 서버에 접속 후, 사용자 아이디에는 Anonymous, 패스워드에는 아무 내용 넣어도 상관없다

 

            Ⅳ. TFTP(Trivial File Transfer Protocol)

                FTP보다 간단하고 최소한의 기능만 제공해주는 프로토콜

                FTP는 TCP를 이용하는 반면, TFTP는 UDP를 사용함

                디렉터리나 파일의 목록을 보는 명령이 없기에, 파일명을 모르는 사용자는 해당 파일 다운로드하지 못함

               ▶ 인증절차가 없기에, 설정이 잘못되어 있으면 누구나 파일에 접근이 가능

 

        ③ 공격 유형 

            Ⅰ. Bounce Attack

               ▶ FTP 서버가 데이터를 전송할 때, 목적지를 검사하지 않는 설계상의 문제점을 이용한 공격

                공격자가 FTP 서버를 거쳐 간접적으로 임의의 호스트에 접근하거나 존재 여부를 파악 가능

                포트 스캐닝에 쓰일 수 있다

                대응 방법

                   1) Anonymous FTP는 사용하지 않는다

                   2) FTP 서버에 접속 가능한 IP주소를 필터링 / 익명 사용자는 파일 업로드 못하도록 제한한다

 

            Ⅱ. Anonymous FTP Attack

                Anonymous 계정 허용하는 게 위험행위

               ▶ 대응 방법

                   1) Anonymous 계정을 위한 디렉터리 따로 만들고 / 소유자는 관리자 / 읽기 권한만 준다

                   2) 로그 파일 정기적으로 확인한다

 

            . TFTP Attack

               Brute Force Attack이나 Dictionary Attack 등으로 파일명 알아내 다운로드하는 공격

               ▶ 대응 방법

                   1) TFTP 데몬을 Secure Mode로 작동하게 설정한다

                   2) TFTP 데몬을 필요 없으면 제거한다

 

        ④ 보안대책

            Ⅰ. Root 접속 차단

               #vi /etc/vsftpd/user_list 에서 # root 주석(#) 제거

                   #vi /etc/vsftpd/ftpusers 에서 # root 주석(#) 제거 

            Ⅱ. Anonymous FTP 서버의 경우, 디렉터리 소유자와 퍼미션 관리, 로그 확인

 

            Ⅲ. 불필요한 TFTP는 제거

 

            Ⅳ. FTP 자체의 취약점은 없는지 주기적으로 업데이트

 

            Ⅴ. Passive 모드 사용 설정

               ▶ #vi /etc/vsftpd/vsftpd.conf 에서 pasv_enable=YES 설정

 

            Ⅵ. 최대, 최소 포트 번호 설정

               ▶ #vi /etc/vsftpd/vsftpd.conf 에서 pasv_max_port = 61000, pasv_min_port=61000 설정

 

            Ⅶ. 로그인 제한 설정, vsftp 인증 절차

               ▶ /etc/pam.d/vsftpd 파일 편집

                  - 서비스 접속 및 각종 인증에 사용되는 모듈

               ▶ Vsftp 인증 절차

                  1) 로그인 - 클라이언트가 ftp 서버에 서비스 요청

                  2) vsftp 서비스가 pam에게 인증을 요청

                     /etc/vsftpd/vsftpd.conf 에서 pam_service_name=vsftpd 옵션 확인 후 pam 설정 확인

                  3) pam 설정 파일 확인

                     /etc/pam.d/vsftpd 파일의 모듈 및 설정 내용 확인

                  4) 인증 결과를 서버에게 전달

                     sense=deny (등록된 사용자는 접근 금지), onerr=secceed (해당 파일이 없거나 파일명이 다르면 접속을 허용)

                  5) ftp 서버는 pam인증 결과로 승인/거부 진행

 

            Ⅷ. Chroot 

               ▶ 보안을 위해 원격 서비스로 접속시, 접속 계정의 홈 디렉토리의 상위로 이동이 불가능하게 하는 명령어

               ▶ 리스트에 있는 사람만 홈 디렉토리 밖으로도 이동 가능하다

               ▶ 설정 방법 (#vi /etc/vsftpd/vsftpd.conf)

                   1) chroot_local_user=YES       (로컬 유저에게 chroot 적용)

                   2) chroot_list_enable=YES       (chroot 예외 설정을 위해 활성화)

                   3) chroot_list_file=/etc/vsftpd/list      (list가 있는 파일 경로를 디폴터)

 

            Ⅸ. TCP_WRAPPER - Xinetd 데몬에 의해 수행되는 서비스 접근 제어 프로그램

               ▶ FTP 프로토콜 접속 제한

               ▶ vim /etc/hosts.allow 가 vim /etc/hosts.deny 보다 우선순위가 높다. 즉, allow가 먼저 적용된다.

               ▶ 설정 방법 (#vi /etc/vsftpd/vsftpd.conf)

                   1) /etc/vsftpd/vsftpd.conf 에  tcp_wrappers=YES 문구를 추가한다.

                   2) 특정IP를 /etc/hosts.allow 에 허용하고 /etc/hosts.deny에 거부하면 접속 된다.

                       그러므로 /etc/hosts.allow 에 등록한다.

 

            Ⅹ. 연결 제한 옵션 (/etc/vsftpd/vsftpd.conf)

                ▶ max_clients=50 : 동시에 접속 가능한 사용자 수

                ▶ max_per_ip=10 : 한개의 ip 주소에서 연결 가능한 수

                ▶ anon_max_rate=10000 : 익명사용자들이 초당 전송 가능한 최대 데이터 속도(Byte)   0은 속도제한없음.

                ▶ local_max_rate=10000 : 계정사용자들이 초당 전송 가능한 최대 데이터 속도(Byte)   0은 속도제한없음.

                ▶ max_login_fail=3 : 설정된 횟수만큼 로그인에 실패하면 세션이 종료된다.

                ▶ idle_session_timeout=300 : 초 단위로, 명령이 없으면 FTP와 연결이 종료된다.

 


[ 출처 ]

https://kit2013.tistory.com/211

https://tyen.tistory.com/65

을 참고하여 보완하고 수정한 글입니다.

 

 

 

댓글