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
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配置檔案