1. vsftpd 설치 전 확인 사항
① 설치전 nobody 유저가 생성되어 있는 확인
nobody 유저가 없다면 useradd 명령어를 이용하여 계정을 생성
② vsftpd 서버는 /usr/share/empty/ 빈 디렉토리가 ㅊㅁ필요하다.
디렉토리가 없다면 mkdir /usr/share/empty/ 명령어를 이용하여 생성
③ 익명 FTP (anonymous FTP)를 서비스하기 위해서는 ftp계정이 생성되어 있는 확인해야 하며
ftp계정의 홈디렉토리 /var/ftp 가 존재하는지 확인해야 한다. 계정과 디렉토리가 존재한다면
디렉토리의 권한을 수정하다록 한다.
[root@helpdesk var]# chown root.root /var/ftp
[root@helpdesk var]# chmod og-w /var/ftp
④ vsftpd 소스파일은 configure파일을 제공하지 않는다. make와 make install을 이용하여 바로 설치된다
2. vsftpd 설치
[root@helpdesk /]# yum install vsftpd
- 소스파일로 설치하려고 했지만 이것저것 확실히 아는 사항이 적어서 yum을 이용하여 설치하였다.
설치가 완료되면 vsftp.conf 설정파일을 /etc/vsftpd/vsftpd.conf에 저장된다.
[root@helpdesk vsftpd-2.0.7]# cp vsftpd.conf /etc
생성된 시작스크립트에 대해 실행권한을 부여하고 런레벨3번과 5번에서 부팅시 실행되도록 chkconfig를 이용하여 활성화한다.
[root@localhost /]# chkconfig --add vsftpd
[root@localhost /]# chkconfig --level 5 vsftpd on
[root@localhost /]# chkconfig --level 3 vsftpd on
[root@localhost /]# chkconfig --list|grep vsftpd
3. vsftpd 설정하기
설정파일경로 : /etc/vsftpd/vsftpd.conf
userlist_enable=YES (기본값 = NO)
명시된 사용자만 로그인을 허용할 때 사용하는 옵션입니다.
userlist_deny 옵션이 비활성화 된 상태에서만 작동합니다.
userlist_deny=YES (기본값 = YES)
명시된 사용자가 로그인을 할 수 없도록 제한하는 옵션 입니다.
userlist_enable 옵션이 비활성화 된 상태에서만 작동하며, 서로 반대되는 개념 입니다.
userlist_file=/etc/vsftpd.user_list (기본값 = /etc/vsftpd.user_list)
명시된 사용자를 읽어올 파일을 지정합니다.
tcp_wrappers=YES
tcp_wrappers 적용 여부를 설정하는 것으로 사용할 것인가(YES) 사용하지 않을 것인가(NO)를 설정합니다. YES로 설정하시면 허용할 호스트는 /etc/hosts.allow 허용하지 않을 호스트는 /etc/hosts.deny에 설정합니다.
connect_timeout=60 (기본값 = 60/초)
액티브 모드(Active Mode)를 사용하는 클라이언트의 접속 허용시간을 설정합니다. 클라이언트의 요청패킷(SYN Packet)을 받은뒤, 지정된 시간내에 접속이 안될경우 종료합니다.
accept_timeout=60 (기본값 = 60/초)
패시브 모드(Passive Mode)를 사용하는 클라이언트의 접속 허용시간을 설정합니다. 클라이언트의 요청패킷(SYN Packet)을 받은뒤, 지정된 시간내에 접속이 안될경우 종료합니다.
data_connection_timeout=300 (기본값 = 300/Secs)
데이터 전송시 적용되는 타임아웃값을 설정합니다. 만약 ftp 연결시 큰 파일을 업로드 또는 다운로드 할 때에 전송도중 접속이 끊기는 상황이 발생한다면 이 설정을 주석처리하거나 또는 이 값을 현재 설정값 보다 크게 잡아주시고 재시도 해보십시요.
idle_session_timeout=300 (기본값 = 300/Secs)
ftp 연결에서 idle 타임에 대한 타임아웃값을 설정합니다. 예를 들어 이 값이 600으로 설정되어 있다면 ftp 접속후에 600초(10분)동안 아무런 작업도 없이 놀고 있다면 강제 로그아웃(timeout)시켜 버립니다.
ftpd_banner=Welcome to blah FTP service.
ftp 서버로 접속할 때에 안내메시지등을 출력하려면 여기서 설정하시면 됩니다. 이 설정이 적용되면 ftp 접속을 하였을 때 "Welcome to blah FTP service"라는 안내문이 출력됩니다. 이 설정에서 한글을 사용할 수도 있습니다. 각 디렉토리별 안내문에 대한 설정은 다음 지시자의 설명을 보시기 바랍니다.
chroot_list_enable=YES (기본값 = NO)
명시된 사용자가 자신의 홈상위 디렉토리를 접근할 수 없도록 설정합니다.
이 옵션은 chroot_local_user 옵션이 비활성화되어 있어야 사용할 수 있습니다. 전체 적용이 아니라 일부 사용자만 제한할때 편하지만, 개별 적용은 보안상 좋지 않습니다.
chroot_list_file=/etc/vsftpd.chroot_list
전체 사용자가 아닌 특정 사용자들에 대하여 자신의 홈디렉토리를 루트디렉토리로 인식하도록 하는 기능으로서 이 기능은 사용자의 홈디렉토리의 상위디렉토리로 벗어나지 못하도록 하는 설정입니다.
먼저 "chroot_list_enable=YES" 로 설정하시고 /etc/vsftpd.chroot_list 파일에는 이 기능을 적용할 사용자계정명을 등록해 두시면 됩니다. 즉, /etc/vsftpd.chroot_list 파일에 등록된 사용자들에 한하여 chroot()기능이 적용되어 자기 자신의 홈디렉토리 상위 디렉토리의 이동이 제한됩니다. 이 파일에 등록할 때에는 한행에 한 사용자 계정씩만 등록하셔야 합니다. 만약 전체 사용자를 대상으로 chroot()기능을 적용하고자 한다면 바로 밑에서 설정하고 있는 "chroot_local_user=YES"로 설정하시기 바랍니다.
chroot_local_user=YES
특정 사용자가 아닌 전체 사용자를 대상으로 chroot()기능을 적용하여 자기 자신의 홈디렉토링 상위 디렉토리로 이동하지 못하도록 하려면 이 설정을 YES로 설정하십시요. 반드시 앞의 설정과 비교해 보시기 바랍니다.
만약 위 의 두 설정이 모두 설정되었다면
즉, "chroot_list_enable=YES"와 "chroot_local_user=YES" 설정이 모두 YES로 되어 있다면 /etc/vsftpd.chroot_list 에 등록된 사용자들만 chroot()적용을 받지 않게 됩니다. 즉, 이 두 설정이 모두 YES 로 되어 있다면 /etc/vsftpd.chroot_list 에 등록된 사용자들을 제외한 나머지 사용자들만 chroot()가 적용되어 상위 디렉토리로의 이동이 안된다는 의미입니다.
anonymous_enable=NO
익명(anonymous) 접속을 허용할 것인가(YES) 허용하지 않을 것인가(NO)를 결정하는 지시자입니다. 기본값은 YES로 되어있으며 익명계정 접속을 허용하지 않으려면 NO 로 설정하시기 바랍니다.
pam_service_name=vsftpd
사용자 계정의 접속을 허용할때 PAM인증으로 여러가지 설정을 할수 있다. 여기서는 pam인증을 위해 사용할 설정파일의 이름을 지정한다 vsftpd라는 이름의 pam인증 설정파일을 /etc/pam.d/디렉토리에 만들어 두겠다는 의미이다.
5. vsftpd 실행
FTP 서비스 시작 : /etc/rc.d/init.d/vsftpd start
FTP 서비스 종료 : /etc/rc.d/init.d/vsftpd stop
FTP 서비스 재시작 : /etc/rc.d/init.d/vsftpd restart
vftp는 기본적으로 익명ftp로 동작하며 유저 ftp를 구동하기 위해서는 conf파일을 수정해야 한다.