본문으로 바로가기

vsftpd 설치, 설정

category 서버&시스템/Linux 2012. 11. 16. 11:49

 

설치 및 설정

설치는 간단하게 yum으로 한다.

$ yum -y install vsftpd

 

접근 설정

구버전 리눅스인 경우 selinux 를 중지시킨다.

$ setenforce 0
$ vi /etc/sysconfig/selinux : disabled
...(생략)...
SELINUX=disabled # disabled 로 수정

 

iptables 를 사용 중인 경우 vsftp 가 사용하는 포트를 접근 허용 설정한다(기본 22).

$ vi /etc/sysconfig/iptables
...(생략)...
# FTP 포트 추가
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

 

 접속 계정의 홈 디렉토리 설정

vsftp는 기본적으로 user의 홈 디렉토리로 접속하게 된다.

/home/계정이름 외에 다른 디렉토리를 지정하고 싶다면 usermod로 수정하면 된다.

$ usermod -d 경로 계정명

 

기타 설정

/etc/vsftpd/vsftpd.conf 파일을 편집하여 익명 사용자 접속, chroot(홈 디렉토리의 상위 디렉토리로 이동 가능 여부) 허용 여부, 접근 디렉토리 권한 등을 설정 후 서비스 운영을 하면 된다.

 

 옵션  값    설명
 anonymous_enable  YES / NO  익명 사용자의 접속 허용 여부. 아무나 FTP 서버에 접속할 수 있는가?
 anon_upload_enable  YES / NO  익명 사용자의 파일 업로드 허용 여부.
 anon_mkdir_write_enale  YES / NO  익명 사용자의 폴더 생성 허용 여부.
 chown_uploads  YES / NO  익명 ftp서비스에서 익명 접속자가 업로드한 파일의 소유권 변경 여부.
 chown_username  user  익명 접속자가 업로드한 파일의 소유권 변경 후 그 소유권을 변경할 사용자 지정(기본값은 whoever이고 root 설정 시 보안상 위험).
 nopriv_user  user  익명 접속자가 접속하는데 사용할 user.
 deny_email_enable  YES / NO  익명 접속을 거부할 E-mail 주소.
 banned_email_file  path  익명 접속을 거부할 이메일의 파일 경로.
 local_enable  YES / NO  Local User의 FTP 접속 허용 여부.
 write_enable  YES / NO  사용자의 File Upload 허용 여부.
 local_umask  xxx  Local User의 umask값.
 dirmessage_enable  YES / NO  특정 폴더 접속 시 .message 파일의 메시지를 보여줄 것인지의 여부.
 xferlog_enable  YES / NO  파일 전송 내역의 로그 작성 여부.
 xferlog_file  path  파일 전송 내역의 로그파일 경로.
 xferlog_std_format  YES / NO  파일 전송 내역의 로그파일 작성 시 표준 xferlog 포멧의 사용 여부.
 connect_from_port_20  YES / NO  port방식의 전송의 허용여부. NO시 passive방식의 전송만 지원한다.
 idle_session_timeout  Number/sec  아무 입력이 없을시 접속을 종료할 시간( /sec ).
 data_connection_timeout  Number/sec  파일 전송 시 연결을 유지하는 시간( / sec ). 지정된 시간동안 파일전송이 완료되지 않으면 연결을 끊는다.
 async_abor_enable  YES / NO  async ABOR 명령 가능 여부.
 ascii_upload_enable  YES / NO  ASCII 파일 업로드 가능 여부.
 ascii_download_enable  YES / NO  ASCII 파일 다운로드 가능 여부.
 ftpd_banner  Message  ftp 접속시의 메세지. 비 활성화 시 버전정보를 출력하기 때문에 위험하다.
 chroot_local_user  YES / NO  모든 접속자의 홈 디렉토리 위로 이동 불가 여부.
 chroot_list_enable  YES / NO  명시된 사용자의 홈 디렉토리 위로 이동 불가 여부.
 chroot_list_file  Path  홈 디렉토리 위로 이동을 불가하게 할 사용자 리스트의 파일 경로. chroot_local_user와 chroot_list_enable 옵션에 모두 YES값 설정 시 지정된 파일에 명시된 사용자만이 홈 폴더 상위의 접근이 가능하다.
 ls_recurse_enable  YES / NO  접속자들의 ls 명렁어의 R 옵션 사용 불가 여부. 성능 향상을 위해 사용
 listen  YES / NO  FTP 서버의 standalone으로 운영 여부.
 pam_service_name  vsftpd  pam 사용자 인증 설정. 본 설정 적용 시 /etc/pam.d/vsftpd 파일 사용.
/etc/vsftpd/ftpusers에 기술된 사용자들은 차단되게 된다.
 userlist_enable  YES / NO  /etc/vsftpd/user_list에 기술된 사용자들의 접속 차단 여부.
 tcp_wrappers  YES / NO  tcp wrappers적용 여부. 적용 시 /etc/hosst.allow에 접속 허용자, /etc/hosts.deny에 접속 차단자를 기술

 

기타 TIP

 

ftp service PORT 변경 방법

/etc/vsftpd/vsftpd.conf 파일의 listen_port=21 값을 지정하고자 하는 포트로 변경한다(listen_port 옵션이 없다면 추가).

터미널 외의 환경에서 접속 불가능한 경우

cmd 또는 터미널에서 ftp 명령어를 통해 접속은 되지만, winscp 혹은 윈도우 탐색기 등에서 접속 시 문제가 있다면 iptables-config 파일의 IPTABLES_MODULES 옵션에 다음 값을 추가한다.

$ vi /etc/sysconfig/iptables-config
IPTABLES_MODULES="ip_conntrack_netbios_ns ip_conntrack_ftp ip_conntrack ip_nat_ftp"
$ service iptables restart