一.FTP工作模式
主動模式
1. 第一步,客戶機隨機開啓大於1024的端口與服務器的21端口建立連接通道。
2. 第二步,當客戶機需要與服務器進行數據傳輸時,客戶端會在開啓一個大於1024的隨機端口Y,並將Y端口號通過之前的命令通道傳送給服務器的21端口。
3. 第三步,服務器獲取到客戶端的第二個端口後會主動連接客戶端的該端口,通過三次握手後,完成服務器與客戶端數據通道的建立,所有的數據均通過該數據通道進行傳輸。
被動模式
1. 第一步,客戶端隨意開啓大於1024的X端口與服務器的21端口建立連接通道。
2. 第二步,當客戶端需要與服務器進行數據傳輸時,客戶端從命令通道發送數據請求上傳或下載 數據。
3. 第三步,服務器收到數據請求後會隨機開啓一個端口Y,並通過命令通道將該端口信息傳送給 客戶端。
4. 第四步,客戶端在收到服務器發送過來的數據端口Y的信息後,將在客戶端本地開啓一個隨機端口Z,此時客戶端在主動通過本機的Z端口與服務器的Y端口進行連接,通過三次握手完成後,即可進行數據傳輸。
5.
二.安裝與管理vsftpd
rpm –ivh vsftpd
service vsftpdstart
chkconfig vsftpdon
一.配置文件解析
Vsftpd配置文件默認位於/etc/vsftpd目錄下
常用的全局配置項
listen=YES:是否以獨立運行的方式監聽服務
listen_address=192.168.4.1:設置監聽的 IP 地址
listen_port=21:設置監聽 FTP 服務的端口號
write_enable=YES:是否啓用寫入權限
download_enable=YES:是否允許下載文件
userlist_enable=YES:是否啓用 user_list 列表文件
userlist_deny=YES:是否禁用 user_list 中的用戶
max_clients=0:限制併發客戶端連接數
max_per_ip=0:限制同一 IP 地址的併發連接數
常用的匿名 FTP 配置項
anonymous_enable=YES:啓用匿名訪問
anon_umask=022:匿名用戶所上傳文件的權限掩碼
anon_root=/var/ftp:匿名用戶的 FTP 根目錄
anon_upload_enable=YES:允許上傳文件
anon_mkdir_write_enable=YES:允許創建目錄
anon_other_write_enable=YES:開放其他寫入權
anon_max_rate=0:限制最大傳輸速率(字節/秒)
常用的本地用戶 FTP 配置項
local_enable=YES:是否啓用本地系統用戶
local_umask=022:本地用戶所上傳文件的權限掩碼
local_root=/var/ftp:設置本地用戶的 FTP 根目錄
chroot_local_user=YES:是否將用戶禁錮在主目錄
local_max_rate=0:限制最大傳輸速率(字節/秒)
五.本地賬戶FTP(案例一)
1.修改配置文件如下
anmous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
xferlog_std_fromat=YES
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
2.創建系統賬戶與測試文件
useradd –s /sbin/nologin tom
useradd –s /sbin/nologin jerry
useradd –s /sbin/nologin smith
touch home/{tom,jerry,smith}/test.txt
3.服務管理
Servicevsftpd start
一.虛擬用戶FTP(案例二)
創建虛擬用戶數據庫
首先需要創建明文密碼文件,文件中奇數行爲用戶名,偶數行爲密碼。然後使用db_load工具將其轉換爲數據庫文件,db_load工具需要通過安裝db4—utils軟件獲得,最後通過修改文件權限以增強數據資料的安全性。
[root@localhost]# vi /etc/vsftpd/vusers.list
mike
123
john
456
[root@localhost]# cd /etc/vsftpd/
[root@localhost vsftpd]# db_load -T -t hash -f vusers.list vusers.db
[root@localhost vsftpd]# file vusers.db
vusers.db: Berkeley DB (Hash, version 9, native byte-order)
[root@localhost vsftpd]# chmod 600 /etc/vsftpd/vusers.*
[root@localhost vsftpd]# ls -lh /etc/vsftpd/vusers.*
-rw------- 1 root root 12K 6月27 08:51 /etc/vsftpd/vusers.db
-rw------- 1 root root 18 6月27 08:48 /etc/vsftpd/vusers.list
2.創建 FTP 根目錄及虛擬用戶映射的系統用戶
[root@localhost]# useradd -d /var/ftproot -s /sbin/nologin virtual
[root@localhost]# chmod 755 /var/ftproot/
3.建立支持虛擬用戶的 PAM 認證文件
[root@localhost]# vi /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
4.在 vsftpd.conf 文件中添加支持配置
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
……
local_enable=YES
write_enable=YES
anon_umask=022
guest_enable=YES //啓用用戶映射功能
guest_username=virtual //指定映射的系統用戶名稱
pam_service_name=vsftpd.vu //指定新的PAM認證文件
5.爲不同的虛擬用戶建立獨立的配置文件
在 vsftpd.conf 文件中添加用戶配置目錄支持
user_config_dir=/etc/vsftpd/vusers_dir
爲用戶 mike、john 建立獨立的配置目錄及文件
配置文件名與用戶名相同
[root@localhost ~]# mkdir /etc/vsftpd/vusers_dir/
[root@localhost ~]# cd /etc/vsftpd/vusers_dir/
[root@localhost vusers_dir]# vi john
anon_upload_enable=YES
anon_mkdir_write_enable=YES
[root@localhost vusers_dir]# touch mike