메가IT아카데미 국기과정/리눅스와 시스템보안
[2-4] FTP 서버
한님폐하
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 가 열려 있어야 한다.