vsftpd是什麼?
簡介
vsftpd是“very secure FTP daemon”的縮寫,是一個完全免費的,開放原始碼的ftp伺服器軟體
特點
vsftpd是一款在Linux發行版中最受推崇的FTP伺服器程式,小巧輕快,安全易用,支援虛擬使用者,支援頻寬限制等功能
vsftpd的安裝
-
安裝vsftpd
yum -y install vsftpd # 1. 是否使用sodu許可權執行請根據你具體環境來決定 # 2. rpm -qa| grep vsftpd可通過這個檢查是否已經安裝vsftpd # 3. 預設配置檔案在/etc/vsftpd/vsftpd.conf
-
建立虛擬使用者
-
選擇在home目錄下建立ftp資料夾 (vsftpd2.5版本後就不允許在根目錄建立資料夾有寫的許可權,這個坑坑 了我好幾天)
cd / md ftpfile
-
新增匿名使用者
useradd ftpuser -d /ftpfile -s /sbin/nologin
-
修改ftpfile許可權
chown -R ftpuser.root /ftpfile
-
重設ftpuser密碼
passwd ftpuser
-
-
配置vsftpd
cd /etc/vsftpd sudo vi chroot_list # 把剛剛新增的虛擬使用者新增到此配置檔案中 寫入ftpuser儲存退出 sudo vi vsftpd.conf # 在末尾新增以下配置 注意 不可有重複配置項 否則啟動失敗 local_root=/ftpfile # (當本地使用者登入時,將被更換到定義的目錄下,預設值為各使用者的家目錄) anon_root=/ftpfile # (使用匿名登入時,所登入的目錄) use_localtime=YES # (預設是GMT時間,改成使用本機系統時間) anonymous_enable=NO # (不允許匿名使用者登入) local_enable=YES # (允許本地使用者登入) write_enable=YES # (本地使用者可以在自己家目錄中進行讀寫操作) local_umask=022 # (本地使用者新增檔案時的umask值) dirmessage_enable=YES # (如果啟動這個選項,那麼使用者第一次進入一個目錄時,會檢查該目錄下是否有.message這個檔案,如果有,則會出現此檔案的內容,通常這個檔案會放置歡迎話語,或是對該目錄的說明。預設值為開啟) xferlog_enable=YES # (是否啟用上傳/下載日誌記錄。如果啟用,則上傳與下載的資訊將被完整紀錄在xferlog_file 所定義的檔案中。預設為開啟。) connect_from_port_20=YES # (指定FTP使用20埠進行資料傳輸,預設值為YES) xferlog_std_format=YES # (如果啟用,則日誌檔案將會寫成xferlog的標準格式) ftpd_banner=Welcome to HelloWord FTP Server # (這裡用來定義歡迎話語的字串)
chroot_local_user=NO # (用於指定使用者列表檔案中的使用者是否允許切換到上級目錄) chroot_list_enable=YES # (設定是否啟用chroot_list_file配置項指定的使用者列表檔案) chroot_list_file=/etc/vsftpd/chroot_list # (用於指定使用者列表檔案) listen=YES # (設定vsftpd伺服器是否以standalone模式執行,以standalone模式執行是一種較好的方式,此時listen必須設定為YES,此為預設值。建議不要更改,有很多與伺服器執行相關的配置命令,需要在此模式下才有效,若設定為NO,則vsftpd不是以獨立的服務執行,要受到xinetd服務的管控,功能上會受到限制) pam_service_name=vsftpd # (虛擬使用者使用PAM認證方式,這裡是設定PAM使用的名稱,預設即可,與/etc/pam.d/vsftpd對應) userlist_enable=YES(是否啟用vsftpd.user_list檔案,黑名單,白名單都可以 allow_writeable_chroot=YES # 如果啟用了限定使用者在其主目錄下需要新增這個配置 pasv_min_port=61001 # (被動模式使用埠範圍最小值) pasv_max_port=62000 # (被動模式使用埠範圍最大值) pasv_enable=YES # 若設定為YES,則使用PASV工作模式;若設定為NO,則使用PORT模式。預設值為YES,即使用PASV工作模式。 # FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。 # 一、PORT(主動)方式的連線過程是:客戶端向伺服器的FTP埠(預設是21)傳送連線請求,伺服器接受連線,建立一條命令鏈路。 # 當需要傳送資料時,客戶端在命令鏈路上用 PORT命令告訴伺服器:“我開啟了****埠,你過來連線我”。於是伺服器從20埠向客戶端的****埠傳送連線請求,建立一條資料鏈路來傳送資料。 # 二、PASV(被動)方式的連線過程是:客戶端向伺服器的FTP埠(預設是21)傳送連線請求,伺服器接受連線,建立一條命令鏈路。 # 當需要傳送資料時,伺服器在命令鏈路上用 PASV命令告訴客戶端:“我開啟了****埠,你過來連線我”。於是客戶端向伺服器的****埠傳送連線請求,建立一條資料鏈路來傳送資料。 # 從上面可以看出,兩種方式的命令鏈路連線方法是一樣的,而資料鏈路的建立方法就完全不同。而FTP的複雜性就在於此。
# 重新啟動服務 systemctl restart vsftpd.service sudo vi /etc/selinux/config # 修改為SELINUX=disabled # :wq! # 注: 如果驗證的時候碰到550拒絕訪問請執行: sudo setsebool -P ftp_home_dir 1 然後重啟linux伺服器,執行reboot命令 # 本機測試 yum install ftp -y ftp localhost
-
防火牆配置
sudo vi /etc/sysconfig/iptables
-A INPUT -p TCP --dport 61000:62000 -j ACCEPT -A OUTPUT -p TCP --sport 61000:62000 -j ACCEPT -A INPUT -p TCP --dport 20 -j ACCEPT -A OUTPUT -p TCP --sport 20 -j ACCEPT -A INPUT -p TCP --dport 21 -j ACCEPT -A OUTPUT -p TCP --sport 21 -j ACCEPT # 將以上配置新增到防火牆配置中 # :wq儲存退出 sudo service iptables restart # 執行命令重啟防火牆