데비안에서 VS-?FTPd 설치 #
1. 작고, 간단한 FTP 데몬입니다. 아래 패키지를 설치하면 됩니다.
apt-get install vsftpd
2. /etc/inetd.conf 파일을 열어 아래 내용의 주석을 제거하여 vsftp 를 등록합니다.
ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/vsftpd
3. ftp 라는 유저를 만듭니다. (anonymous 를 허용하지 않는 경우)
!!! 주의사항 !!!
예전 ?ProFTPd 설치시,
debconf 설정에서 익명접속 허용을 설정하셨던 분들은
ftp 유저가 이미 존재하므로 이 단계를 건너뛰셔도 무관합니다.
adduser --system --no-create-home ftp
4. anonymous의 접속을 허용하려면 ftp 홈디렉토리를 만들고, ftp 디렉토리 소유를 다른계정(root)으로 만듭니다.
(이것은 아래 관련링크를 참조하시길 바랍니다.)
adduser ftp
chown root ftp
!!! 주의사항 !!!
일반적으로 익명(anonymous) 접속시,
ftp 와 같은 Non-Privileged 유저로 앨리어스되는 건 다들 알고 계실 겁니다.
예전 ProFTPd 설치시 생성됐던 ftp 유저의 홈디렉토리(/home/ftp) 소유권은 기본적으로
ftp.nogroup 으로 셋팅되어져 있습니다. 그러나 VS-FTPd의 경우엔 ftp 유저의 홈디렉토리 소유권이
반드시 root 로 셋팅되어 있어야 합니다. 따라서 예전 ProFTPd 를 통해 생성된 ftp 유저의 홈디렉토리를
VS-FTPd 에서도 그대로 이용하실 경우라면 반드시 ftp 유저의 홈디렉토리권한을 root 로 셋팅하는걸
잊지 마시기 바랍니다.
5. /etc/vsftpd.conf 를 열어 필요한 옵션의 주석을 제거합니다.
anonymous_enable=YES <- anonymous 가능
local_enable=YES <- 일반 user의 접근 가능
write_enable=YES <- 쓰기 가능
local_umask=022 <- 업로드시 group 과 other 의 읽기 가능
anon_upload_enable=YES <- anonymous 업로드 가능 (관련링크 참조)
ascii_upload_enable=YES <- ASCII 파일 업로드 가능
ascii_download_enable=YES <- ASCII 파일 다운로드 가능
chroot_local_user=YES <- FTP 로그인시, 최상단 디렉토리를 해당유저의 홈계정 안으로 제한
chroot_list_enable=YES <- 유저명이 기입된 리스트의 사용을 활성화
chroot_list_file=/etc/vsftpd.chroot_list <- 유저 리스트의 파일명을 명시
!!! 주의사항 !!!
* chroot_local_user=YES 일 경우,
유저리스트에 기입된 유저: 홈계정 제한을 풀어줄 유저를 의미
* chroot_local_user=NO 일 경우,
유저리스트에 기입된 유저: 홈계정 제한을 가할 유저를 의미 (혼동하지 않으시길 :-)
//ftp의 포트를 변경하고자 할때 추가해주시면 됩니다.
listen=YES
listen_port=2121 //원하는 포트
6. /etc/init.d/inetd restart (또는 kill -HUP INETD's_PID)해서 inetd 서버를 재시동하면 vsftpd 가 작동합니다.
7. 익명 연결을 막고 특정 계정으로만 접속 가능하게 하기
먼저 아래 옵션을 NO로 설정합니다.
anonymous_enable=NO
그리고 ftp 루트를 다음과 같이 설정해줍니다. (/var/ftp를 쓴다고 가정)
groupadd ftpusers
mkdir /var/ftp
chmod 3775 /var/ftp
chown root:ftpusers /var/ftp
다음과 같이 noshell 을 하나 만듭니다. ftp 전용 계정으로 쉘을 안준다고 가정합니다.
touch /bin/noshell
chmod 755 /bin/noshell
/etc/shells 에 /bin/noshell 추가
다음과 같이 noshell을 쉘로 가지는 계정을 추가해주면 됩니다.
useradd -g ftpusers -d /var/ftp -s /bin/noshell 유저명
passwd 유저명 - 패스워드 등록