1. FTP簡單介紹
文件傳輸協議FTP(File Transfer Protocol),即能夠讓用戶在互聯網中上傳、下載文件的文件協議
FTP客戶端 FTP服務器端
FTP佔用兩個端口號(21,20)
21端口:命令控制,用於接受客戶端執行的FTP命令。
20端口:數據傳輸,用於上傳、下載文件數據。
FTP數據傳輸類型:
主動模式:FTP服務器端主動向FTP客戶端發起連接請求。
被動模式:FTP服務器等待FTP客戶端的連接請求。
2. 安裝Vsftpd服務程序
Vsftpd即“Very Secure FTP Dawmon”一款運行在Unix操作系統的FTP服務端程序,
主打:安全性、完全開源免費、速度高、支持IPv6、虛擬用戶功能等。
#yum install vsftpd -y
#iptables -F //清空防火牆規則
#service iptables save //保存清空後的防火牆規則
/usr/sbin/vsftpd 主程序
/etc/vsftpd/ftpusers & /etc/vsftpd/user_list //用戶禁止登陸列表
/etc/vsftpd/vsftpd.conf //主配置文件
配置文件參數作用詳解:
listen=yes|no //是否以獨立運行方式監聽服務
listen_address=ip_地址 //設置要監聽的ip地址
listen_port=21 //設置ftp的監聽端口
download_enable=yes|no //是否運行下載
userlist_enable=yes|no //是否啓用“禁止登陸用戶名單”
max_client=0 //最大客戶端連接數,0位不限制
anonymous_enable=yes| no //是否允許匿名用戶訪問
anon_upload_enable=yes|no //是否允許匿名用戶上傳文件
anon_umask=022 //匿名用戶上傳文件的umask值
anon_root=/var/ftp // 匿名用戶的ftp根目錄
anon_mkdir_write_enable=yes|no //是否開放匿名用戶創建目錄
anon_other_write_enable=yes|no //是否開放匿名用戶其他寫入權限
local_enable=yes|no //是否允許本地用戶登錄ftp
local_umask=022
local_root=/var/ftp
chroot_local_user=yes|no //是否將用戶權限禁錮在ftp目錄,安全
3. Vsftpd的三種驗證方式
匿名訪問:任何人無需驗證口令即可登錄ftp服務器。
本地用戶:使用ftp服務器中的賬號、密碼信息。
匿名用戶:創建的獨立的ftp賬號資料。
3.1 匿名訪問模式
vim /etc/vsftpd/vsftp.conf
-------------------------------------
anonymous_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enble=yes
anon_other_wite_enable=yes
write_enbale=yes
-----------------------------------------
服務器端:chown ftp /var/ftp/pub //修改pub目錄宿主
setenforce=0 //關閉selinux
vim /etc/selinux/conf
systemctl restart vsftpd
客服端配置:yun install ftp -y
ftp 192.168.100.10(服務器ip)
anonymous
3.2 本地用戶模式
vim /etc/vsftpd/vsftp.conf
-------------------------------------
anonymous_enable=no
local_enable=yes
write_enable=yes
userlist_deny=yes
userlist_enable=yes
pam_service_name=vsftpd
-----------------------------------------
systemctl restart vsftpd
useradd jerry && echo "jerry" | passwd --stdin jerry //添加userlist外的用戶
iptables -F
setenforce=0
--------------------------------
3.3 虛擬用戶模式(最安全)
3.3.1 建立虛擬FTP用戶數據庫文件
cd /etc/vsftpd
vim myvuser.list //單數行賬號 雙數爲密碼
Jerry
Jerry
db_load -T -t hash -f myvuser.list myvuser.db //使用dbload命令用hash算法生成數據庫文件myvuser.db
chmod 600 myvuser.db //修改權限
rm -f myvuser.list
3.3.2 創建FTP根目錄及虛擬用戶映射的系統用戶
useradd -d /var/ftproot -s /sbin/nologin virtual //創建默認文件根目錄/var/ftproot
ls -ld /var/ftproot/
chmod -Rf 755 /var/ftproot/
3.3.3 建立支持虛擬用的PAM認證文件
vim /etc/pam.d/vsftpd.u
auth required pam_userdb.so.db=/etc/vsftpd/myvuser //myvuser不加後綴
account required pam_userdb.so.db=/etc/vsftpd/myvuser
3.3.4 在vsftpd.conf文件中添加支持配置
---------- -------------------------------------
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu //指定pam文件
write_enable=YES
allow_writeable_chroot=YES //允許根目錄可寫
user_config_dir=/etc/vsftpd/myvusers_dir
-----------------------------------------------
3.3.5 爲虛擬用戶設置不同的權限
............................................................
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/myvusers_dir //創建用戶獨立權限配置文件存放目錄
cd /etc/vsftpd/myvusers_dir
vim Jerry //配置Jerry用戶的具體權限
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
......................................................................
3.3.6 重啓 vsftpd服務 systemctl restart vsftpd
4. 可插拔認證模塊PAM
PAM:Pluggable Authentication Modules一種認證機制
應用 -> PAM api (應用接口層) -> 模塊 (鑑別模塊層)
重要pam目錄:
/lib/security:pam //認證模塊
/etc/pam.d //針對不同服務定義好的pam配置文件