본문 바로가기

IT/정보보안

정보보안기사 | 애플리케이션 보안 | FTP 보안 | FTP 취약점과 바운스 공격

(1) UNIX 환경에서의 ftp 서버 설치 및 운영

  • anonftp 설치 및 운영
    • anonftp가 설치되어 있는 경우 anonymous FTP 제공 가능
  • wuftp 설치 및 운영
    • wuarchive-ftpd 파일을 이용해서 FTP 서버를 제공
    • wu는 Washington University
    • 예전에 많이 사용되었다.
    • 설치가 되었는지 안되었는지 확인하기 위해서 rpm -qa | grep wu-ftpd 를 실행하여 wu-ftpd 라는 명령어를 출력하는 rpm 패키지를 확인한다.
  • proftp 설치 및 운영
    • 최근에 많이 사용한다.
    • proftpd 파일을 이용해서 FTP 서버를 제공
    • wuftp 대안으로 나왔다.
    • 시스템 부하에 따라서 standalone 과 xinetd 중 하나를 골라서 운영한다.
    • anonymous FTP 사용 가능
    • 설치가 되었는지 안되었는지 확인하기 위해서 rpm -qa | grep proftpd 를 실행
    • 출력내용 중 /etc/pam.d/ftp 가 있는데 사용자 인증시 사용된다.
    • /etc/proftpd/conf/ftpusers 는 접속을 제한할 사용자를 등록한다.(등록되면 접속 불가)
    • /etc/proftpd/conf/proftpd.conf 는 설정파일
      • 주요 설정 옵셥
        • ServerType : standalone, xinetd
        • RootLoginoff : Root 로그인을 허가할 것인지
        • DefaultSever on : Server가 여러개 있을 때 기본 ftp 설정
        • Port : ftp가 사용할 포트
        • MaxInstances : 이 프로세스의 최대 자식 개수
        • MaxClient : 최대 접속 허용 수
        • Usernobody : FTP가 실행되는 사용자 명을 지정
        • Groupnobody : FTP가 실행되는 그룹 명을 지정
        • DefaultRoot : 대화상자가 ftp 로그인 할때 홈 디렉토리 외에 상위 디렉토리에 접근하는 것을 금지
        • TimeoutLogin : 아이디와 암호가 인증(Login)에 걸리는 시간 제한
        • TimeoutSession : 일정 시간이 지나면 접속을 종료함
        • LimitCommand : 사용 가능한 명령어 제한
        • TimeoutIdleFtp : 접속 후 데이터 전송이 없는 IDLE 상태가 되면 일정 시간 후 종료됨
        • TimesGMT off : Timeout을 안하겠다는 설정
    • /etc/proftpd/conf/inetd 는 슈퍼데몬(inetd)에 넣을 때 사용된다.

(2) FTP 공격 유형

FTP는 사용자 인증 정보에 대한 암호화가 이루어지지 않는다는 취약점과 FTP 프로토콜 자체의 특성을 이용한 취약점이 존재한다. FTP는 보안의 중요성이 대두되기 전에 나온 기술이기 때문에 보안 공격에 취약하고 데이터 전송 시에도 평문으로 보낸다.

  • 계정 로그인의 인증 취약점을 악용한 Brute force 공격
  • Sniffing 등에 의한 계정 권한 취득
  • 익명(Anonymous) FTP의 취약점
  • 인가된 FTP의 취약점
  • FTP 프로토콜 자체특성을 이용한 바운스 공격에 대한 취약점

 보안 소켓을 중간에 넣어서 사용하는 경우 SSL-FTP라고 한다.

 

(3) 바운스 공격(FTP bounce attack)

  • FTP 프로토콜의 구조의 허점을 이용한 공격 방법
  • FTP 클라이언트가 실행되는 호스트가 아닌 다른 호스트를 지정하더라도 서버는 충실하게 지정된 곳으로 정보를 보낸다.
  • FTP 프로토콜의 설계 상에서 발생한 문제로 처음부터 고의로 자료를 요청하는 곳과 자료를 받는 곳이 다른 곳일 수 있도록 FTP를 설계
  • 결과적으로 클라이언트는 FTP 서버를 거쳐 간접적으로 임의의 IP에 있는 임의의 포트에 접근할 수 있으며, 임의의 메시지까지 보낼 수 있다.
  • 대책 방법 : FTP의 원래 규정 제한
    • 다른 서비스들이 20번 포트 연결을 요청하면 거절하도록 한다.

(4) Anonymous FTP 취약점

  • 인증절차를 거치지 않고 FTP 서버에 접속할 수 있기 때문에 공격자가 쓰기 권한이 있는 경우 악성 코드를 심어둘 수 있다.
  • 대책 방법 : 
    • 반드시 사용해야하는 경우 아니면 익명 FTP 서비스 제거
    • 디렉토리에 대한 소유자와 사용자 퍼미션 관리
    • ftp 접근제어
      • ftpusers 파일
        • ftpusers 파일에 등록된 사용자는 접속할 수 없다.
        • ID와 Password가 평문으로 전달되기 때문에 외부 노출이 쉬워서 Root 로그인은 ftpuser 파일을 통해 막아둔다,(Root 계정을 갈취하더라도 접속이 안되기 때문에 피해를 최소화할 수 있다.)
      • TCP Wrapper
        • hosts.allow
        • hosts.deny

(5) 거짓 편지(fake mail)

  • FTP 바운스 공격을 이용하여 근원지(Source)를 알 수 없는 전자 메일(e-main)을 보낼 수 있다. e-mail의 헤더(header)는 메일이 누구로부터 왔는지 그리고 어떤 경로를 통해서 왔는지가 담겨 있다. 그래서 보내는 사람이 명시되어 있지 않아도 누가 보냈는지 알 수 있다.
  • FTP 바운스 공격을 이용하여 임의의 호스트, 임의의 포트에 임의의 메시지(거짓 편지)를 보낼 수 있다.
  • 대응책 : FTP 바운스 공격은 FTP의 설계상의 문제이므로 그 설계부터 바꿔야 한다.
    • FTP의 원래 규약을 보안 차원에서 어느 정도 제한한다.
      • wu-ftpd의 경우 버전 2.4 버전 부터 구현되어 있음
    • 포트의 값이 1024보다 작은 경우나 클라이언트가 실행되는 호스트와 자료를 받는 호스트가 다를 때는 PORT 명령을 받지 않도록 한다.