본문 바로가기
OS/Cent OS

FTP

by 티옌.liy 2017. 3. 4.

FTP ( File Transfer Protocol )


- TCP/IP 프로토콜 기반의 서버와 클라이언트간에 파일 전송시 사용되는 프로토콜.

- 대용량, 대량의 파일전송에 특화된 프로토콜이다.


보안을 강화한 FTP

- FTPS : 응용계층에서 동작하는 FTP와 전송계층 TCP 사이에 보안 소켓 계층(SSL)을 추가한 형태

- SFTP : 암호화된 SSH연결을 이용해 데이터 전송 시 암호화하여 보안을 강화한 프로토콜.


FTP는 서비스 포트가 2개다.

- TCP 20번 포트 : 데이터 전송시 사용

- TCP 21번 포트 : 접속 및 제어를 위한 명령어 전달



FTP 동작 방식


1. Active Mode

- 특이하게도, 서버가 클라이언트에게 접속하는 방식이다.


동작 순서

(1) 클라이언트가 임의의 포트를 사용해 FTP 서버의 21번 포트로 접속을 한다.

(2) 클라이엔트는 FTP 서버에게 데이터 전송을 위한 클라이언트의 포트번호를 서버에게 알려준다.

(3) FTP 서버는 클라이언트가 알려준 포트로 접속

(4) 클라이언트가 접속을 허락하면 FTP는 20번 포트로 데이터를 전송한다.


Active mode의 문제점

- 방화벽이나 ISP에서 외부에서의 접속을 허용하지 않으면 정상적으로 동작불가.


2. Passive Mode

- Active Mode의 단점을 개선한 버전이다. ( 근데 더 안좋은거 같다 )


동작 순서

(1) 클라이언트가 임의의 포트를 사용해 FTP 서버의 21번 포트로 접속을 한다.

(2) FTP 서버는 서버의 1024번이후 포트 중 랜덤으로  데이터를 전송할지 알려준다.

(3) FTP 서버는 클라이언트가 알려준 포트로 접속

(4) 서버는 클라이언트에게 정상 수신(ASK)메세지를 보낸다. 이때, 서버의 20번 포트는 사용하지 않는다. 


문제점

-서비스 제공을 위해 서버의 방화벽은 1024번 이후의 모든 포트를 개방해야한다.( 해커에게 무방비 )



vsftpd 설정.txt

vsftpd 특징.txt




VSFTP


- GNU GPL 라이선스 관리하에 배포되고 있는 FTP 서버용 프로그램. 안정적이면서 빠른속도로 서비스를 제공하며

  보안성도 뛰어나다.



[ 실습 준비 ]

▶ 서버에 VSFTP 설치


1. VSFTP 패키지 설치

# yum -y install vsftpd


2. 패키지 설치 및 버전 정보 확인

# rpm -qa | grep vsftpd


3. vsftp 서비스 데몬 시작

# service vsftpd start


4. 동작 확인후 부팅후 자동 시작되도록 설정

# service vsftpd status

# chkconfig vsftpd on


5. 서비스 적용 확인

# ps -ef | grep vsftpd    vsftp 프로세스 확인

# netstat -tulpn | grep 21    21번이 오픈되어 서비스 제공중인지 확인

# grep ftp /etc/services    



[ Anonymous(익명) 사용자 설정 ]


1. passwd 파일에서 ftp 계정 확인

# cat /etc/passwd | grep ftp


2. vsftp 서버의 기본 설정 파일 수정

# vim /etc/vsftpd/vsftpd.conf        vsftp 기본 설정 파일


아래 문구 추가 또는 수정

anonymous_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

chown_uploads=YES

chown_username=ftp


3. 익명 사용자의 기본 권한 지정

# anon_umask=077


4. 파일을 저장할 디렉토리 생성

- 파일 업로드를 허용할 경우 기본적으로 파일을 저장할 디렉토리를 생성해줘야 한다.

# mkdir /var/ftp/upload


5. 업로드 디렉토리의 소유권 설정

# chown root:ftp /var/ftp/upload


6. 파일 업로드 허가 권한 부여

# chmod 773 /var/ftp/upload


7. vsftp 데몬 재시작

# service vsftpd restart



[ Anonymous(익명) 사용자 설정 ]


1. vsftp 서버의 기본 설정 파일 수정

# vim /etc/vsftpd/vsftpd.conf


2. vsftp 데몬 재시작

# service vsftpd restart


[ 실습 ] 


Server1 ] # cp /boot/vm* /var/ftp/pub/down_test1         다운로드에 필요한 파일 복사

Cilent ] # cd /tmp

Cilent ] # cp /etc/passwd ./        업로드에 사용될 파일 복사



Client-Linux

# yum -y install ftp

# ftp ftp.tyen.com            DNS 서버에 접속

서버에서 익명 사용자를 설정해 주었기에, 닉네임과 패스워드는 마음대로 해도 된다.







이제 접속도 했으니 테스트를 시작해보자.


Cilent에서 FTP 서버에 있는 down-test1 파일을 get명령어를 이용해 다운해보기.




이번에는 FTP서버의 upload 디렉토리에 passwd파일을 업로드 해보기.


( Client의 화면 )



( FTP 서버의 화면 )



이번에는 mget 명령어를 이용해 여러개의 파일을 동시에 다운받아보자.


( Client의 화면 )





이번에는 FTP서버에 등록되어 있는 계정으로 FTP를 접속해보자


 ( FTP 서버에서 계정 생성 후 암호 설정 )



 (Client에서 접속  )


프로세스 확인 명령어인 fuser을 이용하여 사용자가 접속했는지 확인할 수 있다. 

# fuser -v ftp/tcp




'OS > Cent OS' 카테고리의 다른 글

NTP - 시간 동기화 프로토콜  (0) 2017.03.04
FTP 보안설정2 ( Passive Mode )  (0) 2017.03.04
FTP 보안 설정1 ( ftpusers, Pam, Chroot )  (0) 2017.03.04
DHCP  (0) 2017.02.19
이론+실습] DNS -2  (0) 2017.02.19
이론+실습] DNS -1  (0) 2017.02.18

댓글