歡迎您光臨本站 註冊首頁

vsftp的配置與使用

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

一、FTP的基本概念
1. FTP作用
FTP (文件傳輸協議)是TCP/IP協議棧所提供的一種子協議,該子協議具體可以實現在以下功能:
 從客戶向伺服器發送一個文件;從伺服器向客戶發送一個文件;
 從伺服器向客戶發送文件或目錄列表
2. FTP的工作體系
FTP工作在TCP/ip模型的第四層上,伺服器與客戶機之間利用TCP的21號埠傳送信號指令;利用20號埠用於傳送數據;具體工作過程如下:
(1) 客戶機啟動客戶端程序,通過TCP的“三次握手”建立伺服器的連接
(2) 伺服器對客戶機進行身份驗證
(3) 進行相應目錄操作和數據傳輸
(4) 斷開連接
3. FTP的數據傳輸模式
主動傳輸模式:
在這種模式下,伺服器向客戶端發起一個用於數據傳輸的連接,客戶端的連接埠是由伺服器和客戶端通過協商通過的
被動傳輸模式:
在這種模式下,客戶端向伺服器發起一個用於數據傳輸的連接,客戶端的連接埠是發起這個數據連接請求時使用的埠號
4. Linux下常見的FTP軟體
(1)wu-ftp
wu-ftp是歷史最久的非商業FTP伺服器軟體之一,主要有以下特點:
 可以限制最高訪問人數,以維持系統的最佳運行效率
 可以記錄文件上傳和下載的全過程
 可以支持匿名FTP服務
 可以支持虛擬FTP主機
 可以控制不同網段及其對FTP伺服器的存取許可權和訪問時段
(2)proftp
proftpd是在意圖修改wu-ftp一些不足情況下產生的,具體有如下特點:
 單配置文件,配置簡單
 基於單個目錄的.ftpaccess設置文件,類似apache的.htaccess文件


 可以設置為從xinetd啟動,或者是獨立ftp伺服器兩種運行方式
 強大的log功能
 支持以非root身份運行,從而減少了安全隱患
 支持匿名FTP功能
(3)vsftpd
 是一個安全、高速、穩定的FTP伺服器
 可設定多個基於IP的虛擬FTP伺服器
 匿名FTP伺服器更是十分容易
 不執行任何外部程序,從而減少了安全隱患
 支持虛擬用戶,且支持每個虛擬用戶具有獨立的配置
 可以設置為從xinetd啟動,或者是獨立FTP伺服器兩種運行方式
 支持PAM或xinetd/tcp_wrappers的認證方式
 支持帶寬限制

二.vsftp安裝與配置

1.軟體包:vsftpd-x.x.x-x.i386.rpm

2./etc/vsftpd/vsftpd.conf 主配置文件
/etc/vsftpd.ftpusers 指定哪些用戶不能訪問FTP伺服器
/etc/vsftpd.user_list 可以根據vsftpd.conf文件中的設置來決定該文件中指定的用戶是否可以訪問ftp伺服器
/etc/rc.d/init.d/vsftpd vsftpd的啟動腳本文件

3.vim /etc/vsftp/vsftpd.conf 中一些基本配置選項

anonymous_enable=YES|NO
控制是否允許匿名用戶登錄,YES允許,NO不允許,默認值為YES.
ftp_username= username
匿名用戶所使用的系統用戶名.默認下,此參數在配置文件中不出現,值為ftp
no_anon_password=YES|NO
控制匿名用戶登入時是否需要密碼,YES不需要,NO需要.默認值為NO.
anon_root=path
設定匿名用戶的根目錄,即匿名用戶登入后,被定位到此目錄下.主配置文件中默認無此項,默認值為/var/ftp/.
anon_world_readable_only=YES|NO
控制是否只允許匿名用戶下載可閱讀文檔.YES,只允許匿名用戶下載可閱讀的文件.NO,允許匿名用戶瀏覽整個伺服器的文件系統.默認值為YES.


anon_upload_enable=YES|NO
控制是否允許匿名用戶上傳文件,YES允許,NO不允許,默認是不設值,即為NO.除了這個參數外,匿名用戶要能上傳文件,還需要兩個條件:一,write_enable參數為YES;二,在文件系統上,FTP匿名用戶對某個目錄有寫許可權.
anon_mkdir_write_enable=YES|NO
控制是否允許匿名用戶創建新目錄,YES允許,NO不允許,默認是不設值,即為NO.當然在文件系統上,FTP匿名用戶必需對新目錄的上層目錄擁有寫許可權.
anon_other_write_enable=YES|NO
控制匿名用戶是否擁有除了上傳和新建目錄之外的其他許可權,如刪除、更名等.YES擁有,NO不擁有,默認值為NO.
chown_uploads=YES|NO
是否修改匿名用戶所上傳文件的所有權.YES,匿名用戶所上傳的文件的所有權將改為另外一個不同的用戶所有,用戶由chown_username參數指定.此選項默認值為NO.
chown_username=whoever
指定擁有匿名用戶上傳文件所有權的用戶

