2024. 2. 14. 13:43ㆍLinux/CentOS7
윈도우에서 설정했듯이
리눅스로도 ftp 서비스를 제공할 수 있다.
오늘은 ftp 서비스를 리눅스로
윈도우에 서비스 해보겠다
리눅스 ftp프로그램은 두종류가 있다
1. vsftpd
2. proftpd
오늘은 vsftpd로 서비스 해보겠다
yum 으로 vsftpd 를 설치해주자

설치가 완료 됐으면 ftp를 사용할 계정들도 만들어주자!

vi /etc/vsftpd/vsftpd.conf 로 설정 파일을 열어주자

많은 설정이 존재하는데
현재 알아야할 것들만 집고 넘어가자
12 anonymous_enable=YES 익명사용자 FTP 서비스 사용 가능 여부 ( NO로 변경)
16 local_enable=YES 리눅스 로컬 사용자 사용 여부 (좀 전에 만든 a, b 유저)
19 write_enable=YES FTP에서 쓰기권한 허용 여부
23 local_umask=022 로컬 umask 지정
29 #anon_upload_enable=YES 익명사용자 업로드 허용 여부 (#로 주석처리됨)
33 #anon_mkdir_write_enable=YES 익명사용자 디렉토리 생성이나 쓰기 권한 허용 여부 (#주석처리됨)
37 dirmessage_enable=YES 명령어 실행시 메세지 출력 여부 (성공, 실패)
40 xferlog_enable=YES xferlog는 FTP의 기본적인 로그파일,그것의 사용 여부(로그인 은 기록안됨,업다운만)
43 connect_from_port_20=YES Active 모드용 포트 활성화 여부
53 xferlog_file=/var/log/xferlog 로그파일 저장 경로(주석제거)
57 xferlog_std_format=YES 로그파일 기본포맷 사용여부
60 idle_session_timeout=120 접속 후 (120)초 만큼 활동이 없으면 접속차단 (120초 변경 및 주석제거)
63 data_connection_timeout=60 데이터를 전송중 (60)초가 지나면 접속차단 (60초 변경 및 주석제거)
87 ftpd_banner=Welcome to blah FTP service. FTP 접속시 대문 표시 여부 (주석제거 및 내용 Warning Non auth..로변경)
(87 ftpd_file=/ftp/file 옵션을 변경하여 배너 용 파일로 경로 지정도 가능함)
91 #deny_email_enable=YES : 익명 접속 시 패스워드에 입력하는 이메일 중 특정 이메일 거부 (주석처리됨)
93 #banned_email_file=/etc/vsftpd/banned_emails 91번 옵션이 YES일때 거부할 이메일 목록(주석처리됨)
101 #chroot_local_user=YES : 모든 로컬 사용자 접속시 /를 홈디렉토리로 인식 하여 하위로 이동만 가능(주석처리됨)
102 chroot_list_enable=YES : chroot에서 제외할 사용자 목록 사용 여부 (주석제거)
104 chroot_list_file=/etc/vsftpd/chroot_list : chroot_list_enable이 YES일 경우 해당 목록 파일 지정 (주석제거)
110 #ls_recurse_enable=YES : 접속자에게 ls -R(하위까지출력) 명령어 사용 허가/거부(부하가 많음, 주석처리됨)
마지막줄
* pam_service_name=vsftpd 사용자 PAM 인증 시 사용할 설정 파일 이름 지정 (vi /etc/pam.d/vsftpd)
* userlist_enable=YES 경로/etc/vsftpd/user_list에 지정된 사용자 접속 거부
* tcp_wrappers=YES 어플리케이션 앞 단에서 IP차단 여부 결정하는 역할
위 옵션중 빨간색으로 처리된 것만 변경 후 저장하자
그 다음
/etc/vsftpd/chroot_list 파일을 생성해
chroot_list에 a 사용자를 추가해주자(=사용자격리)

그리고 방화벽에서 20,21번 포트르 열어줄 것이다.


