健壯又簡單文件共享服務

官方語言介紹下ftp,文件傳輸協議(File Transfer Protocol,FTP)是用於在網絡上進行文件傳輸的一套標準協議,FTP 的目標是提高文件的共享性。今天從ftp的兩種模式,ftp用戶管理主要的兩方面實踐使用下。

1.ftp 兩種模式
簡明直接:

主動FTP:
命令連接:客戶端 >1024端口 ---> 服務器 21端口
數據連接:客戶端 >1024端口 <--- 服務器 20端口
被動FTP:
命令連接:客戶端 >1024端口 ---> 服務器 21端口
數據連接:客戶端 >1024端口 ---> 服務器 >1024端口

具體說明:

如圖對於兩種傳輸模式來說,控制連接的建立過程都是一樣,均爲服務器監聽21號端口,客戶端向服務器的該端口發起TCP連接。主動模式服務器通過控制連接知道客戶端監聽的端口後,使用自己的20號端口作爲源端口,“主動”發起TCP數據連接。而被動模式服務器監聽1024-65535的一個隨機端口,並通過控制連接將該端口告訴客戶端,客戶端向服務器的該端口發起TCP數據連接。

兩種模式該選擇哪個了?選擇被動模式。

如果FTP客戶端在私網,FTP服務器在公網(雲主機的應用場景)應該使用被動模式,因爲這種應用場景FTP服務器訪問不到在私網的FTP客戶端,而FTP客戶端可以訪問到FTP服務器。

那ftp服務器放開大於1024端口,不安全,如何做了?

服務端配置高點端口,然後防火牆中限制這個端口段可以被客戶端連接過來。
再者就是限制客戶端的ip,指定特定的客戶端地址。(誰用誰連)

被動模式配置
connect_from_port_20=NO
PASV_enable=YES 開啓被動模式
PASV_min_port=%number% 被動模式最低端口
PASV_max_port=%number% 被動模式最高端口

2.ftp 創建虛擬用戶(加強訪問安全的措施)
簡明直接:

我們登錄FTP有三種方式,匿名登錄、本地用戶登錄和虛擬用戶登錄。
匿名登錄:在登錄FTP時使用默認的用戶名,一般是ftp或anonymous。
本地用戶登錄:使用系統用戶登錄,在/etc/passwd中。
虛擬用戶登錄:這是FTP專有用戶,有兩種方式實現虛擬用戶,本地數據文件和數據庫服務器。
FTP虛擬用戶是FTP服務器的專有用戶,使用虛擬用戶登錄FTP,只能訪問FTP服務器提供的資源,大大增強了系統的安全。

具體實施:
2.1 搭建
yum -y install vsftpd
添加虛擬用戶文件,添加虛擬用戶名和密碼,一行用戶名,一行密碼,以此類推。奇數行爲用戶名,偶數行爲密碼。
vim /etc/vsftpd/vuser.txt
name #用戶
passwd #密碼
生成虛擬用戶認證文件
db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
編輯vsftpd的pam認證文件/etc/pam.d/vsftpd
vsftpd的其他行可註釋掉。
添加以下:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
建立本地映射用戶並設置宿主目錄權限
useradd -d /data -s /sbin/nologin vsftpd
chmod a-w /data
chown -R vsftpd:vsftpd /data
2.2 配置文件vsftpd.conf

#連接相關
ftpd_banner=welcome to ftp service
#空閒超時時間,用戶超過這段時間不動作被服務器提出。
idle_session_timeout=300
#數據連接超時時間
data_connection_timeout=60
connect_timeout=60
max_clients=100
#允許每個客戶端連接3個
max_per_ip=3
listen_address=192.168.100.100
listen_port=21

#權限相關
#不允許匿名用戶登錄
anonymous_enable=NO
#允許本地用戶登錄(這裏指創建系統用戶vsftpd)
local_enable=YES
#允許ascii模式的上傳(可以防止上傳腳本等惡意文件),而不會遭受拒絕服務的危險。
ascii_upload_enable=YES

guest_enable=YES
guest_username=vsftpd
#允許匿名用戶上傳(這裏指系統用戶下的虛擬用戶)
anon_upload_enable=YES
#允許匿名用戶創建和寫入
anon_mkdir_write_enable=YES

#開啓全局權限
write_enable=YES
#設置這個之後客戶端上傳目錄權限就改爲755,文件權限就爲644
anon_umask=022
#以下爲系統默認設置
#允許爲目錄配置顯示信息,顯示每個目錄下面的message_file文件的內容。
dirmessage_enable=YES
#xferlog_enable=YES,啓用記錄上傳/下載活動日誌功能。
xferlog_enable=YES
#connect_from_port_20=YES啓用FTP數據端口的連接請求
connect_from_port_20=NO
xferlog_std_format=YES

#在VSFTPD中使用TCP_Wrappers遠程訪問控制機制,默認值爲YES
tcp_wrappers=YES

特別強調的配置:

#開啓虛擬用戶;虛擬用戶對應的系統用戶;PAM認證文件。
guest_enable=YES
guest_username=vsftpd
pam_service_name=vsftpd

#這種完成後只能上傳文件,及下載文件。但是不能修改ftp 服務端的文件。
如何才能修改及刪除呢?
anon_other_write_enable=YES  #允許虛擬用戶寫入權限(即修改刪除操作)

2.3 啓動vsftpd
systemctl start vsftpd

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章