FTP連接及傳輸模式
- 控制連接:TCP 21 ,用於發送FTP命令信息
- 數據連接:TCP 20 ,用於上傳、下載數據
- 數據連接的建立類型:主動模式、被動模式
主動模式:服務器主動發起數據連接
- 首先由客戶端向服務端的21端口建立FTP控制連接
- 當需要傳輸數據時,客戶端以PORT命令告知服務器"我打開了某端口,你過來連接我" 於是服務器從20端口向客戶端的該端口發送請求並建立數據連接
被動模式:服務器被動等待數據連接
- 如果客戶端所在網絡防火牆禁止主動模式連接,通常會使用被動模式
- 當需要傳輸數據時,客戶端以PORT命令告訴服務器"我要連接你,你要被動等我",於是服務器告知客戶端"我打開了某端口,你過來連接我"於是客戶端向服務器的該端口(非20端口)發送請求並建立數據連接
PASV:被動
FTP連接及傳輸模式
- 客戶端與服務器建立好數據連接以后,就可以根據從控制連接中發送的FTP命令上傳或下載文件了。
- 在傳輸文件時,根據是否進行字符轉換,分為文本模式和二進制模式
- 文本模式:又稱為ASCII(American Standard Code for Information
Interchange,美國信息交換標准碼)模式,這種模式在傳輸文件時使用ASCII標准字符序列,一般指用於純文本文件的傳輸
- 二進制模式:又稱為Binary模式,這種模式不會轉換文件中的字符序列,更適合傳輸程序、圖片等非純文本字符的文件
- 使用二進制模式比純文本模 式更有效率,大多數FTP客戶端工具可以根據文件類型自動選擇文件的傳輸模式,而無需用戶手工指定
FTP用戶類型:
- 匿名用戶:用戶名為ftp或anonymous,提供任意密碼(包括空密碼)都可以通過服務器的驗證。一般用於公共文件的下載。
- 本地用戶:直接使用本地的系統用戶賬號進行驗證
- 虛擬賬戶:通過一份獨立的用戶數據庫文件進行登陸驗證,將FTP賬戶的關聯性降至最低,為系統提供更好的安全性
FTP服務器軟件的種類
- 在Windows系統中,常見的FTP服務器軟件包括FileZilla、Serv-U等
- 在Linux系統中,vsftp是目前在Linux/UNIX領域應用十分廣泛的一款FTP服務軟件
- Vsftpd服務的名稱來源於"Very Secure FTP Daemon",該軟件針對安全特性方面做了大量的設計。除了安全性以外,vsftp在速度和穩定性方面表現也相當突出
FTP客戶端工具的種類
- 最簡單的FTP客戶端工具莫過於FTP命令程序了
- 除此以外,還有大量的圖形化FTP客戶端工具。Windows8中較常用的包括CuteFTP、
FlashFXP、LeapFTP、Filezilla等
- 還有一些下載工具軟件,如FlashGet、Wget等,包括大多數網頁瀏覽器程序,都支持 通過FTP協議下載文件,但因不具備FTP上傳等管理功能,通常不稱為FTP客戶端工具
寫入權限:閥門理論
- 文件系統權限與服務配置權限需要同時滿足
- 文件系統權限高於服務配置權限
$(將里面的執行結果輸出)&> /dev/null 屏幕不顯示
搭建匿名訪問的FTP服務器
- 安裝vsftp軟件包
- 准備匿名FTP訪問的目錄
- 開放匿名用戶哦欸只並啟動vsftp服務
- 測試匿名FTP服務器
yum -y install vsftpd
chkconfig --level 2345 vsftpd on
netstat -anyup | grep "vsftpd"
cd /var/ftp/(pub) 匿名登陸的默認目錄(匿名用戶或其他人不能有寫權限)
把擁有者改成ftp 有寫權限
vi /etc/vsftpd/vsftpd.conf 配置文件
anonynous_enable=YES //匿名訪問
write_enable=YES //是否可寫入
anon_upload_enable=YES //匿名上傳
anon_mkdir_write_enable=YES //匿名創建目錄、
anon_other_write_enable=YES //除了創建目錄其他的寫權限(重命名)
登陸:
搭建用戶驗證的FTP服務
* 基本的本地用戶驗證
local_enable=YES
write_enable=YES
local_umask=077 //修改本地用戶默認權限掩碼為077
chroot_local_user=YES //開啟本地用戶的家目錄鎖定
userlist_enable=YES 啟動userlist文件
userlist_deny=YES (YES里面用戶無法登陸,NO里面用戶可以登錄)
·ftpusers與user_list用戶列表的使用
(1)ftpusers文件:FTP服務器中的黑名單,優先級高於user_list文件
(2)user_list文件:此用戶列表默認情況下也是黑名單,即在此用戶列表中的用戶不可訪問FTP服務器,但可以通過vsftpd.conf主配置文件的修改將此名單改為白名單,且僅此名單中的用戶可以訪問。
·使用user_list用戶列表文件(ftpusers只要里面出現的賬號就不能登陸)
vsftpd服務的其他常用配置
- 基於虛擬用戶的FTP服務
- 修改vsftpd服務的監聽地址、端口
- 允許使用FTP服務器的被動模式
- 限制FTP連接的並發數、傳輸速率
- 修改vsftpd服務的監聽地址、端口:
- netstat -antup | grep "vsftpd"
- 0.0.0.0 所有的IP地址
vi /etc/vsftpd/vsftpd.conf
listen_address=10.10.10.10
listen_port=222
pasv_enable=YES
pasv_min_port=24500
pasv_max_port=24600
max_client=200 (最大連接客戶端)
max_per_ip=2 (一個IP最多能打開多少個客戶端)
anon_max_rate=50000
local_max_rate=200000
修改vsftpd服務的監聽地址、端口
建立虛擬用戶的賬號數據庫:
vsftpd服務使用Berkeley
- DB格式的數據庫文件來存放虛擬用戶賬戶,建立這種數據庫文件需要用到db_load工具
- 步驟:
- 創建文本格式的用戶名、密碼列表
- 創建Berkeley DB格式的數據庫文件
- 添加虛擬用戶的映射賬號,創建FTP根目錄
/etc/vsftpd /
vi vusers.list
用戶名
密碼
用戶名
密碼
這些用戶在Linux中不存在
yum -y install db4-utils-*
db_load -T -t hash -f vusers.list vusers.db
注:db_load命令-T:允許非Berkeley的程序使用該數據庫-t:指定算法(hash:哈希,散列)-f:指定源文件注意:生成的數據庫文件必須為“.db”格式
## 一般吧數據文件和權限文件改為600只有超級用戶可讀可寫
## 添加虛擬用戶的映射賬號
useradd virtual -s /sbin/nologin -d /var/ftproot
chmod 755 /var/ftproot/
為vsftpd服務添加虛擬用戶支持
- 在vsftpd服務器中,用戶認證是通過PAM(Pluggable Authentication
- Module,可插拔認證模塊)機制來實現的,該機制包括靈活的選擇認證方式
- 步驟
- 為虛擬用戶建立PAM認證文件
- 修改vsftpd配置,添加虛擬用戶支持
- 為不同的虛擬用戶建立獨立的配置文件
- 測試
#cd /etc/pam.d
#cp -a su vsftpd.vu
#vim vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
#vi /etc/vsftpd/vsftpd.conf
·local_enable=YES
·guest_enable=YES
·guest_username=virtual
·anon_umask=022
·pam_service_name=vsftpd.vu
#實現每個虛擬用戶不同根目錄、不同權限的管控(1)創建用戶控制目錄,並創建虛擬所對應的同名配置文件
·mkdir /etc/vsftpd/vusers_dir/
·cd /etc/vsftpd/vusers_dir/
·vi ***
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_max_rate=1
local_root=/var/***
#chown virtual /var/***
·vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir
·/etc/init.d/vsftpd restart
其他配置:
- listen=YES 是否開啟監聽段口
- listen_address=10.10.10.10 監聽IP地址
- listen_port=2121 設置監聽端口
- pasv_enable=YES 是否開啟被動模式
- pasv_min_port=24500 被動模式端口下限
- pasv_max_port=24600 被動模式端口上限
- max_client=2000 最大*客戶連接數,一般不限制
- max_per_ip=2 每個IP限制最多打開幾個客戶端工具,一般不限制
- anon_max_rate=50000 匿名最大傳輸速率
- local_max_rate=20000 本地用戶最大傳輸速率,一般不限制