한님폐하 2022. 9. 12. 09:33
  • FTP 연결 및 로그인때는 TCP 포트 번호 21을 사용한다.
  • FTP 서버 디렉토리 조회 및 파일 전송은 TCP 포트 번호 20을 사용한다.

 

1. FTP 패키지 / 클라이언트 설치와 활성화

yum -y install vsftpd
rpm -qa vsftpd
rpm -ql vsftpd | egrep -v "/doc|/man"
systemctl enable --now vsftpd.service
systemctl status vsftpd.service

yum -y install ftp
rpm -qa ftp
rpm -ql ftp

 

2. FTP 클라이언트 명령어

open	# FTP 서버 접속
user	# 로그인 실패시 다시 로그인할 때 사용
close	# 현재 접속된 계정을 로그아웃 할때
!	# FTP 프롬프트에서 로컬 리눅스 쉘 명령어를 사용할 때
get	# 파일 다운로드
mget	# 다수의 파일 다운로드
put	# 파일 업로드
mput	# 다수의 파일 업로드
prompt	# 비대화식/대화식 모드 변경
cd	# FTP 서버 디렉토리 이동
lcd	# 로컬 리눅스 시스템 디렉토리 이동
quit	# FTP 서버 접속 종료

 

3. vsftpd 서버 환경 설정

vi /etc/vsftpd/vsftpd.conf

 

3-1. 익명계정 로그인

  • 익명 계정으로 로그인하면 패스워드는 없다. 또한, 다른 디렉토리 이동은 불가능하다.
anonymous_enable=YES
  • 만약, 익명 계정으로 업로드가 필요한 경우에는 다음과 같은 설정을 실시한다. 
chmod 603 test
useradd -d /var/ftp/pub/test --system -s /sbin/nologin ftpupload
anonymous_enable=YES
anon_upload_enable=YES
chown_uploads=YES
chown_username=ftpupload

 

3-2. FTP 접속 배너 설정

banner_file=/etc/vsftpd/banner.txt

 

3-3. chroot 기능 설정

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES

 

3-4. root 계정 로그인

vi /etc/vsftpd/user_list
vi /etc/vsftpd/ftpusers

 

3-5. 특정 계정 접속 차단

userlist_deny=YES

 

[참고] 'user_list', 'ftpusers' 파일 처리 과정

/etc/vsftpd/user_list /etc/vsftpd/ftpusers   
o x 530 Permission denied. (Login Fail)
x o 530 Login incorrect. (Login Fail)
x x 230 Login successful. (Login Success)

 

3-6. FTP 연결 포트 변경

listen_port=20001

 

3-7. 동일한 IP 주소 접속 제한

max_clients=1
max_per_ip=1

 

4. FTP 접속확인

4-1. FTP 로그 확인

cat /var/log/xferlog

 

4-2. FTP 프로세스 확인

  • Server1에서 FTP 프로세스 정보를 확인하면 새로 실행된 'root' 계정이 'nobody' 계정으로 변경되고 'nobody' 계정의 자식 프로세스로 'user1' 계정 프로세스가 생성된 것을 확인할 수 있다.

 

[참고] FTP 디렉토리 변경하는 방법

  • 일반 계정의 홈 디렉토리를 변경한다.
  • 일반 계정의 FTP 디렉토리를 소프트 링크 파일로 연결한다.

 

[참고] FTP 서버가 있는 경우 방화벽에서 필요한 설정

  • Active 모드인 경우에는 외부에서 내부로오는 패켓 중에 목적지 포트가 TCP 21번과 TCP 20번 포트가 열려 있어야 한다.
  • Passive 모드인 경우에는 FTP 환경 설정 파일에 설정한 Passive Port 가 열려 있어야 한다.