본문 바로가기
네트워크

[Network] FTP란? - 리눅스에서 바라본 FTP

by 공대냥이 2018. 11. 13.
반응형

FTP - 인터넷상의 컴퓨터들간에 파일을 교환하기 위한 표준 프로토콜

 

Real FTP          : ID / PASS 인증하는 사용자들   EX) user01 .....

Anonymous FTP  : 인증 없는 사용자                EX) Anonymous .....

 

 

FTP 종류

wu-ftpd : 예전 RedHat Linux에서 사용하던 기본 FTP 프로그램

vsftpd : 현재 많이 사용되고 있는 기본 FTP 프로그램

proftpd : 현재 많이 사용되고 있는 기본 FTP 프로그램

기타(gssftp, tftp, sftp...)

 

 

vsFTP (Very Secure FTP)

 

 프로그램: vsftpd

 

 데몬 & 포트 & 프로토콜: /usr/sbin/vsftpd, 20/21, TCP

 

 주 설정 파일: /etc/vsftpd/vsftpd.conf

 

 하위 설정 파일: /etc/vsftpd/{user_list, ftpusers}

 

 스크립트: /etc/init.d/vsftpd

 

 

파일종류

/etc/vsftpd/vsftpd.conf

- vsftpd 프로그램의 주 설정 파일

/etc/vsftpd/ftpusers

- vsftpd 서버에 접속할 수 없는 사용자 정의

/etc/vsftpd/user_list

- vsftpd 서버에 접속할 수 없는 사용자 정의

/var/ftp

- Anonymous FTP 사용자를 위한 디렉토리

 

■서버를 확인 할 때 사용하는 클라이언트 명령어

(DNS) nslookup, dif, host 명령어

(WEB) firefox, lynx(curl)

(FTP) gftp, ftp

 

 FTP 서버에 접속하는 클라이언트 프로그램

- (GUI) # gftp &

- (TUI) # ftp <IP> <PORT> 

 

ftp 서버 접속

# ftp XXX.XXX.XXX.XXX

 

업로드/다운로드 포인터 맞추기

ftp> help

ftp> help lcd

 

ftp> cd /tmp /* cd : change directory */

ftp> lcd /root /* lcd: local change directory */

 

편리한 기능 설정

ftp> bin /* 전송모드: binary, ascii */

ftp> hash /* 파일전송: Hash(#) 표시 */

ftp> prompt /* 대화형모드 ON/OFF */

 

 전송 모드(Transmission Mode)

File(ASCII) ----- ASCII ----->

File(BINARY)----- BINARY ---->

 

 해쉬 표시(Hash)

