redhat linux 5 ftp

FTP
早起三大網絡應用 ftp http mail
FTP的全稱file transfer protocol 文件傳輸協議
40年之前出現的
缺點:明文傳輸  比較麻煩
FTP 採用雙TCP連接方式  C/S模型
控制連接使用TCP端口號21
數據連接使用TCP端口號20

控制連接: 用於在FTP客戶端和FTP服務器之間傳輸FTP控制命令及命令執行信息。控制連接在整個FTP會話期間一直保持打開

數據連接
用於傳輸數據,包括數據上傳、下載、文件列表發送等。數據傳輸結束後數據連接將終止 粒度

FTP採用兩種數據傳輸方式:
主動方式:PORT
被動方式:PASV
站在服務器角度看,由客戶端選擇的

FTP有兩種文件傳輸模式:
ASCII模式:默認的文件傳輸模式,特點:本地文件轉換成標準的ASCII碼在傳輸。適用於傳輸文本文件
二進制模式: 圖像文件傳輸模式,特點是文件按照比特流的方式進行傳輸,適用於傳送程序文件。一般默認是二進制模式
文本模式和二進制模式的區別
文本傳輸器使用ASCII字符,並由回車鍵和換行符分開,而二進制不用轉換或格式化就可傳字符,二進制模式比文本模式更快,並且可以傳輸所有ASCII值,所以系統管理員一般將FTP設置成二進制模式。

二進制模式用來傳送可執行文件,壓縮文件,和圖片文件。如果你用ASCII模式傳,會顯示一堆亂碼,你必須重新用BINARY模式傳。用HTML和文本編寫的文件必須用ASCII模式上傳,用BINARY模式上傳會破壞文件,導致文件執行出錯。?
啓用ASCII 傳輸方式
默認情況下,vsftpd 爲了提高傳輸效率,禁止了ASCII 傳輸方式。雖然在ftp 客戶軟件中可以使用asc命令,但是傳輸文件時仍然使用二進制傳輸方式。
可以分別啓用上傳和下載的ASCII 傳輸方式,方法是編輯/etc/vsftpd 配置文件,將如下兩行前的#去掉即可啓用。
#ascii_upload_enable =YES
#ascii_download_enable=YES
常見的FTP服務器程序
IIS  Serv-U Filezilla 用於windows
wu-ftpd     Proftpd比較常用
vsftpd (Very Secure  FTP Daemon)linux中默認的FtP
常見的FtP客戶端程序:
ftp命令 ie  chrome
CuteFTP   FlashFXP用的比較多,通信加密   LeapFTP Filezilla
gftp  kuftp

vsftpd 特性:高速,穩定,與生俱來的安全性能高
 大小:140kB
速度方面:它是wu-FTPd的兩倍
穩定性方面:在單機支持4000個以上的併發用戶同時連接

功能:支持基於IP的虛擬FTP服務器
      支持虛擬用戶
      支持PAM或xinetd/tcp_wrappers的認證方式
      支持兩種運行方式:獨立和Xinetd
      支持每個虛擬用戶具有獨立的配置
      支持帶寬限制等

FTP用戶類型:匿名用戶:anonymous或ftp
 本地用戶:賬號名稱,密碼等信息保存在passwd shadow文件中
虛擬用戶:使用獨立的賬號/密碼數據文件
user_list zhangsan 123456 /var/pub

vsftpd 軟件包
官方網站:http://vsftpd.beasts.org/
主程序:/usr/sbin/vsftpd
服務名:vsftpd
用戶控制列表文件:/etc/vsftpd/ftpusers禁止登錄用戶列表
                  /etc/vsftpd/usr_list僅提供一個用戶列表,是否禁用在配置文件中設置
配置文件:/etc/vsftpd/vsftpd.conf

配置基本的性能和安全選項
1. 設置空閒的用戶會話的中斷時間
例如下面的配置:
idle_session_timeout=600
將在用戶會話空閒10 分鐘後被中斷。
2. 設置空閒的數據連接的的中斷時間
例如下面的配置:
data_connection_timeout=120
將在數據連接空閒2 分鐘後被中斷。
3. 設置客戶端空閒時的自動中斷和激活連接的時間
例如下面的配置:
accept_timeout=60
connect_timeout=60
將使客戶端空閒1 分鐘後自動中斷連接,並在中斷1 分鐘後自動激活連接。

設置連接服務器後的歡迎信息
爲了使用戶連接服務器後顯示信息,vsftpd 提供了兩個選項,分別是:
ftpd_banner
banner_file
例如:可以設置如下的ftpd_banner 選項的值:
banner_enable=Welcome to wnt FTP service.
即:用戶連接服務器後顯示信息“Welcome to wnt FTP service.”。
也可以設置如下的banner_file 選項的值:
banner_file=/var/vsftpd_banner_file
即:用戶連接服務器後顯示文件/var/vsftpd_banner_file 中的信息。


