vsftpd是一款在Linux發(fā)行版中最受推崇的FTP服務(wù)器程序。特點是小巧輕快,安全易用。
在開源操作系統(tǒng)中常用的FTPD套件主要還有ProFTPD、PureFTPd和wuftpd等,而vsftpd支持很多其他的 FTP 服務(wù)器所不支持的特征。比如:非常高的安全性需求、帶寬限制、良好的可伸縮性、可創(chuàng)建虛擬用戶、支持IPv6、速率高等。
vsftpd特點
①vsftpd 是以一般身份啟動服務(wù),所以對于 Linux 系統(tǒng)的使用權(quán)限較低,對于Linux 系統(tǒng)的危害就相對的減低了。此外, vsftpd 亦利用 chroot() 這個函式進行改換根目錄的動作,使得系統(tǒng)工具不會被vsftpd 這支服務(wù)所誤用;
②任何需要具有較高執(zhí)行權(quán)限的 vsftpd 指令均以一支特殊的上層程序( parent process ) 所控制 ,該上層程序享有的較高執(zhí)行權(quán)限功能已經(jīng)被限制的相當?shù)牡停⒁圆挥绊慙inux 本身的系統(tǒng)為準;
③所有來自 clients 端,想要使用這支上層程序所提供的較高執(zhí)行權(quán)限之vsftpd 指令的需求,均被視為『不可信任的要求』來處理,必需要經(jīng)過相當程度的身份確認后,方可利用該上層程序的功能。例如chown(), Login 的要求等等動作;
④此外,上面提到的上層程序中,依然使用 chroot() 的功能來限制使用者的執(zhí)行權(quán)限。
安裝步驟
編譯安裝
# mkdir -p /usr/local/man/man8
# mkdir -p /usr/local/man/man5
# yum -y install tcp_wrappers*
# yum -y install pam*
# yum -y install db4*
# yum -y install libcap*
# wget -c http://down1.chinaunix.net/distfiles/vsftpd-2.3.4.tar.gz
# tar -xvzf vsftpd-2.3.4.tar.gz
# cd vsftpd-2.3.4
支持的認證類型
# vim builddefs.h
#define VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#define VSF_BUILD_SSL
# make
# make install
# mkdir /etc/vsftpd
# cp vsftpd.conf /etc/vsftpd
啟動腳本
# vim /etc/init.d/vsftpd
# chmod +x /etc/init.d/vsftpd
# chkconfig --level 235 vsftpd on
日志目錄
# mkdir -p /data3/ftp_logs
# vi /etc/vsftpd/vsftpd.conf
# touch /data3/ftp_logs/vsftpd.log
# touch /etc/vsftpd/chroot_list
# touch /etc/vsftpd.user_list
# mkdir /etc/vsftpd/vconf
創(chuàng)建用戶列表【第一行為用戶名,第二行為密碼】
# vi /etc/vsftpd/virtusers
blaze
123456789
創(chuàng)建用戶數(shù)據(jù)庫文件
# db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
# chmod 600 /etc/vsftpd/virtusers.db
創(chuàng)建PAM認證文件
# vim /etc/pam.d/vsftpd
[注:x64環(huán)境下,路徑不一樣]
創(chuàng)建針對 blaze 用戶的配置文件
# vim /etc/vsftpd/vconf/blaze
local_root=/data1/www
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=50000
防火墻設(shè)置
# iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -I INPUT -p tcp --dport 21 -j ACCEPT
# iptables -I OUTPUT -p tcp --dport 21 -j ACCEPT
# modprobe ip_conntrack_ftp
# modprobe ip_nat_ftp/p>
p># vi /etc/sysconfig/iptables
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-I INPUT -p tcp --dport 21 -j ACCEPT
-I OUTPUT -p tcp --dport 21 -j ACCEPT/p>
p># vi /etc/sysconfig/iptables-config
IPTABLES_MODULES="ip_conntrack_ftp"
IPTABLES_MODULES="ip_nat_ftp"