관리 메뉴

IT창고

Network FTP Server 통신 본문

보안/Network

Network FTP Server 통신

방구석여포 2018. 4. 22. 16:31

FTP Server에 대해 알아보겠습니다. FTP 는 처음부터 보안을 염두해두고 만든게 아니기 때문에 취약점이 존재합니다. 

먼저 FTP 서버를 구축하여 보겠습니다. 환경은 CentOS 6.x 입니다.


FTP 서버를 구축하기 위하여 yum -y install vsftpd 로 패키지를 다운로드 받습니다.

다운받고 service vsftpd start로 데몬을 시작하면 FTP서버가 시작됩니다.


FTP서버는 root계정으로는 접속할수없기 때문에 일반사용자 계정을 따로 만들어서 사용해야만 합니다.

ex) useradd ftp_test , passwd ftp_test

저는 테스트를 위하여 root계정으로 접속해보도록 하겠습니다. root계정으로 접속하는 방법은 /etc/vsftpd/vsftpd.conf파일 설정을 바꿔주면 됩니다. 15번째 줄에 있는 local_enable=YES(로컬계정 활성화)를 활성화 시켜주고 맨 마지막에 userlist_deny=NO(user_list허용목록으로사용) 를 추가하면 됩니다.

이제 /etc/vsftpd/ftpusers 파일에 가서 root를 지워주거나 #으로 주석처리해주면 root계정으로도 FTP서버에 접속이 가능해집니다.


FTP서버 리눅스에서 확인해보면 21번 포트가 개방된걸 확인할수있습니다.


클라이언트로 통신을 해보겠습니다. 만약을 위하여 iptables와 SELINUX를 꺼두도록 하겠습니다. 

ex) service iptables stop, setenforce 0

리눅스에서 클라이언트 통신을 한다면 yum -y install ftp로 클라이언트 패키지를 다운로드 받아야만 합니다.

리눅스에서 ftp클라이언트로 접속해보았습니다. get 명령어를 통하여 FTP서버에 있는 파일을 다운로드받아 왔습니다.


업로드나 다운로드를 하게 되면 FTP서버에서는 로그기록이 남습니다. /var/log/xferlog를 살펴보면 해당 로그 기록을 확인할수있습니다.


------------------로그 확인---------------------

Fri Apr 23 01:57:44 2018 1 10.10.10.20 16 /root/ftp_server_test b _ o r root ftp 0 * c


1. 날짜와 시간 Fri Apr 20 02:44:02 2018

2. 파일전송에 소요된 시간  1

3. 서버에 접속한 호스트 정보 10.10.10.10 

4. 파일크기    9

5. 가져간 파일의 경로와파일명 /root/ftp_test

6.         b

7.         _

8. 전송된 파일의 상태  o (outgoing)  i (incoming)

9. 사용자인증방식 r (real) 로컬계정 a (anonymous)익명계정

10. 계정명 root    

11. 서비스명 ftp

12.  0

13. 인증 성공 여부   *   or  [공백]

14. 전송 성공 여부     c  전송완료    i  전송실패

-------------------------------------------------


ftp클라이언트로 접속할때 -d 옵션을 사용하면 디버깅 모드로 작동을 합니다. ftp클라이언트에 어떤 명령어가 있는지는 ftp클라이언트에 접속후 help를 입력하면 사용할수있는 명령어들이 나옵니다.


와이어샤크로 FTP 서버와 클라이언트가 했던 통신내용도 확인해볼수있습니다.

디버깅 모드로 확인한 리턴코드와 비슷하게 나오는걸 확인할수있습니다.


Tip. 텔넷 클라이언트으로 FTP접속

FTP클라이언트가 아닌 텔넷으로도 FTP서버에 접속해볼수가 있습니다.

와이어샤크에서 확인한 패킷대로 입력해주면 리턴코드가 telnet클라이언트에게로 돌아옵니다. 


FTP 패킷을 확인해보면 ip 10.10.10.10 옆에 56, 203이라는 숫자가 있습니다. 이 숫자는 포트번호인데 주소체계가 8bit이므로 ip쪽은 제대로 나오지만 포트번호는 2개로 나눠야만 합니다.


FTP의 능동모드(Active Mode)에 대해 알아보겠습니다.

FTP가 Active Mode로 움직일때는 서버의 포트는 20번으로 정해져있으며 사용자는 데이터를 전달받을때 새로운 포트를 열고 서버에게 알려줍니다.

PORT [ip],p1,p2 

p1은 port/256 , p2는 port %256


위의 사진의 56, 203은 56= 0011 1000 , 203= 1100 1011 -> 00111000 11001011 = 14539가 됩니다. 즉 14539포트입니다.


FTP의 수동모드(Passive Mode)는 서버의 데이터포트가 정해져있지않습니다. 1024~65535 사이에 무작위 포트를 사용하게 됩니다.


'보안 > Network' 카테고리의 다른 글

Network HTTP  (0) 2018.04.25
Network FTP 패스워드 크랙  (0) 2018.04.23
Network DNS spoofing  (0) 2018.04.18
Network DNS 도메인 위임 과정  (0) 2018.04.17
Network DNS 서버와 DNS 헤더  (0) 2018.04.16
Comments