local_enable=YES|NO
控制vsftpd所在的系統的用戶是否可以登錄vsftpd.默認值為YES.
local_root=
定義所有本地用戶的根目錄.當本地用戶登入時,將被更換到此目錄下.默認值為無.
user_config_dir=
定義用戶個人配置文件所在的目錄.用戶的個人配置文件為該目錄下的同名文件

chroot_list_enable=YES|NO
鎖定某些用戶在自家目錄中.即當這些用戶登錄后,不可以轉到系統的其他目錄,只能在自家目錄(及其子目錄)下.具體的用戶在chroot_list_file參數所指定的文件中列出.默認值為NO.
chroot_list_file=/etc/vsftpd/chroot_list
指出被鎖定在自家目錄中的用戶的列表文件.文件格式為一行一用戶.通常該文件是/etc/vsftpd/chroot_list.此選項默認不設置.


chroot_local_users=YES|NO
將本地用戶鎖定在自家目錄中.當此項被激活時,chroot_list_enable和chroot_local_users參數的作用將發生變化,chroot_list_file所指定文件中的用戶將不被鎖定在自家目錄.本參數被激活后,可能帶來安全上的衝突,特別是當用戶擁有上傳、shell訪問等許可權時.因此,只有在確實了解的情況下,才可以打開此參數.默認值為NO.
passwd_chroot_enable =YES|NO
當此選項激活時,與chroot_local_user選項配合,chroot()容器的位置可以在每個用戶的基礎上指定.每個用戶的容器來源於/etc/passwd中每個用戶的自家目錄欄位.默認值為NO.

listen_address=ip address
定義了在主機的哪個IP地址上監聽FTP請求

listen_port=port_value
指定FTP伺服器監聽的埠號(控制埠),默認值為21.此選項在standalone模式下生效

port_enable=YES|NO
指定數據連接時模式,默認值為YES(PORT模式,NO為PASV模式)
connect_from_port_20=YES|NO
控制以PORT模式進行數據傳輸時是否使用20埠(ftp-data)

ftp_data_port=port number
設定ftp數據傳輸埠(ftp-data)值.默認值為20.此參數用於PORT FTP模式.

pasv_enable=YES|NO
YES,允許數據傳輸時使用PASV模式.NO,不允許使用PASV模式.默認值為YES.
pasv_min_port=port number
pasv_max_port=port number
設定在PASV模式下,建立數據傳輸所可以使用port範圍的下界和上界,0 表 示任意.默認值為0.把埠範圍設在比較高的一段範圍內,比如50000-60000,將有助於安全性的提高
pasv_address= ip address
此選項為一個數字IP地址,作為PASV命令的響應.默認值為none,即地址是從呼入的連接套接字(incoming connectd socket)中獲取.

ascii_upload_enable=YES|NO
控制是否允許使用ascii模式上傳文件,YES允許,NO不允許,默認為NO
ascii_download_enable=YES|NO
控制是否允許使用ascii模式下載文件,YES允許,NO不允許,默認為NO.

idle_session_timeout= numerical value
空閑用戶會話的超時時間,若是超出這時間沒有數據的傳送或是指令的輸入,則會強迫斷線.單位為秒,默認值為300.
data_connection_timeout= numerical value
空閑的數據連接的超時時間.默認值為300 秒.
accept_timeout=numerical value
接受建立聯機的超時設定,單位為秒.默認值為60.
connect_timeout=numerical value
響應PORT方式的數據聯機的超時設定,單位為秒.默認值為60

max_clients=numerical value
此參數在VSFTPD使用單獨(standalone)模式下有效.此參數定義了FTP伺服器最大的併發連接數,當超過此連接數時,伺服器拒絕客戶端連接.默認值為0,表示不限最大連接數.
max_per_ip=numerical value
此參數在VSFTPD使用單獨(standalone)模式下有效.此參數定義每個IP地址最大的併發連接數目.超過這個數目將會拒絕連接.此選項的設置將影響到象網際快車這類的多進程下載軟體.默認值為0,表示不限制.
anon_max_rate=value
設定匿名用戶的最大數據傳輸速度value,以Bytes/s為單位.默認無.
local_max_rate=value
設定用戶的最大數據傳輸速度value,以Bytes/s為單位.默認無.

三.功能實現,以案例為主

