Vsftp與PAM虛擬用戶
使用yum 安裝vsftp
yum install vsftpd pam pam-* db4 db4-*
設置開機啟動
chkconfig vsftpd on
創建一個保存用戶及密碼的文件
cd /etc/vsftpd/ touch vuser_passwd.txt
添加用戶(奇行用戶,偶行密碼)
vi vuser_passwd.txt
tom DSfaoewLD3 ken GetpOIIofd324DLJhg
將文本內的帳號及密碼添加到db4的數據庫文件內
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
將vsftpd原內容全部注釋掉,並添加如下:
sed -ir 's/^/#/g' /etc/pam.d/vsftpd echo -n ' auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd ' >> /etc/pam.d/vsftpd
創建一個vsftpd服務的用戶vsftpd,你也可以使用-d來指定他的家目錄
useradd -g www -d /home/vsftpd -s /sbin/nologin vsftpd #useradd -d /var/ftp/tom -s /sbin/nologin tom
更改 vsftpd的配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak awk '! /^(#|$)/' /etc/vsftpd/vsftpd.conf.bak
配置如下:
#不允許匿名訪問 anonymous_enable=NO #設定本地用戶可以訪問。注意:主要是為虛擬宿主用戶,如果該項目設定為NO那么所有虛擬用戶將無法訪問 local_enable=YES #允許寫操作 write_enable=YES #創建或上傳后文件的權限掩碼 local_umask=022 #禁止匿名用戶上傳 anon_upload_enable=NO #禁止匿名用戶創建目錄 anon_mkdir_write_enable=NO #進入目錄時可以顯示一些設定的信息,可以通過message_file=.message來設置 dirmessage_enable=YES #開啟日志 xferlog_enable=YES #主動連接的端口號 connect_from_port_20=YES #設定禁止上傳文件更改宿主 chown_uploads=NO #日志路徑,記得自己創建一下並且對這個文件進行chown vsftpd.vsftpd /var/log/vsftpd.log xferlog_file=/var/log/vsftpd.log #就是格式話日志格式的,你懂得。使用wu ftp軟件時設置yes就行 xferlog_std_format=YES #因為我們把vsftpd的shell設置為nobody 了,所以 這個地方寫vsftpd就可以啦!當然或者可以寫成系統內的nobody nopriv_user=vsftpd #設定支持異步傳輸功能 async_abor_enable=YES #設定支持ASCII模式的上傳 ascii_upload_enable=YES #設定支持ASCII模式的上傳 ascii_download_enable=YES #登陸歡迎語 ftpd_banner=Welcome to dongnan FTP service. #限定在自己的目錄內,不讓他出去,就比如如果設置成NO,那么當你登陸到ftp的時候,可以訪問服務器的其他一些有權限目錄。設置為YES后即,鎖定你的目錄了 chroot_list_enable=YES #待會要把用戶寫到這個里面,寫到這里的用戶乖乖的呆在家目錄下吧 chroot_list_file=/etc/vsftpd/chroot_list #以standalone方式來啟動 listen=YES #/etc/pam.d/下的vsftpd文件 pam_service_name=vsftpd #在/etc/vsftpd/user_list中的用戶將不得使用FTP userlist_enable=YES #支援 TCP Wrappers 的防火牆機制 tcp_wrappers=YES #啟用虛擬用戶功能 guest_enable=YES guest_username=vsftpd #虛擬用戶的權限符合他們的宿主用戶 virtual_use_local_privs=YES #虛擬用戶個人vsftpd的配置文件存放路徑。vsftpd_config是文件夾啊。注意:配置文件名必須和虛擬用戶名相同 user_config_dir=/etc/vsftpd/vuser_conf
設置被動模式
allow_writeable_chroot=YES #connect_from_port_10021=YES pasv_min_port=8888 pasv_max_port=8899
放開端口
firewall-cmd --add-port=8888-8899/tcp --permanent
firewall-cmd --reload
創建一下保存虛擬用戶配置文件的目錄
mkdir /etc/vsftpd/vuser_conf/
創建vsftp日志文件
touch /var/log/vsftpd.log chmod 600 /var/log/vsftpd.log chown vsftpd.vsftpd /var/log/vsftpd.log
創建要將哪些用戶固定在家目錄的配置文件
touch /etc/vsftpd/chroot_list echo vsftpd > /etc/vsftpd/chroot_list
將需要固定用戶目錄的用戶名字寫進去即可。
cd /etc/vsftpd/vuser_conf/ cat > tom << EOF #起用虛擬用戶,centos下yes必須為小寫字母 local_root=/home/ftp/tom write_enable=YES anon_umask=022 anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
注:行末不能有空格
啟動vsftp
/etc/init.d/vsftpd start
放開selinux限制
setsebool -P ftp_home_dir=1 //設置ftp可以使用home目錄 setsebool -P allow_ftpd_full_access=1 //設置ftp用戶可以有所有權限
防火牆
firewall-cmd --add-port=21/tcp --permanent firewall-cmd --reload
Starting vsftpd for vsftpd: 500 OOPS: bad bool value in config file for: anon_upload_enable
注意: 這里出現了 500 OOPS 之類的錯誤,請使用以下命令去除"多余的空格",再次啟動vsftp 即可。
sed -ir 's/[ ]*$//g' /etc/vsftpd/vsftpd.conf sed -ir 's/[ ]*$//g' /etc/vsftpd/vuser_conf/tom
基於SSL加密
(可以應用於任何用戶驗證。可以利用本博的博文抓包驗證)
mkdir /etc/vsftpd/.sslkey //建立存放證書的目錄 cd /etc/vsftpd/.sslkey //進入該目錄以備建立證書 openssl req –new -x509 -nodes -days 900 -out vsftpd.pem -keyout vsftpd.pem //生成證書,Common Name必須是客戶端訪問FTP服務器時的FQDN.默認過期時間為30天,這里設為900天 chmod -R 400 /etc/vsftpd/.sslkey //保證證書安全,修改證書目錄的權限。
filezilla client連接時“加密”選擇“要求顯式的FTP over TLS”
在/etc/vsftpd/vsftpd.conf配置文件中添加:
ssl_enable=YES ssl_sslv2=YES ssl_sslv3=YES ssl_tlsv1=YES force_local_logins_ssl=YES force_local_data_ssl=YES rsa_cert_file=/etc/vsftpd/.sslkey/vsftpd.pem
#service vsftpd restart
參考
Vsftp服務安裝搭建,虛擬用戶配置
http://kinggoo.com/app-installvsftpdconf.htm
第二十一章、檔案伺服器之三: FTP 伺服器
/sbin/nologin和/bin/false的區別
/bin/false是最嚴格的禁止login選項,一切服務都不能用,而/sbin/nologin只是不允許系統login,可以使用其他ftp等服務。
參考:http://jingyan.baidu.com/article/d169e186469f44436611d8ec.html
