自己動手搭建FTP服務
FTP連線方式
控制連線:標準埠為21,用於傳送FTP命令資訊
資料連線:標準埠為20,用於上傳、下載資料
資料連線的建立型別
主動模式:服務端從20埠主動向客戶端發起連線
命令連線:客戶端 >1023埠 -> 伺服器 21埠
資料連線:客戶端 >1023埠 <- 伺服器 20埠
被動模式:服務端在指定範圍內的某個埠被動等待客戶端發起連線
命令連線:客戶端 >1023埠 -> 伺服器 21埠
資料連線:客戶端 >1023埠 -> 伺服器 >1023埠
主動模式與被動模式FTP優缺點
主動FTP對FTP
伺服器
的管理有利,但對客戶端的管理不利,因為FTP伺服器企圖與客戶端的高位隨機埠建立連線,而這個埠很有可能被客戶端的
防火牆
阻塞掉。被動FTP對FTP客戶端的管理有利,但對伺服器端的管理不利,因為客戶端要與伺服器端建立兩個連線,其中一個連到一個高位隨機埠,而這個埠很有可能被伺服器端的防火牆阻塞掉。
既然FTP伺服器的管理員需要他們的伺服器有最多的客戶連線,那麼必須得支援被動FTP。我們可以透過為FTP伺服器指定一個有限的埠範圍來減小伺服器
高位埠
的暴露。這樣,不在這個範圍的任何埠會被伺服器的防火牆阻塞,雖然這沒有消除所有針對伺服器的危險,但它大大減少了危險。
FTP使用者的型別
匿名使用者:anonymous或ftp //匿名使用者登陸FTP無需密碼
本地使用者:帳號名稱、密碼等資訊儲存在passwd、shadow檔案中
虛擬使用者:使用獨立的帳號/密碼資料檔案
FTP軟體包安裝
RPM安裝方式:rpm –ivh vsftpd-2。2。2-6。e16。x86_64。rpm
YUM安裝方式:yum –y install vsftpd
FTP服務相關的配置檔案與服務指令碼
主配置檔案:/etc/vsftpd/vsftpd。conf
服務名稱:vsftpd
使用者控制列表檔案
/etc/vsftpd/ftpusers //禁止登入FTP伺服器的本地使用者列表檔案,該檔案中的本地使用者將被拒絕登入FTP伺服器
/etc/vsftpd/user_list //該檔案中包含的本地使用者可能被禁止登入FTP伺服器,也可能被允許登入,具體是由主配置檔案vsftpd。conf中決定
當存在userlist_enable=yes的配置項時user_list檔案生效,如果配置userlist_deny=yes,則僅禁止user_list中的使用者登入
如果配置
userlist_deny=no
,則僅允許user_list中的使用者登入
常見配置項及含義說明
anonymous_enable=YES //是否允許匿名使用者ftp或anonymous登入
anon_root=/var/ftp //設定匿名使用者的FTP根目錄(預設為/var/ftp)
anon_umask=022 //設定匿名使用者所上傳檔案的預設許可權掩碼值
anon_world_readable_only=no //允許匿名使用者瀏覽下載檔案的許可權
anon_upload_enable=YES //是否允許匿名使用者上傳檔案(若開啟了selinux功能,則要將sftpd_anon_write的
布林值
設為on)
anon_mkdir_write_enable=YES //是否允許匿名使用者有建立目錄的權利
anon_other_write_enable=YES //是否允許匿名使用者有其他寫入許可權,如對檔案改名、覆蓋、及刪除檔案
anon_max
_rate //限制匿名使用者的最大傳輸速率(0為無限制),單位為位元組
dirmessage_enable
=YES //是否顯示目錄說明檔案,預設是YES但需要手工建立。message檔案
local_enable=YES //是否允許本地使用者登入
local_umask=022 //設定本地使用者所上傳檔案的預設許可權掩碼值
local_root=/var/ftp //設定本地使用者的FTP根目錄(預設為使用者的宿主目錄)
local_max_rate //限制本地使用者的最大傳輸速率(0為無限制)單位為位元組
chroot_local_user=yes //是否將FTP本地使用者禁錮在
宿主目錄
中
listen_port 21 //設定監原FTP服務的埠號
write_enable=yes //啟用任何形式的寫入許可權(如上傳、刪除檔案等)都需要開啟此項
download_enable=yes //是否允許下載檔案(建立僅限於瀏覽、上傳的FTP伺服器時可將其設為no)
xferlog_enable=YES //是否記錄ftp傳輸過程,即啟用FTP日誌,預設記錄到/var/log/xferlog檔案中
xferlog_std_format=yes //啟用標準的xferlog日誌格式,若禁用此項,將使用vsftpd自已的日誌格式
connect_from_port_20
=YES //是否確信埠傳輸來自20埠
chown_upload=YES、chown_username=username //是否改變上傳檔案的屬主,如果是需要輸入一個系統使用者名稱,你可以把上傳的檔案都改成root屬主
pasv_enable=yes //允許被動模式連線
pasv_max_port
=24600 //設定用於被動模式的伺服器最大埠號
pasv_min_port
=24500 //設定用於被動模式的伺服器最小埠號
pam_service_name=vsftpd //設定用於使用者認證的PAM檔案位置(/etc/pam。d目錄中對應的檔名)
userlist_enable=yes //是否啟用user_list使用者列表檔案
userlist_deny=yes //是否禁止user_list列表檔案中的使用者賬號
max_clients
=0 //最多允許多少個客戶端同進連線FTP伺服器(0為無限制)
max_per_ip
=0 //對來自相同IP地址的客戶端,最多允許多少個併發連線(0為無限制)
tcp_wrappers=yes //是否啟用tcp_wrappers訪問控制
idle_session_timeout=600 //設定預設的斷開不活躍session的時間
accept_timeout=60 將客戶端空閒斷開時間,單位:秒
例項一、實現匿名使用者上傳FTP
#mkdir /var/ftp/upload //建立用於上傳的目錄
設定匿名使用者(ftp)對upload目錄的寫許可權,有兩種常用方法
方法1: #chown ftp /var/ftp/loadup //將upload目錄的屬主修改為ftp使用者
方法2:# setfacl -m g:ftp:rwx /var/ftp/upload //透過acl設定ftp組賬號對upload目錄的w許可權
1。 本例採用方法2實現對
upload目錄
的寫許可權,如下圖所示:
2。 修改/etc/vsftpd/vsftpd。conf配置檔案開啟允許匿名使用者上傳功能,如下圖所示
#vi /etc/vsftpd/vsftpd。conf
3。 修改selinux允許匿名使用者上傳
4。 iptables防火牆規則設定
例項二:實現本地使用者登入FTP伺服器
1:修改selinux允許本地使用者登入
2:修改selinux允許本地使用者上傳
3:禁錮本地使用者在其宿主目錄內
微信公眾號ID:snmp161