vsftpd檔案伺服器的安裝與配置(centos6.x和7.x)
vsftpd是一款免費的、開源的ftp伺服器軟體。
安裝環境(centos 6.8 64位)
安裝版本 vsftpd-2.2.2-24.el6.x86_64
安裝步驟:
一:執行 yum -y install vsftpd(1、可以先執行 rpm -qa | grep vsftpd 檢查是否已經安裝vsftpd;2、預設配置檔案路徑在/etc/vsftpd/vsftpd.conf )
二:建立虛擬使用者:
1、建立ftp資料夾:mkdir /ftpfile
2、新增匿名使用者:useradd ftpuser -d /ftpfile -s /sbin/nologin
3、修改許可權:chown -R ftpuser.ftpuser /ftpfile
4、修改ftpuser的密碼:passwd ftpuser
三、配置:
1、進入資料夾:/etc/vsftpd
2、建立檔案:vim chroot_list 將剛剛新增的ftpuser使用者新增到該檔案中,後續將對該檔案進行引用
cat 預覽:
3、vim /etc/selinux/config,修改為SELINUX=disabled(如果驗證是出現550拒絕訪問的錯誤則執行:setsebool -P ftp_home_dir 1)
4、重啟linux:reboot
5、修改vsftpd的配置檔案:vim /etc/vsftpd/vsftpd.conf 配置說明如下:
1)local_root=/ftpfile(當本地使用者登入時,將被更換到定義的目錄下,預設值為各使用者的家目錄)
2)anon_root=/ftpfile(使用匿名登入時,所登入的目錄)
3)use_localtime=YES(預設是GMT時間,改成使用本機系統時間)
4)anonymous_enable=NO(不允許匿名使用者登入)
5)local_enable=YES(允許本地使用者登入)
6)write_enable=YES(本地使用者可以在自己家目錄中進行讀寫操作)
7)local_umask=022(本地使用者新增檔案時的umask值)
8)dirmessage_enable=YES(如果啟動這個選項,那麼使用者第一次進入一個目錄時,會檢查該目錄下是否有.message這個檔案,如果有,則
會出現此檔案的內容,通常這個檔案會放置歡迎話語,或是對該目錄的說明。預設值為開啟)
9)xferlog_enable=YES(是否啟用上傳/下載日誌記錄。如果啟用,則上傳與下載的資訊將被完整紀錄在xferlog_file 所定義的檔案中。預設為開啟。)
10)connect_from_port_20=YES(指定FTP使用20埠進行資料傳輸,預設值為YES)
11)xferlog_std_format=YES(如果啟用,則日誌檔案將會寫成xferlog的標準格式)
12)ftpd_banner=Welcome to xlt FTP Server(這裡用來定義歡迎話語的字串)
13)chroot_local_user=NO(用於指定使用者列表檔案中的使用者是否允許切換到上級目錄)
14)chroot_list_enable=YES(設定是否啟用chroot_list_file配置項指定的使用者列表檔案)
15)chroot_list_file=/etc/vsftpd/chroot_list(用於指定使用者列表檔案)
16)listen=YES(設定vsftpd伺服器是否以standalone模式執行,以standalone模式執行是一種較好的方式,此時listen必須設定為YES,此為預設值。
建議不要更改,有很多與伺服器執行相關的配置命令,需要在此模式下才有效,若設定為NO,則vsftpd不是以獨立的服務執行,要
受到xinetd服務的管控,功能上會受到限制)
17)pam_service_name=vsftpd(虛擬使用者使用PAM認證方式,這裡是設定PAM使用的名稱,預設即可,與/etc/pam.d/vsftpd對應) userlist_enable=YES(是否啟用vsftpd.user_list檔案,黑名單,白名單都可以
18)pasv_min_port=61001(被動模式使用埠範圍最小值)
19)pasv_max_port=62000(被動模式使用埠範圍最大值)
20)pasv_enable=YES(pasv_enable=YES/NO(YES)
若設定為YES,則使用PASV工作模式;若設定為NO,則使用PORT模式。預設值為YES,即使用PASV工作模式。
FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。
一、PORT(主動)方式的連線過程是:客戶端向伺服器的FTP埠(預設是21)傳送連線請求,伺服器接受連線,建立一條命令鏈路。
當需要傳送資料時,客戶端在命令鏈路上用 PORT命令告訴伺服器:“我打開了****埠,你過來連線我”。於是伺服器從20埠
向客戶端的****埠傳送連線請求,建立一條資料鏈路來傳送資料。
二、PASV(被動)方式的連線過程是:客戶端向伺服器的FTP埠(預設是21)傳送連線請求,伺服器接受連線,建立一條命令鏈路。
當需要傳送資料時,伺服器在命令鏈路上用 PASV命令告訴客戶端:“我打開了****埠,你過來連線我”。於是客戶端向伺服器
的****埠傳送連線請求,建立一條資料鏈路來傳送資料。
從上面可以看出,兩種方式的命令鏈路連線方法是一樣的,而資料鏈路的建立方法就完全不同。而FTP的複雜性就在於此。
6、防火牆配置:
1)vim /etc/sysconfig/iptables
寫入:
#vsftpd
-A INPUT -p TCP --dport 61001:62000 -j ACCEPT
-A OUTPUT -p TCP --sport 61001: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
刪除:
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
2)重啟防火牆:service iptables restart
四:驗證
1、執行重啟命令:(第一次執行時關閉vsftpd的操作會失敗,不用理會,只需要保證啟動ok)service vsftpd restart (在centos7中,防火牆的命令進行了變化)
2、執行ifconfig檢視IP地址、開啟瀏覽器訪問ftp://(your ipadress)