강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

TFTP에 대한 보안

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.giftitle10.gif

1. Trivial-FTP(TFTP)란

TFTP는 관리의 편의성 때문에 만들어진 일종의 관리자용 유틸리티인데 해킹에 사용될 수 있는 가능성 때문에 다음의 사항을 유념하여 이로인한 해킹사고를 미연에 방지하도록 한다.

초기에 개발되었던 취지는 tftp가 제공되는 서버는 "부팅서버"로서 사용하기 위한 것이었습니다.

TFTP는 인증된 시스템에서 지정된 서버의 특정한 곳(디렉토리)으로 패스워드 없이 접속하여 파일을 가져가고 가져올 수 있도록 하는 일종의 관리툴이었습니다.

하지만 inetd.conf에서 설정되는 간단한 설정하나로 실로 엄청난 불행한 결과를 초래할 수 있습니다.  아래에서 자세히 설명됩니다.

일반적으로 tftp는 chroot기능을 이용하므로 지정된 디렉토리를 root디렉토리로 인식합니다. 따라서 지정된 디렉토리의 상위디렉토리는 절대로 이동할 수 없기 때문에 별 문제가 될 것은 없다고 할 수 있습니다.

 

2. TFTP의 가장큰 특징과 위험성

TFTP는 시스템에 계정이 없는 사람도 누구나 들어올 수 있다는 것이 가장큰 특징입니다. 즉, 패스워드의 입력없이 누구나 지정된 디렉토리로 들어로 수 있다는 것입니다.  

일반적으로는 inetd.conf내에서 설정된 tftp의 기능은 다음과 같지만 아래와 같이 주석처리를 해두시고 사용하지 않는 것이 가장 현명한 방법입니다.  

본인이 추천하는 것은 주석처리보다는 아예 이 행을 지워 버리는 것이 가장 현명한 것이 아닐까 합니다.

#tftp  dgram  udp  wait  root  /usr/sbin/tcpd  in.tftpd -s /tftpboot

위의 설정은 주석처리이지만 다음의 설정은 주석처리가 되어있지 않기 때문에 tftp로의 접근이 가능하게 됩니다.

tftp  dgram  udp  wait  root  /usr/sbin/tcpd  in.tftpd -s /tftpboot

일반적으로 이렇게 설정해 두면 지정한 디렉토리(/tftpboot)의 상위디렉토리로는 더 이상 접근이 될 수 없습니다.

하지만 여기에서 -s옵션이 없다면 어떻게 될까요?

이는 어떤디렉토리로든 접근이 가능하게됨을 뜻하므로 시스템의 모든 데이터가 노출된 것과 같은 것입니다.

이런 위험한 것을 꼭 사용해야하는가? 라는 의문이 드는 군요.

 

3. TFTP의 설정과 실제사용예

다음은 tftp로 host.jindong.net에 접속을 해서 파일을 가져오기 위해 첫 번째 host.jindong.net 서버의 /etc/inetd.conf에서 tftp요청을 받아 들일 수 있도록 하고, inetd를 다시 restart시켜준 것이다.

 

첫째, host.jindong.net의 /etc/inetd.conf에서 tftp서비스를 설정한다.

tftp    dgram   udp     wait    root    /usr/sbin/tcpd  in.tftpd

 

둘째, inetd를 restart 한다.

[root@host /etc]# ps -ef | grep inetd

root       361     1  0 Oct18 ?        00:00:00 inetd

[root@host /etc]# kill -HUP 361

 

셋째, host.jindong.net으로 tftp 접속한다. 그리고 하나의 파일을(aaaa)을 가져온 후에 빠져나와서 가져온 파일을 확인한다.

 

[webserver:/user1/sspark/imsi 26 ] tftp host.jindong.net

tftp> ?

Commands may be abbreviated.  Commands are:

connect         connect to remote tftp

mode            set file transfer mode

put             send file

get             receive file

quit            exit tftp

verbose         toggle verbose mode

hash            toggle hask marks

trace           toggle packet tracing

status          show current status

binary          set mode to octet

octet           set mode to octet

ascii           set mode to netascii

netascii        set mode to netascii

rexmt           set per-packet retransmission timeout

timeout         set total retransmission timeout

help            print help information

rate            display transfer rate information

?               print help information

tftp> get aaaa

tftp> get /etc/passwd

tftp>

tftp> quit

[webserver:/user1/sspark/imsi 27 ]

[webserver:/user1/sspark/imsi 27 ] ls -l

total 5

0 -rw-r--r--   1 root     webhost        0 12월 3일 19:42 *.txt

1 drwxr-xr-x   3 sspark   webhost      512 12월 3일 19:43 ./

2 drwxr-xr-x  32 sspark   webhost     2048 11월26일 14:58 ../

0 -rw-r--r--   1 root     webhost        0 12월 3일 19:43 aaaa

1 drwxr-xr-x   4 sspark   webhost      512 10월27일 13:21 public_html/

0 -rw-r--r--   1 sspark     webhost     223 12월 3일 19:42 passwd

1 -rw-r--r--   1 sspark   webhost      224 11월15일 17:41 user.sql

[webserver:/user1/sspark/imsi 28 ]

 

그런데 여기서 큰 보안상의 문제가 발생한다는 것을 알 수 있다. 즉, inetd.conf에 보면 s 옵션없이 그냥 실행이 되었는데 이렇게 하면 tftp 접속을 / (root) 디렉토리로 받아들이게 된다. 즉, 접속한 시스템의 모든 정보를 빠짐없이 다 가져올 수 있다는 결론이 나온다. 정말 어처구니 없는 일이라는 것을 알 수 있다. 이 얼마나 황당한 일인가?  관리자의 부주의가 이런 엄청난 것을 자초한다는 것을 알아야만 한다.

 

그렇다면 이를 해결하기 위해 어떤 조치가 필요할까?  당연히 -s 옵션을 이용하여  chroot() 기능을 이용하는 것이다. 즉 다음과 같이 설정하도록 한다.

 

tftp  dgram udp   wait   root   /usr/sbin/in.tftpd -s /home/sspark

 

주의 할 것은 /usr/sbin/in.tftpd 로 설정하고  -s 옵션을 반드시 줘야하며 뒤에는 chroot()의 홈디렉토리로 사용할 절대경로를 주면 보안상의 문제는 없어진다.

 

[webserver:/user1/sspark/imsi 32 ] tftp host.jindong.net

tftp>

tftp> get index.html

tftp>

tftp> quit

[webserver:/user1/sspark/imsi 33 ] ls -l

total 4

1 drwxr-xr-x   2 sspark   webhost      512 12월 3일 19:58 ./

2 drwxr-xr-x  32 sspark   webhost     2048 11월26일 14:58 ../

1 -rw-r--r--   1 root    webhost     513 12월 3일 20:02 index.html

 

즉, 가져온 index.html 파일은 /home/sspark에 있는 파일이다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,040 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  168 명