一.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
……
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