firewall-cmd --permanent --add-port=20/tcp
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --reload
위 명령어로 포트를 열어주고 리로드 해줬다..
firewall-cmd --list-all 명령어로 현재 개방된 포트 목록도 확인 가능하다
firewall-cmd --permanent --remove-port=(포트)/tcp,udp 로 삭제도 가능

그러면 이제 vsftp 서비스를 시작해주면 된다.
설정 중 오류가 있다면 여기서 에러가 날 것이다..

그럼 위같이 FTP 서비스 이용이 가능하다..
그런데 a는 사용자격리같은 홈디렉토리를 최상위로 인식하게 바꿨을 뿐인데
로그인이 안되고 있다...
(refusing to run with writable root inside chroot)
왜냐하면 chroot를 이용하면 추가해줘야 하는 문구가 있다

allow_writeable_chroot=YES
설정 파일에 위 문구를 추가해주고 vsftp 를 재시작 해주고
다시 윈도우에서 ftp를 접속해보자


접속이 이상없이 되고 있다!
또한 chroot 기능도 정상 작동한다!
지금까지 VSFTP를 액티브 모드로 서비스 해보았다
당연히 패시브 모드로도 서비스해보자
그리고 그외 기능들도 더 알아보자
FTP 삭제 후 재설치를 해주고
최상위에 /ftp를 만들어서
그 아래에 로그,배너 chroot_list등의 파일이 올 수 있도록 해
관리를 용이하게 한 뒤 패시브(pasv)모드로 동작시켜보자
일단 최상위에 FTP디렉토리를 만들어주자
mkdir /ftp
그리고 위 디렉토리 안에 banner 파일을 만들어주자
ftp 서비스 접속시 대문을 만들어 주는 것이다.
vi /ftp/banner

위처럼 경고문구를 작성하고 저장하자
또한 /ftp 아래 chroot 목록을
chlist로 작성한 뒤 이번엔 b 유저를 추가하자

이제 vsftp 설정을 변경해주자!

설정은 아까전과 같지만 몇가지가 바뀐다!
43 #connect_from_port_20=YES (주석처리 , PASV모드로 동작하니 20 port를 쓰지않음)
53 #xferlog_file=/var/log/xferlog > 주석제거 및 xferlog_file=/ftp/xferlog 로 경로를 변경
60 #idle_session_timeout=600 > 주석제거 및 120초로 변경
63 #data_connection_timeout=120 >주석제거 및 60초로 변경
87 #ftpd_banner=Welcome to blah FTP service. > 주석제거 및 banner_file=/ftp/banner로 경로 변경
102 #chroot_list_enable=YES > 주석제거
104 #chroot_list_file=/etc/vsftpd/chroot_list > 주석제거 및 chroot_list_file=/ftp/chlist로 경로 변경
마지막줄 추가
130 allow_writeable_chroot=YES
131 pasv_enable=YES 패시브 모드 활성화
132 pasv_min_port=65000 패시브 모드를 위한 포트 최소값
133 pasv_max_port=65100 패시브 모드를 위한 포트 최대값

그 이후 인증을 위한 21번 포트 개방후
방금 설정해준 65000~65100포트도 개방해주자
systemctl start vsftpd 명령어로 서비스 개시하자
그런 뒤에 윈도우에서 ftp 서비스로 접속해보자!!!

배너가 잘 출력되는 것을 볼 수 있다!

사용자 b에 대한 chroot도 잘 적용된다.

ss -nat 명령어로 개방된 포트를 확인해보면
65000~65100 사이의 포트를 이용하는 걸 알 수 있다!
이상 리눅스에서 vsftp에 대해서 알아보았다!
'Linux > CentOS7' 카테고리의 다른 글
| Linux 18 . httpd 서비스 (0) | 2024.02.19 |
|---|---|
| Linux 17 . DNS 서비스 (0) | 2024.02.15 |
| Linux 15 . dhcp 서비스 (1) | 2024.02.13 |
| Linux 14 . process 관리 (0) | 2024.02.13 |
| Linux 13 . Package관리 (0) | 2024.02.12 |