您當前的位置:首頁 > 收藏

自己動手搭建FTP服務

作者:由 Alex 發表于 收藏時間:2018-06-27

FTP連線方式

控制連線:標準埠為21,用於傳送FTP命令資訊

資料連線:標準埠為20,用於上傳、下載資料

資料連線的建立型別

主動模式:服務端從20埠主動向客戶端發起連線

命令連線:客戶端 >1023埠 -> 伺服器 21埠

資料連線:客戶端 >1023埠 <- 伺服器 20埠

自己動手搭建FTP服務

被動模式:服務端在指定範圍內的某個埠被動等待客戶端發起連線

命令連線:客戶端 >1023埠 -> 伺服器 21埠

資料連線:客戶端 >1023埠 -> 伺服器 >1023埠

自己動手搭建FTP服務

主動模式與被動模式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目錄

的寫許可權,如下圖所示:

自己動手搭建FTP服務

2。 修改/etc/vsftpd/vsftpd。conf配置檔案開啟允許匿名使用者上傳功能,如下圖所示

#vi /etc/vsftpd/vsftpd。conf

自己動手搭建FTP服務

3。 修改selinux允許匿名使用者上傳

自己動手搭建FTP服務

4。 iptables防火牆規則設定

自己動手搭建FTP服務

自己動手搭建FTP服務

例項二:實現本地使用者登入FTP伺服器

1:修改selinux允許本地使用者登入

自己動手搭建FTP服務

2:修改selinux允許本地使用者上傳

自己動手搭建FTP服務

3:禁錮本地使用者在其宿主目錄內

自己動手搭建FTP服務

微信公眾號ID:snmp161

標簽: ftp    本地使用者  伺服器