CentOS 7 VSFTPD 서버 구축

2014.09.28 16:33

gooddew 조회:3566

(1) VSFTPD 설치


# yum -y install vsftpd


11.png


VSFTPD 데몬을 시작합니다.


# systemctl start vsftpd (데몬 가동)


부팅후  자동 실행 설정 합니다.


# systemctl enable vsftpd


정상 가동 확인


# systemctl status vsftpd


초록색 글짜 acvtive 라고 나오면 정상 가동 되는 상태입니다.


서버 기본 설정은 끝났습니다.



(2) 방화벽 포트 오픈하기


방화벽 포트를 열어야 클라이언트에서 접속이 됩니다.


21 번 포트를 열어 보겠습니다.


열기전에 현재 오픈된 포트를 확인해볼께요.


# iptables -nL 


12.png


현재는 22, 80 번 포트가 열려 있네요


21번 포트를 오픈하겠습니다.


13.png


* 21번 포트 오픈 설정


# firewall-cmd --permanent --zone=public --add-port=21/tcp

또는

# firewall-cmd --permanent --zone=public --add-service=ftp



* 방화벽 설정 적용


# systemctl restart firewalld

또는

# firewall-cmd --reload




포트 열린 상태를 확인해 보겠습니다.


# iptables -nL


14.png


포트 21 번이 추가로 열렸네요


이제 외부 클라이언트에서 접속이 가능합니다.


만약 열련 포트를 닫으려면


# firewall-cmd --permanent --zone=public --remove-port=21/tcp


참고로 포트를 오픈하고 닫을때 옵션에서


포트 숫자(--add-port=21/tcp)로 포트를 열었다면 닫을때도 포트숫자로 (--remove-port=21/tcp) 해야 닫어야 하고


포트 이름(--add-service=ftp)으로 해서 포트를 열었다면 닫을때고 포트 이름(--remove-service=ftp)으로 닫어야 됩니다.


만약 포트 숫자(--add-port=21/tcp)로 열고 포트 이름(--remove-service=ftp)으로 닫거나


포트 이름(--add-service=ftp)으로 열고 포트 숫자 (--remove-port=21/tcp)로 닫으면 닫혀지지 않습니다.





vsftpd 설정 파일을 알아보겠습니다.


설정파일은 /etc/vsftpd/vsftpd.conf 입니다. 



① 보안을 위해서 익명 접근을 막아야 한다면 anoymous_enable=YESNO로 변경하시면 됩니다.


② 간혹 포트 기본 포트가 아닌 다른 번호(8021)를 사용해야 된다면 listen_port=8021 이렇게 추가하면 됩니다. 

  

③ 사용자 홈 디렉토리 상위 경로로 이동 제한


/etc/vaftpd/vsftp.conf


ⓐ 모든 일반 사용자 상위폴더로 이동 제한 없음

chroot_local_user=NO


ⓑ 모든 일반 사용자 상위 폴더로 이동 제한

chroot_local_user=YES

# allow_writeable_chroot=YES

 

ⓒ chroot_list 상의 사용자만 상위 폴더로 이동 가능

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

# allow_writeable_chroot=YES
 


ⓓ chroot_list 상의 사용자만 상위 폴더로 이동 제한됨

chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

# allow_writeable_chroot=YES



500 OOPS: vsftpd: refusing to run with writable root inside chroot() 접속 오류시 

allow_writeable_chroot=YES  추가



/etc/vaftpd/vsftp.conf  변경시 vsftpd 데몬 재시작

/etc/vsftpd/chroot_list 변경시 바로 적요됨, vsftpd 데몬 재시작 안해도 적용됨



* 기타 옵션 설명


anonymous_enable=YES
익명 ftp 서비스를 사용하려면 위의 옵션을 YES로, 사용하지 않으려면 NO 또는 주석처리 하면된다.
익명 ftp 서비스를 사용하지 않으면 익명 관련 옵션은 무시된다.

local_enable=YES
로컬 계정사용자들이 접속할 수 있도록 설정하는 옵션이다.

write_enable=YES
접속자들이 쓰기가 가능하도록 설정하는 옵션이다.

local_umask=022
로컬 계정사용자들이 파일을 생성할 때 파일의 퍼미션을 정하는 옵션이다.
022로 설정하면 업로드되는 파일의 퍼미션은 644로 생성된다.

anon_upload_enable=YES
익명 ftp 접속자의 파일 업로드 권한을 설정하는 옵션이다.

anon_mkdir_write_enable=YES
익명 ftp 접속자의 디렉터리 생성 권한을 설정하는 옵션이다.

