1번부터 3번까지는 자동 마운트 계정 생성 예제 게시글과 동일한 방법으로 진행하므로 자세한 내용은 생략한다.

 

1) 디렉토리 구조 확인 (1 ~ 2 번 결과)

 

/export/sdb/home 하위 구조
~main 하위 구조
~ftp10 하위 구조
anon 디렉토리 하위 구조

2) /etc/passwd 계정 정보 확인 (1 ~ 2 번 결과)

 

3) /etc/group 그룹 정보 확인 (1 ~ 2 번 결과)

 

4) 접속 위치 확인 (1 ~ 2 번 결과)

 

main 계정 접속 위치
ftp10 계정 접속 위치
korea10 계정 접속 위치

5) vsftpd 방화벽 설정

 

firewall-cmd --permanent --add-port 21/tcp
firewall-cmd --permanent --add-port=50000-50005
firewall-cmd --reload
firewall-cmd --list-all

 

FTP 는 21 번 포트를 사용하며, passive 모드 데이터 전송은 50000 ~ 50005 번 포트를 사용할 예정이므로 위와 같이 해당 포트들에 대한 방화벽을 해제한다.

 

6) 3번 문제

 

chroot_local_user=YES -> 디렉토리 이동 제한, 홈 디렉토리 내에서만 작업
allow_writeable_chroot=YES -> 홈 디렉토리 쓰기 권한
chroot_list_enable=YES -> 디렉토리 이동 제한 예외리스트 활성화
chroot_list_file=/etc/vsftpd/chroot_list -> 디렉토리 이동 제한을 예외 처리할 목록 파일

 

ftp10 계정을 제외한 모든 계정들은 홈 디렉토리 상위로 접근이 제한되도록 다음과 같이 설정한다.

 

korea10 계정으로 접속하면, 홈 디렉토리가 최상위 디렉토리가 되어 상위 디렉토리 구조를 확인할 수 없다.

 

그러나 ftp10 계정으로 접속하면, 상위 디렉토리 구조까지 확인이 되는 것을 확인할 수 있다.

 

7) 4번 문제 

 

anonymous_enable=YES -> 익명 계정 접속 허용
anon_root=/export/sdc/home/anon -> 익명 계정 접속 위치

 

/etc/vsftpd/vsftpd.conf 파일의 익명 계정 관련 필드의 값을 다음과 같이 수정한다.

 

8) 5번 문제

 

userlist_enable=YES -> userlist 기능 활성화
userlist_deny= YES(접근거부) -> no_access 개념 
               NO (접근 허가) -> only_from 개념
userlist_file=/etc/vsftpd/sevas_list -> 적용할 파일

 

sevas_list 파일 목록에 작성된 계정들만 접속을 허용하며, 타 계정들은 접속이 불가능하도록 설정하였다. sevas 계정은 ID 단계에서는 접근되며, PW 단계에서 차단되어야 하므로 함께 작성한다.

 

/etc/vsftpd/ftpusers 파일에 작성된 계정들은 PW 입력 단계에서 접속이 불가능하므로, 다음과 같이 파일을 작성한다.

 

main 계정은 user_list 목록에 존재하지 않으므로, 접근이 거부되는 것을 확인할 수 있다. 

 

sevas 계정은 user_list 목록에 존재하므로 접근이 허용되지만, ftpusers 파일 목록에 존재하므로 PW 단계에서 거부되는 것을 확인할 수 있다.

 

9) 6번 문제

 

systemctl vsftpd enable
systemctl list-unit-files | grep vsftpd

 

vsftpd 데몬이 부팅 시 자동 실행되도록 다음과 같이 설정한다.

 

10) 7번 문제

 

pasv_enable=yes -> passive 모드 활성화
pasv_min_port=50000 
pasv_max_port=50005

 

FTP passive 모드를 활성화하며 50000 ~ 50005 포트를 통해 데이터 전송을 수행하도록 설정한다.

 

11) ftp10 계정 파일 업로드 및 다운로드

ftp10 계정을 passive 모드로 접속하여 파일 전송을 수행해보자.

 

 

서버에서 클라이언트로 파일을 다운로드할 때, 패킷을 캡쳐하였다. (RETR)

 

마찬가지로 클라이언트에서 서버로 파일을 업로드할 때, 패킷을 캡쳐하였다. (STOR)

 

둘 다, 50000 ~ 50005 범위의 포트를 통해 파일 전송을 수행한 것을 확인할 수 있다.

 

 

 

 

공부하면서 정리한 내용을 글로 작성하였습니다.

혹시나 잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다. :)

COMMENT