1. vsFTP簡介 linux
vsFTP是Very Secure FTP的縮寫,意指很是安全的FTP服務。其功能強大,經過結合本地系統的用戶認證模塊及其多功能的配置項目,能夠快速有效的搭建強大的多用戶FTP服務。 shell
2. 常見問題解決 安全
a. 添加ftp帳戶 服務器
#touch /etc/vsftpd.chroot_list #touch /etc/vsftpd.user_list #addgroup ftp #安裝vsftp默認會建立一個ftp帳號/組,此步可省略 #adduer --shell /sbin/nologin --home your_dir(eg./home/ftp) your_ftp_user #usermod -aG ftp your_ftp_user #vi /etc/shells 增長一行:/sbin/nologin #若是不增長,則在後期利用帳號不能成功登錄ftp;同時設置爲/sbin/nologin可保證建立的ftp帳號不能做爲系統帳號登錄Linux系統;b. 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
vsftp安全性升級,禁止在ftp帳戶在其對應的根目錄具備寫權限; 網絡
解決方法:用戶根目錄寫權限去掉; session
c. 500 OOPS: cannot change directory:/home/******* tcp
若是selinux開啓的,則在終端執行以下操做: ide
#getsebool ftpd_disable_trans #若是顯示不是on,則執行如下 #setsebool -P ftpd_disable_trans 1 #service vsftpd restart還應該考慮ftp用戶對應的訪問目錄的權限是否已經開啓可讀權限;
d. 臨時凍結ftp用戶 spa
#vi /etc/vsftpd.conf userlist_enable=yes userlist_deny=yes #vi /etc/vsftpd.user_list #添加你要凍結的帳戶,這樣在file文件內的帳號將被臨時凍結,如需從新開通ftp使用權限,將用戶今後文件刪除便可;e. 修改ftp用戶訪問目錄
#vi /etc/passwd #直接修改你ftp帳戶後面對應的目錄便可f. 鎖定ftp用戶的訪問目錄權限
chroot_local_user=YES #文件中的用戶能夠訪問自己目錄之外的其餘目錄,不在文件中的帳號不能訪問自己目錄之外的其餘目錄 # (default follows) chroot_list_file=/etc/vsftpd.chroot_list
g. 上傳文件權限 rest
#chown ftp:ftp your_dir(eg. /home/ftp) #設定對應目錄具備寫權限;3. vsFTP經常使用參數配置
一、listen=YES 若設置爲YES,開啓監聽網絡。 二、anonymous_enable 若設置爲YES,則容許匿名用戶訪問;若設置爲NO則拒絕匿名用戶訪問。 若是開啓的話,則能夠經過用戶名ftp或者anonymous來訪問,密碼隨便。 三、local_enable 若設置爲YES,則容許經過本地用戶賬號訪問;若設置爲NO,則拒絕本地用戶賬號訪問。 若是你拒絕了陌生人訪問,那麼這個必須設置爲YES吧,不然誰能訪問你的FTP呢? 四、write_enable 若設置爲YES,則開啓FTP全局的寫權限;若設置爲NO,則不開。 若爲NO則全部FTP用戶都沒法寫入,包括沒法新建、修改、刪除文件、目錄等操做,也就是說用戶都沒辦法上傳文件!! 五、anon_upload_enable 若設置爲YES,開啓匿名用戶的上傳權限。前提是write_enable有開啓,而且用戶具備對當前目錄的可寫權限。若設置爲NO,則關閉匿名用戶的上傳權限。 六、anon_mkdir_write_enable 若設置爲YES,開啓匿名用戶新建目錄的權限。前提是write_enable有開啓,而且用戶具備對當前目錄的可寫權限。若設置爲NO,則關閉匿名用戶新建目錄的權限。 七、dirmessage_enable 若設置爲YES,則可開啓目錄信息推送,也就是用戶登陸FTP後能夠列出當前目錄底下的文件、目錄。 這個應該要開啓吧! 八、xferlog_enable 若設置爲YES,則開啓登陸、上傳、下載等事件的日誌功能。應開啓! 九、xferlog_file=/var/log/vsftpd.log 指定默認的日誌文件,可指定爲其餘文件。 十、xferlog_std_format 若設置爲YES,則啓用標準的ftpd日誌格式。能夠不啓用。 十一、connect_from_port_20 若設置爲YES,則服務器的端口設爲20。 若是不想用端口20,能夠另外經過ftp_data_port來指定端口號。 十二、chown_uploads 若設置爲YES,則匿名用戶上傳文件後系統將自動修改文件的全部者。 若要開啓,則chown_username=whoever也需指定具體的某個用戶,用來做爲匿名用戶上傳文件後的全部者。 1三、idle_session_timeout=600 不活動用戶的超時時間,超過這個時間則中斷鏈接。 1四、data_connection_timeout=120 數據鏈接超時時間 。 1五、ftpd_banner=Welcome to blah FTP service. FTP用戶登入時顯示的信息 。 1六、local_root=/home/ftp 指定一個目錄,用作在每一個本地系統用戶登陸後的默認目錄。 1七、anon_root=/home/ftp 指定一個目錄,用作匿名用戶登陸後的默認目錄。 1八、chroot_local_user、 chroot_list_enable、chroot_list_file 這個組合用於指示用戶能否切換到默認目錄之外的目錄。 其中,chroot_list_file默認是/etc/vsftpd.chroot_list,該文件定義一個用戶列表。 若chroot_local_user 設置爲NO,chroot_list_enable設置爲NO,則全部用戶都是能夠切換到默認目錄之外的。 若chroot_local_user 設置爲YES,chroot_list_enable設置爲NO,則鎖定FTP登陸用戶只能在其默認目錄活動,不容許切換到默認目錄之外。 若chroot_local_user 設置爲YES,chroot_list_enable設置爲YES,則chroot_list_file所指定的文件裏面的用戶列表均可以訪問默認目錄之外的目錄,而列表之外的用戶則被限定在各自的默認目錄活動。 若chroot_local_user設置爲NO,chroot_list_enable設置爲YES,則chroot_list_file所指定的文件裏面的用戶列表都被限定在各自的默認目錄活動,而列表之外的用戶則能夠訪問默認目錄之外的目錄。 建議設置:chroot_local_user與chroot_list_enable都設置爲YES。這樣就只有chroot_list_file所指定的文件裏面的用戶列表能夠訪問默認目錄之外的目錄,而列表之外的用戶則被限定在各自的默認目錄活動! 好處:全部人都被限制在特定的目錄裏面。若是某些特定用戶須要訪問其餘目錄的權限,只需將其用戶名寫入chroot_list_file文件就能夠賦予其訪問其餘目錄的權限! 1九、userlist_file、userlist_enable、userlist_deny 這個組合用於指示用戶能否訪問FTP服務。 其中,userlist_file默認是/etc/vsftpd.user_list,該文件定義一個用戶列表。 若userlist_enable設置爲YES,userlist_deny設置爲NO,則只有userlist_file所指定的文件裏面的用戶列表裏面的用戶能夠訪問FTP。 若userlist_enable設置爲YES,userlist_deny設置爲YES,則userlist_file所指定的文件裏面的用戶列表裏面的用戶都被拒絕訪問FTP。 若userlist_enable設置爲NO,userlist_deny設置爲YES,則這個列表沒有實際用處,起不到限制的做用!由於全部用戶均可訪問FTP。 建議設置:userlist_enable與userlist_deny都設置爲YES。這樣則userlist_file所指定的文件裏面的用戶列表裏面的用戶都被拒絕訪問FTP。 好處:只需將某用戶賬號加入到userlist_file所指定文件裏面的用戶列表,就能夠起到暫時凍結該用戶的功能! 20、user_config_dir 指定一個目錄用於存放針對每一個用戶各自的配置文件,好比用戶kkk登陸後,會以該用戶名創建一個對應的配置文件。 好比指定user_config_dir=/etc/vsftpd_user_conf, 則kkk登陸後會產生一個/etc/vsftpd_user_conf/kkk的文件,這個文件保存的配置都是針對kkk這個用戶的。能夠修改這個文件而不用擔憂影響到其餘用戶的配置。
4. 設置vsFTP被動模式
a. 配置參數
vi /etc/vsftpd.conf pasv_enable=yes pasv_min_port=50000 pasv_max_port=51000b. 開啓模塊
#modprobe ip_conntrack_ftp #modprobe ip_nat_ftp
c. 配置iptables(雲主機安全組)
vi /etc/sysconfig/iptables -A OUTPUT -p tcp --sport 50000:51000 -j ACCEPT -A INPUT -p tcp --dport 50000:51000 -j ACCEPT