案例一:利用vsftpd配置一台支持匿名用戶和本地用戶登錄,具體要求如下:
 允許匿名用戶登錄和本地用戶登錄
 禁止匿名用戶上傳
 允許本地用戶上傳和下載,且鎖定本地用戶主目錄,允許用戶刪除用戶主目錄的文件


 建立用戶組ftpusers,同時建立用戶ftp1,ftp2屬於ftpusers組,並設置用戶的主目錄為/soft
 設置/soft目錄允許ftpusers組中的用戶可以寫入,但不能刪除目錄中的非自己擁有的文件
 本地用戶的文件生成掩碼為022
 空閑的會話時間為600秒,空閑數據連接時間為60秒,自動中斷時間為30秒,自動激活時間為10秒
 本地用戶的最大傳輸速率為50000b/s,匿名用戶的最大傳輸速率為30000b/s
 客戶端的連接埠為5000-6000(被動模式中使用)
 使用獨佔啟動方式,偵聽192.168.5.1介面的21號埠
 禁止192.168.5.128主機訪問FTP伺服器
 併發連接的客戶數為300,每台客戶機的最大連接為5
1. 安裝相關軟體包
#yum install vsftpd

2.修改/etc/vsftpd/vsftpd.conf
#vim /etc/vsftpd/vsftpd.conf
修改如下:
anonymous_enable=yes
local_enable=yes
anon_upload_enable=no
write_enable=yes
local_mask=022
idle_session_timeout=600
data_connection_timeout=60
accept_timeout=30
connect_timeout=10
local_max_rate=50000
anon_max_rate=30000
pasv_min_port=5000
pasv_max_port=6000
chroot_local_user=yes
listen=yes
listen_address=192.168.5.1
listen_port=21
max_clients=300
max_per_ip=5
3.創建相關用戶組和用戶
#mkdir /soft
#chmod 1777 /soft
#groupadd ftpusers
#useradd -d /soft -g ftpusers ftp1
#passwd ftp1
#useradd -d /soft -g ftpusers ftp2
#passwd ftp2
4. 設置hosts.allow文件
#vi /etc/hosts.allow
vsftpd:192.168.5.128:DENY
5. 啟動服務
#service vsftpd start
6.進行實驗效果驗證,用新添加的用戶進行家目錄的訪問

案例二:利用VSFTPD配置一台支持虛擬用戶登錄的FTP伺服器,具體要求如下:
 支持本地用戶和虛擬用戶登錄,不允許匿名用戶登錄
 允許本地用戶任意寫入
 鎖定本地用戶的用戶主目錄
 建立虛擬用戶vftp1,vftp2都對應本地用戶guest,且虛擬用戶在用戶主目錄中可以寫入,但不能刪除
 設置客戶端連接時的埠為5000-6000
 最大空閑會話時間長度為600秒
 設置空閑數據連接的中斷時間為200秒
 設置客戶端空閑時的自動中斷時間為100秒和激活連接的時間為30秒
 本地用戶的最大傳輸速率為2MB/s
 使用獨佔啟動方式,偵聽192.168.5.1介面的21號埠
 設置伺服器的併發連接總數為200
 每個客戶機的併發連接總量為5
 允許192.168.5.0/24網段內的主機訪問
所謂虛擬用戶:與系統無關聯,不能登入系統,只能訪問FTP伺服器

配置過程:
1. 安裝相關軟體
#yum install vsftpd

2. 修改/etc/vsftpd/vsftpd.conf文件
#vi m /etc/vsftpd/vsftpd.conf
修改內容如下:
anonymous_enable=no
local_enable=yes
guest_enable=yes
guest_username=guest
write_enable=yes
chroot_local_user=yes
pam_service_name=ftp
idle_session_timeout=600
data_connection_timeout=200
accept_timeout=100
connect_timeout=30
local_max_rate=20000
pasv_min_port=5000
pasv_max_port=6000
listen=yes
listen_address=192.168.5.1
listen_port=21
3. 建立相關用戶
#useradd guest
#passwd guest
#chmod 1777 /home/guest
//建立虛擬用戶所對應的本地用戶


#vi /etc/vsftpd/vlogin.txt //建立虛擬用戶文件
添加如下內容:
vftp1 (用戶名)
123 (密 碼)
vftp2
123

4.生成口令庫文件,運行db_load之前先安裝db4-utils的RPM包

#yum -y install db4 db4-tcl db4-utils
#db_load -T -t hash -f /etc/vsftpd/vlogin.txt /etc/vsftpd/vlogin.db
#chmod 600 /etc/vsftpd/vlogin.db
5. 設置PAM驗證
#cp /etc/pam.d/vsftpd /etc/pam.d/ftp
#vim /etc/pam.d/ftp
添加如下內容:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vlogin
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vlogin
6. 設置主機訪問控制
#vim /etc/hosts.allow
添加如下內容:
vsftpd:192.168.5.0/24:ALLOW
7. 啟動服務
#service vsftpd start

8.實驗效果驗證:用虛擬用戶進行登錄

本文出自 「Linux Study」 博客,請務必保留此出處http://chenxizhuimeng.blog.51cto.com/2516314/509303


[火星人 ] vsftp的配置與使用已經有378次圍觀

http://coctec.com/docs/linux/show-post-49296.html