File(500M) --------4K(#)---->

 

 대화형 모드 on/off

File1, File2 ----------------> (y/n)?

File3, File4

 

업로드/다운로드

ftp> put linuxXXX.txt

ftp> get linuxXXX.txt

 

ftp> mput linux* (mput: Multiful put)

ftp> mget linux* (mget: Multiful get)

 

 확인/해제

ftp> ls (ls or dir)

ftp> !ls (>!CMD)

 

 

 

 

■ 서비스가 안되는 경우의 메세지 비교 ( 원인 : 데몬이 떠 있지 않아서 생기는 문제)

(ftp    ) # ftp localhost 21

 ftp: connect: Connection refused 

(ssh   ) # ssh -p 22 localhost

 ssh : connect to host localhost port 22: Connection refused 

(telnet ) #telnet localhost 23

  telnet : connect to address 127.0.0.1 : Connection refused 

  telnet : Unable to connect to remote host : Connection refused 

 

■ root 사용자가 서비스 접근할 수 있도록 설정

(telnet) /etc/securetty (pts/1 ~ pts/11)

(ssh  ) /etc/ssh/sshd_config (PermitRootLogin yes)

(ftp   ) /etc/vsftpd/{ftpusers, user_list} (root 라인 삭제)

 

 

■ ftp 서버에 접근 사용자 제한

접근 제어 (ACL (Access Control List))

- 호스트 or 네트워크 접근 제어(EX : 192.168.10.0/24, 192.168.10.100/32)

- 사용자 접근 제어 (EX : user01 .....)

 

(userlist_deny=YES) 두개의 파일 중 한개의 파일에라도 사용자가 정의되어 있으면 FTP 로그인 할 수 없다.

- /etc/vsftpd/ftpusers

- /etc/vsftpd/user_list

 

(userlist_deny=NO) user_list 파일에 존재하는 사용자만 FTP 로그인을 할 수 있다.

- /etc/vsftpd/ftpusers

- /etc/vsftpd/user_list 

 

※[참고] /etc/vsftpd/vsftpd.conf 설정 몇가지

 

chroot_local_user=YES 

 

FTP 사용자가 서버에 로그인 한 경우에 자신의 홈디렉토리를 /(root) 디렉토리 인것 처럼 인식이 되어 자신의 홈 디렉토리 아래에 있는 디렉토리만 이동이 가능한 것이다.

 

userlist_deny=NO

 

- FTP 사용자 접근 제한

 

listen_port=2121

 

- FTP 포트 변경

 

max_clients=3

 

- vsFTP 서버 접속할 수 있는 사용자 수 제한

 

max_per_ip=3    

 

- 한개의 아이피에대한 전송 제한
 

FTP 프로그램 패치/업데이트

 

 

vsftpd 프로그램 다운로드

 

vsftpd 프로그램에 대한 안전한(신뢰할 수 있는) 프로그램을 제공하는 사이트이다.

 

ftp.redhat.com

ftp.suse.com

ftp.debian.org

ftp.openbsd.org

ftp.freebsd.org

ftp.gnu.org

ftp.gnome.org

ftp.kde.org

ftp.kernel.org

rpmfind.net

ftp.linux.org.uk

ftp.gimp.org

ftp-stud.fht-esslingen.de

gd.tuwien.ac.at

ftp.sunet.se

ftp.ximian.com

ftp.engardelinux.org

ftp.sunsite.org.uk

ftp.isc.org

 

 

파일 업로드/다운로드 기록 확인

# tail -f /var/log/xferlog

 

Mon Apr 14 03:40:45 2014 1 127.0.0.1 2084 /test/file1 b _ o r root ftp 0 * c

 

Mon Apr 14 03:41:54 2014 1 127.0.0.1 2084 /root/file1 b _ i r root ftp 0 * c

 

[참고] /var/log/xferlog 파일에 대한 분석

 

Mon Apr 14 03:40:45 2014 1 127.0.0.1 2084 /test/file1 b _ o r root ftp 0 * c
Mon Apr 14 03:40:45 2014 전송 날짜 및 시간(2014 414일 월요일 0340 45)
1 전송 소요 시간(1)
127.0.0.1 원격호스트 주소(127.0.0.1)
2084 전송 파일 크기(2084 bytes)
/test/file1 전송 파일명(/test/file1)
b
 
전송 파일 종류(Transfer mode) : binary mode
a : ascii
b : binary
_
 
 
 
 
액션 플래그/FTP 서비스내 적용 내용: 액션 없음
_ : 아무 액션 없음
C : 압축 파일
U : 압축되지 않은 파일
T : tar로 묶여 있는 파일
o 전송 방향(Direction)
i : incoming(파일을 업로드)
o : outgoing(파일을 다운로드)
d : delete(파일을 서버에서 삭제)
r 사용자 파일 접근 방식
r : real(인증된 사용자)
a : anonymous(익명사용자)
root 로그인 사용자명(root)
ftp 서비스명
0 사용자 인증 방법(0 : 없음)
* 인증 사용자 ID(Authentication User ID) : 인증 방법에 의해 되돌려 지는 User ID
* 표시는 인증된 사용자 ID를 사용할 수 없다는 의미이다.
c 파일 전송 상태:
c : complete(전송완료)
i : incomplete(전송 실패)
 
[참고] /var/log/secure 파일에 대한 분석
 
Sep 12 16:04:53 linux202 vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=root rhost=localhost.localdomain user=root
Sep 12 16:04:53 로그 기록 시간
linux202 로그가 생성된 서버
vsftpd 로그를 생성한 주체
pam_unix ....... 로그 메세지
 

반응형