dirmessage_enable=YES
ftp 접속자가 다른 디렉터리로 이동할 때 알림메시지로 지정된 파일을 설정하고 보여주는 옵션이다.

xferlog_enable=YES
접속자들의 업로드, 다운로드 전송 로그를 로그파일로 저장할 것인지 설정하는 옵션이다.
YES로 설정시 /var/log/xferlog 파일에 로그가 저장된다.

connect_form_port_20=YES
standalone 모드로 운영할 때 데이터 전송포트를 사용할 경우 설정하는 옵션이다.

chown_uploads=YES
익명 ftp 서비스시 익명접속자가 업로드한 파일의 소유권을 자동으로 변경하도록 설정하는 옵션이다.

chown_username=whoever
익명 ftp 서비스시 익명접속자가 업로드한 파일의 소유권을 자동으로 변경한 후 그 소유권을 변경할 유저를 설정하는 옵션이다.

xferlog_file=/var/log/vsftpd.log
로그파일을 남길 것이라고 설정하였으면 여기서 파일명을 지정해야 한다.

xferlog_std_format=YES
로그파일의 포맷을 설정하는 옵션이다.

idle_session_timeout=600
접속자들이 어떤 작업도 하지 않은채 600초동안 유지되면 자동으로 ftp 연결을 종료하도록 설정하는 옵션이다.
시간설정은 초단위 이다. 주석처리하면 기본값으로 300초로 설정된다.

data_connection_timeout=120
파일 업로드, 다운로드시 연결을 유지하는 시간을 설정하는 옵션이다.
연결시간이 초과되면 업로드, 다운로드 명령이 취소된다. 주석처리하면 기본값 300초로 설정된다.

nopriv_user=ftpsecure
익명 ftp 서비스시 익명접속자가 접속할 떄 이곳에 설정한 유저로 접속하도록 하는 옵션이다.
기본값은 nobody이다. 익명접속자가 업로드 한 파일의 소유자는 이곳에서 설정된 유저명으로 설정된다.

async_abor_enable=YES
async ABOR 명령어를 사용할 수 있도록 할 것인지 설정하는 옵션이다. 기본값은 NO이다.

ascii_upload_enable=YES
ASCII파일 업로드를 가능하게 설정하는 옵션이다. 기본값은 NO이다.

ascii_download_enable_YES
ASCII파일 다운로드를 가능하게 설정하는 옵션이다. 기본값은 NO이다.

ftpd_banner=Welcome to blah FTP service.
vsftpd 서비스에 접속하는 접속자에게 보여줄 텍스트 환영메시지를 설정하는 옵션이다.

deny_email_enable=YES
익명 ftp서버에 익명 접속자가 접속할 때에는 패스워드 부분에 이메일주소를 입력하는데, 이때 접속을 거부할 이메일주소를 설정하는 옵션이다. YES로 설정하였으면 /etc/vsftpd/banned_emails에 접속을 거부할 이메일을 적어주면 된다. 기본값은 NO이다.

banned_email_file=/etc/vsftpd.banned_emails
deny_email_enable=YES로 설정했을 때 접속을 거부할 email 목록파일의 경로를 설정하는 옵션이다.

chroot_local_user=YES
사용자가 접속했을 때 자신의 홈디렉터리를 / 디렉터리로 인식하게 하여 자신의 홈디렉터리 아래로만 이동이 가능하도록 제한 하기 위한 설정옵션이다. chroot에서 제외할 유저리스트는 기본값으로 /etc/vsftpd/chroot_list 파일에 작성하면 된다. 기본값은 NO이다.

chroot_list_enable=YES
로컬유저들에 대한 chroot를 설정하였다면 chroot에서 제외할 유저들의 목록 저장 파일을 사용할 것인지 설정하는 옵션이다. 기본값은 NO이다.

chroot_list_file=/etc/vsftpd/chroot_list
chroot에서 제외할 유저들의 목록파일과 경로를 설정하는 옵션이다. /etc/vsftpd/chroot_list 파일에 한 줄 단위로 유저아이디를 입력하면 여기에 입력된 계정들은 ftp 접속시 시스템 전체 / 를 볼 수 있게 된다.

ls_recurse_enable=YES
접속자들이 ls -R 명령어를 사용하도록 할 것인지 설정하는 옵션이다. 기본값은 NO이다.
ls -R 명령어를 사용하면 시스템에 많은 부하가 걸리므로 설정하니 않도록하는 것이 좋다.

listen=YES
standalone모드로 서비스를 하고자 할 때 설정하는 옵션이다. 설정이 없으면 기본으로 xinetd모드로 서비스한다.

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES