Information Security
30-2 FTP(File Transfer Protocol) 본문
FTP(File Transfer Protocol)
-대용량/대량 파일 전송에 특화
-FTP 프로토콜은 TCP 20번과 21번을 사용하여 서비스를 제공한다.
TCP 20번(Data port) 데이터 전송 시 사용
TCP 21번(Command port) 접속 및 제어를 위한 명령어 전달
FTP 동작 방식
-연결 방식에 따라 Active(능동) 모드와 Passive(수동) 모드가 있다.
-FTP 클라이언트가 FTP 서버에 접속할 때 2가지 모드 중 하나를 선택하여 접속 요청을 한다.
Active Mode
클라이언트는 임의의 포트를 사용하여 FTP 서버의 포트 21번으로 접속을 시도하여 성공한다.
-> 클라이언트는 FTP 서버에게 데이터 전송을 위한 클라이언트의 포트가 몇 번인지 알려준다.
-> FTP 서버는 클라이언트가 알려준 포트로 접속을 시도한다.
-> 클라이언트가 접속을 허락하면 포트 20번을 통해 데이터 전송이 이루어진다.
문제점
서버가 클라이언트에게 접속하는 방식으로 방화벽 혹은 ISP에서 외부에서의 접속을 허용하지 않는다면 정상적인 FTP 동작을 할 수 없다.
Passive Mode
클라이언트에서 임의의 포토를 이용하여 FTP 서버의 포트 21번으로 연결을 시도한다.
-> FTP 서버는 클라이언트에게 서버의 어느 포트를 사용해서 데이터를 전송할지 알려준다.
-> 클라이언트는 서버가 알려준 포트로 접속을 시도한다.
-> 서버는 클라이언트에게 정상 수신을 의미하는 메시지를 보낸다.
서버의 포트 20번은 사용되지 않는다.
단점
서비스 제공을 위하여 서버의 방화벽은 서버의 1024번 이후의 포트도 모두 개방해야 하는 정책을 사용해야 한다.
VSFTP (Very Secure FTP)
-GNU GPL 라이선스 관리하에 배포되고 있는 FTP 서버용 프로그램
-안정적이면서 빠른 속도로 서비스를 제공
-보안적인 측면에서도 뛰어난 성능
Server-A (FTP Server)
vsftpd 패키지 설치
-버전 확인
-버전 마다 설정 파일의 내용이 변경될 수 있으니 상세한 내용은 공식 홈페이지나 man 명령어 등을 통하여 확인한다.
vsftpd 데몬 시작 후 동작 확인
부팅 후 자동으로 데몬 활성화 설정
FTP 서버가 사용하는 포트 21번이 열려있는지 확인
0 0.0.0.0:21 서버 주소
0.0.0.0:* 클라이언트 주소
LISTEN 상태
2848/vsftpd PID/데몬명
Anonymous 사용자 설정
-anonymous 계정으로 접속되는 디렉터리는 /var/ftp이다.
-anonymous 계정은 ftp 전용 사용자로 기본적으로 내장되어 있다.
-암호 없이 ftp 접속이 가능하고 리눅스 내부에서는 ftp라는 계정으로 동작한다.
-/etc/passwd 파일에서 ftp 계정을 확인 -> 홈 디렉터리는 /var/ftp
-anonymous 계정으로 접속 했을 때 서버 쪽에서는 ftp라는 계정으로 동작하기 때문에
클라이언트가 가장 처음에 위치하는 디렉터리는 ftp 계정의 홈 디렉터리 /var/ftp이다.
vsftpd 기본 설정 파일 수정
anonymous_enable=YES anonymous 사용자 접속 허용 여부
anon_upload_enable=YES anonymous 사용자 업로드 허용 여부
anon_mkdir_write_enable=YES anonymous 디렉터리 생성 가능 여부
anon_umask=077 anonymous 사용자가 생성한 파일에 적용되는 UMASK
chown_uploads=YES anonymous 사용자가 업로드한 파일의 소유권 변경
chown_username=ftp anonymous 사용자의 소유권을 ftp 계정으로 지정
-위의 설정 중 기존에 없는 설정은 하단에 추가하고, 주석이 되어 있다면 해제한다.
데몬 재시작하여 변경 사항 적용
파일 업로드용 디렉터리 생성
소유권, 허가권 설정
다운로드 테스트용 파일 생성
/var/ftp/pub anonymous 사용자들이 사용하는 다운로드용 디렉터리
Client-Linux (FTP Client)
업로드 테스트용 파일 생성
ftp 클라이언트 패키지 설치
ftp 접속 방법
(1) #ftp [IP주소/도메인]
계정 : anonymous
암호 : enter (없음)
-익명 사용자 계정이므로 암호가 없음
(2) #ftp
ftp> open [IP주소/도메인]
ftp 사용 명령어
#cd, ls, pwd, mkdir, help..
#get [파일명] 파일 다운로드
pub 디렉터리로 이동 후 down_test 파일 다운로드
down_test 파일 확인
#get [파일명1] [파일명2] 이름 변경하여 다운로드
#put [파일명] 파일 업로드
upload 디렉터리로 이동 후 upload_test 파일 업로드
서버에서 upload_test 확인
#hash 다운로드/업로드 과정을 hash(#)로 출력
※ anon_umask=077 설정과 chown_username=ftp 설정 적용 확인
pub, upload 디렉터리에서 test_dir 디렉터리 생성
Server-A의 pub,upload 디렉터리에서 허가권 700(umask 077), 소유권 ftp로 적용되어 생성된 것 확인
'Linux' 카테고리의 다른 글
31-2 PAM을 이용한 로그인 제한 (0) | 2017.10.30 |
---|---|
31-1 FTP 서버 접속을 허용하기 위한 설정 (0) | 2017.10.29 |
30-1 VNC(Virtual Network Computing) (0) | 2017.10.27 |
29-2 SSH (0) | 2017.10.27 |
29-1 TELNET (+ NC) (0) | 2017.10.26 |