FTP서버구축 및 통신하기 ( netcat / ncat )

2017. 7. 21. 18:20NetworkHacking/Network





FTP 개념 참고 자료 http://itsaessak.tistory.com/157 



1> FTP 서버 구축

#yum -y install vsftpd    vsftpd데몬 설치

#yum list installed vsftpd    설치된 vsftpd데몬 확인


2> FTP 서버의 사용자는 리눅스 시스템의 계정과 동일하다

root는 FTP서버를 사용할 수 없다 ! 가상머신에서 일반 사용자계정을 하나 생성하자

#useradd ftp_user    사용자 계정 생성

#passwd ftp_user    사용자 비밀번호 설정


3> FTP 서비스 실행


실습환경 : 가상머신 ( 192.168.6.123 )


[root@localhost /]# service vsftpd start 

[root@localhost /]# netstat -ant

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address               Foreign Address             State      

tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      

tcp        0      0 ::1:25     


* 21번 포트가 열려있음 => FTP 제어 연결이 이루어지는 포트


[ 윈도우에서 FTP접속 ]


[ " d " 옵션적용 ]


FTP접속 시 " -d " 옵션을 통해서 디버깅 모드로 실행할 수 있습니다

입력하는 명령어가 실제로 FTP서버에서 동작하는 방식을 확인 할 수 있습니다


[ help 명령어 실행결과 ]


" help " 명령어를 통해서 FTP서버에서 사용하는 명령어의 종류를 확인할 수 있습니다


4> FTP서버와 통신하기

 

우선 실습에서 사용할 명령어 " ncat " 입니다

#yum -y install nmap ( nmap에 포함되어 있음 )

문자열 기반의 통신으로 각 사용자간에 또는 서버와 문자를 주고 받을 수 있게한다

#ncat -l -p [포트번호]    해당 포트번호로 통신하기 위해 서버를 열어 놓는다

#ncat [ IP주소 ] [ 포트번호 ]     해당 호스트의 포트로 접속한다


* FTP 또한 ncat과 같은 문자열 기반의 프로토콜이여서 실습에서 ncat을 통해 FTP의 동작과정을 살펴볼 수 있습니다


4-1> Active Mode

[ Active Mode ]


< PORT 명령어 사용법 >

PORT [ ip] [ port ]

PORT xxx,xxx,xxx,xxx,p1,p2

PORT 192,168,6,123,33,137

p1 = 8585 // 256    = 33

p2 8585 mod(%) 256    = 137



< Active Mode 동작순서 >

FTP서버로 접속한 뒤 이전에 생성해둔 계정으로 로그인합니다

PORT 명령어를 통해서 서버에게 데이터 연결에 사용할 포트번호를 알립니다

서버에서 해당 포트번호로 서버를 열어둡니다

LIST 명령어를 입력하면 해당 서버에서 명령어가 적용되어 파일 리스트들이 출력되어 지는것을 확인할 수 있습니다



4-2> Passive Mode


[ Passive Mode ]


< Passive Mode 동작순서 >

클라이언트는 서버로 PASV 명령어를 전송한다

서버에서 클라이언트로 1024번 이상의 포트번호를 지정해서 보내준다

ncat으로 해당 서버의 포트번호로 세션을 맺는다

서버로 LIST 명령어 전송 -> ncat으로 서버에 해당 명령어가 실행되어 진것을 확인할 수 있다