看完本篇文章可以學習到的內容:①理解FTP協議的作用,②安裝 vsftpd 服務程序並瞭解配置文件參數,③完整演示vsftpd 服務匿名訪問模式、本地用戶模式、虛擬用戶模式的配置方法,④瞭解 PMA可插拔式認證模塊的原理與認證流程,⑤通過配置vsftpd 服務程序加強對 SELinux 服務策略、安全上下文的配置與排錯能力。
FTP 文件傳輸協議:能夠讓用戶在互聯網中上傳、下載文件的文件協議。
FTP 協議端口號:
21端口:命令控制,用於接收客戶端執行的FTP命令。
20端口:數據傳輸,用於上傳、下載文件數據。
FTP數據傳輸的類型:
主動模式:FTP服務端主動向FTP客戶端發起連接請求。
被動模式:FTP服務端等待FTP客戶端的連接請求。
安裝 vdftpd 服務程序 yum install vsftpd -y
清空默認的防火牆默認規則
保存清空後的防火牆規則表
使用 cat 命令查看vsftpd 程序的主配置文件
備份 vsftpd 的主配置文件
# 號是註釋行,可以使用 grep 過濾掉這些註釋,讓配置文件的內容看起來更加直觀
Vsftpd 程序配置文件參數的作用:
參數 作用
Listen=[YES/NO] 是否以獨立運行的方式監聽服務
Listen_address=IP地址 設置要監聽的IP地址
Listen_port=21 設置FTP 服務的監聽端口
Download_enable=[YES/NO] 是否允許下載文件
Userlist_enable=[YES/NO] (Userlist_deny=[YES/NO] ) 是否啓用“禁止登陸用戶名單”
Max_clients=[YES/NO] 最大客戶端連接數,0爲不限制
Max_per_ip=0 通一IP地址最大連接數,0爲不限制
Anomymous_enable=[YES/NO] 是否允許匿名用戶訪問
Anon_upload_enable=[YES/NO] 是否允許匿名用戶上傳文件
Anon_umask=220 匿名用戶上傳文件的umask值
Anon_root=/var/ftp 匿名用戶的FTP根目錄
Anon_mkdir_write_enable=[YES/NO] 是否允許匿名用戶創建目錄
Anon_other_write_enable=[YES/NO] 是否開放匿名用戶其他寫入權限
Anon_max_rate=0 匿名用戶最大傳輸速率(字節),0爲不限制
Local_enable=[YES/NO] 是否允許本地用戶登錄FTP
Local_umask=022 本地用戶上傳文件的umask值
Local_root=/var/ftp 本地用戶的FTP根目錄
Chroot_local_user=[YES/NO] 是否將用戶權限禁錮在FTP目錄,更加的安全
Local_max_rate=0 本地用戶最大傳輸速率(字節),0爲不限制
vdftpd 的驗證方式
vsftp 程序提供的FTP服務認證方式有:匿名訪問、本地用戶、虛擬用戶
①匿名用戶:任何人無需驗證口令即可登入FTP客戶端(用於存放公開的數據)
②本地用戶:使用FTP服務器中的用戶、密碼和資料
③虛擬用戶:創建獨立的FTP賬號資料
本地用戶和虛擬用戶需要用戶提供賬號和密碼後才能登入FTP服務,更加的安全,而虛擬用戶則是最安全的。
匿名訪問模式 比較不安全的訪問模式
使用 vim 打開vsftpd.conf 配置文件,填寫下面方框內參數後保存退出
重啓 vsftpd 服務程序並設置爲開機啓動
ftp 命令用於FTP服務, 格式爲:ftp [參數] [FTP主機]
如果出現拒接連接,請在配置文件末尾添加下圖指定用戶的權限配置文件存放的目錄
設置之後就可以使用匿名用戶登入FTP服務了,可以切換目錄但是不能創建目錄
查看所有與 ftp 相關的SELinux 規則
設置SELinux 服務對 ftp 服務的訪問規則策略爲允許
因爲FTP根目錄所有者/組都是 root,匿名用戶沒有寫入權限,所有還要將所有者改爲 ftp
經過上面的操作之後匿名用戶登入FTP服務後就可以寫入、修改和刪除目錄了。
本地用戶模式 比匿名用戶模式更安全
vsftpd 服務程序默認已經允許本地用戶模式,我們要做的事添加設置本地用戶模式權限的參數:
填寫好參數之後保存退出 vsftpd.conf 文件,然後重啓 vsftpd 服務程序並設置爲開機自啓動
查看本地用戶:
在客戶端登入FTP服務
虛擬用戶模式 比本地用戶模式更安全
虛擬用戶模式的賬號口令都不是真實系統中存在的,配置虛擬用戶模式的操作步驟相對複雜一些:
①建立虛擬FTP用戶數據庫文件
②創建FTP根目錄及虛擬用戶映射的系統用戶
③建立支持虛擬用戶的PAM認證文件
④在 vsftpd.conf 文件中添加支持配置
⑤爲虛擬用戶設置不同的權限
⑥重啓 vsftpd 服務,驗證
第一步:建立虛擬 FTP 用戶數據庫文件
切換到 vsftpd 程序目錄:
創建用於生成 FTP 用戶數據庫的原始賬號和密碼文件(奇數爲賬號,偶數爲密碼)
使用 db_load 命令用 HASH算法生成 FTP 用戶數據庫文件 vuser.db
第2步:創建 FTP根目錄及虛擬用戶映射的系統用戶
爲保證其他用戶可以訪問,給與 讀取和可執行權限(rwxr-xr-x)
第3步:建立支持虛擬用戶的 PAM 認證文件
第4步:在 vsftpd.conf 文件中添加支持的配置
第5步:創建空白的 chd 的配置文件,指定 chuid 用戶的具體權限
第6步:重啓 vsftpd 服務,驗證
可插拔認證模塊 PAM
PAM 是一種認證安全機制的模塊(插件),通過一些動態鏈接庫和統一的 API 將系統提供的服務與認證方式分開,使得管理員可以根據需求靈活的調整服務程序的不同認證方式。
PAM採取了分層設計的思想:①應用程序層②應用接口層③鑑別模塊層
PAM模塊的重要目錄:
/lib/security:pam 認證模塊
/etc/pam.d:針對不同服務而定義好的 pam 配置文件
例:vsftpd 程序會在主配置文件(/etc/vsftpd/vsftpd.conf)中寫入下面的參數:
pam_service_name=vsftpd
表示登錄FTP服務器時是根據 /etc/pam.d/vsftpd 的文件內容進行安全認證的。