簡介linux
vsftpd是「very secure FTP daemon」的縮寫,是一個徹底免費的,開放源代碼的ftp服務器軟件安全
特色服務器
vsftpd是一款在Linux發行版中最受推崇的FTP服務器程序,小巧輕快,安全易用,支持虛擬用戶,支持帶寬限制等功能測試
安裝vsftpd開放源代碼
yum -y install vsftpd # 1. 是否使用sodu權限執行請根據你具體環境來決定 # 2. rpm -qa| grep vsftpd可經過這個檢查是否已經安裝vsftpd # 3. 默認配置文件在/etc/vsftpd/vsftpd.conf
建立虛擬用戶rest
選擇在home目錄下建立ftp文件夾 (vsftpd2.5版本後就不容許在根目錄建立文件夾有寫的權限,這個坑坑 了我好幾天)日誌
cd / md ftpfile
添加匿名用戶code
useradd ftpuser -d /ftpfile -s /sbin/nologin
修改ftpfile權限orm
chown -R ftpuser.root /ftpfile
重設ftpuser密碼ip
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方式,中文意思爲主動式和被動式。 # 1、PORT(主動)方式的鏈接過程是:客戶端向服務器的FTP端口(默認是21)發送鏈接請求,服務器接受鏈接,創建一條命令鏈路。 # 當須要傳送數據時,客戶端在命令鏈路上用 PORT命令告訴服務器:「我打開了****端口,你過來鏈接我」。因而服務器從20端口向客戶端的****端口發送鏈接請求,創建一條數據鏈路來傳送數據。 # 2、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 # 執行命令重啓防火牆