設置最大傳輸速率限制
例如下面的配置:
local_max_rate=50000
anon_max_rate=30000
將使本地用戶的最大傳輸速率爲50kbytes/sec,匿名用戶的傳輸速率爲30kbytes/sec。
5. 設置客戶端連接時的端口範圍
例如下面的配置:
pasv_min_port=50000
pasv_max_port=60000
將使客戶端連接時的端口範圍在50000 和60000 之間。這提高了系統的安全性。

配置基於本地用戶的訪問控制
要配置基於本地用戶的訪問控制,可以通過修改vsftpd 的主配置文件/etc/vsftpd.conf 來進行,有如下兩種限制方法:
1. 限制指定的本地用戶不能訪問,而其他本地用戶可訪問
例如下面的設置:
userlist_enable=YES
userlist_deny=YES
userlist_file= /etc/vsftpd.user_list
使文件/etc/vsftpd.user_list 中指定的本地用戶不能訪問FTP 服務器,而其他本地用戶可訪問FTP服務器。

2. 限制指定的本地用戶可以訪問,而其他本地用戶不可訪問
例如下面的設置:
userlist_enable= YES
userlist_deny=NO
userlist_file= /etc/vsftpd.user_list
使文件/etc/vsftpd.user_list 中指定的本地用戶可以訪問FTP 服務器,而其他本地用戶不可以訪問FTP服務器。

在默認配置中,本地用戶可以切換到自家目錄以外的目錄進行瀏覽,並在權限許可的範圍內進行下載和上傳。這樣的設置對於一個FTP 服務器來說是不安全的。
如果希望用戶登錄後不能切換到自家目錄以外的目錄,則需要設置chroot 選項,涉及如:
chroot_local_user
chroot_list_enable
chroot_list_file
有兩種設置chroot 的方法:
(1)設置所有的本地用戶執行chroot
只要將chroot_local_user 的值設爲YES 即可,即:
chroot_local_user=YES
(2)設置指定的用戶執行chroot
需要如下的設置:
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file= /etc/vsftpd.chroot_list  
這樣,/etc/vsftpd.chroot_list 文件中指定的用戶不能執行chroot。
構建基於虛擬用戶的vsftpd服務器
1.建立虛擬FTP用戶的帳號數據庫文件
建立虛擬用戶的賬戶名、密碼列表
 奇數行爲帳號名
 偶數行爲上一行中帳號的密碼
轉化爲Berkeley DB格式的數據文件
 db_load 轉換工具
 需安裝 db4-utils-4.3.29-9.fc6.i386.rpm 軟件包
[root@filesvr ~]# vi /etc/vsftpd/vusers.list
mike
123
john
456
[root@filesvr ~]# cd /etc/vsftpd/
[root@filesvr vsftpd]# db_load -T -t hash -f vusers.list   vusers.db
[root@filesvr vsftpd]# file vusers.db
vusers.db: Berkeley DB (Hash, version 8, native byte-order)
[root@filesvr vsftpd]# chown 600 /etc/vsftpd/vusers.*

2.創建FTP根目錄及虛擬用戶映射的系統用戶
[root@filesvr ~]# mkdir /var/ftproot
[root@filesvr ~]# useradd -d / var/ftproot -s / sbin/nologin virtual
[root@filesvr ~]# chmod 755 /var/ftproot/

3.建立支持虛擬用戶的PAM認證文件
[root@filesvr ~]# 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@filesvr ~]# vi  /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_umask=022
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu

5.爲個別虛擬用戶建立獨立的配置文件
在vsftpd.conf文件中添加用戶配置目錄支持
 user_config_dir=/etc/vsftpd/vusers_dir
爲用戶mike、john建立獨立的配置目錄及文件
 配置文件名與用戶名同名
[root@filesvr ~]# mkdir /etc/vsftpd/vusers_dir/
[root@filesvr ~]# cd /etc/vsftpd/vusers_dir/
[root@filesvr vusers_dir]# touch mike
[root@filesvr vusers_dir]# vi john
anon_upload_enable=YES
anon_mkdir_write_enable=YES
6.重新加載vsftpd配置
service vsftpd reload

7.使用虛擬FTP賬戶訪問測試
分別用mike、john用戶登錄FTP服務器進行下載、上傳測試
 mike用戶可以登錄,並可以瀏覽、下載文件,但無法上傳
 john用戶可以登錄,並可以瀏覽、下載文件,也可以上傳
 匿名用戶或其他系統用戶將不能登錄

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章