Linux下的Vsftpd配置篇

 

1.         主動與被動模式
1)         主動模式(PORT方式)
連接過程爲:客戶端向服務器FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶端在命令鏈路上用PORT命令告訴服務器:我打開了XX端口,你過來連接我,於是服務器從20號端口向客戶端的XX端口發送連接請求,建立一條數據鏈路來傳送數據。
2)         被動模式(PASV方式)
連接過程爲:客戶端向服務器FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務器在命令鏈路上用PASV命令告訴客戶端:我打開了XX端口,你過來連接我,於是客戶端向服務器的XX端口發送連接請求,建立一條數據鏈路來傳送數據。
2.         安裝
1)         查看是否安裝
打開命令行,輸入rpm -q vsftpd,出現:
Ø 已經安裝

Ø 還沒安裝

2)         安裝
Ø 載入光盤

Ø 設置光盤

單擊虛擬機右下角的光盤圖標,選擇Settings,在Device status中將Connected勾選,在Connection中選擇Use ISO image file,然後單擊Browse選擇Linux的安裝包,單擊OK
Ø 安裝

安裝完成
3.         文件結構與配置文件
1)         文件結構

配置文件名
功能
/usr/sbin/vsftpd
vsftpd的主程序
/etc/rc.d/init.d/vsftpd
啓動腳本
/etc/vsftpd/vsftpd.conf
主配置文件
/etc/pam.d/vsftpd
PAM認證文件
/etc/vsftpd.ftpusers
禁止使用vsftpd的用戶列表文件
/etc/vsftpd.user_list
禁止或允許使用vsftpd的用戶列表文件
/var/ftp
匿名用戶主目錄
/var/ftp/pub
匿名用戶的下載目錄
/etc/logrotate.d/vsftpd.log
vsftpd的日誌文件
2)         配置文件
Ø 查看

 

以#號開頭的爲註釋,這裏把非配置參數註釋都去掉了
Ø 參數含義

參數
含義
anonymous_enable=YES
是否允許使用匿名賬戶
local_enable=YES
是否允許本地用戶登錄
write_enable=YES
是否允許寫入
local_umask=022
本地umask值爲022
#anon_upload_enable=YES
匿名用戶是否可上傳文件
#anon_mkdir_write_enable=YES
匿名用戶是否可建立目錄
dirmessage_enable=YES
進入每個目錄顯示歡迎信息,在每個目錄下建立.message文件在裏面寫歡迎信息
xferlog_enable=YES
上傳/下載文件時記錄日誌
connect_from_port_20=YES
是否使用20端口傳輸數據(是否使用主動模式)
#chown_uploads=YES
修改匿名用戶上傳的文件,文件的擁有者
#chown_username=whoever
#xferlog_file=/var/log/xferlog
日誌文件
xferlog_std_format=YES
使用標準文件日誌
#idle_session_timeout=600
會話超時,客戶端連接到ftp但未操作
#data_connection_timeout=120
數據傳輸超時
#nopriv_user=ftpsecure
指定vsftpd服務的運行帳戶,不指定時使用ftp
#async_abor_enable=YES
是否允許客戶端使用sync等命令
#ascii_upload_enable=YES
是否允許上傳/下載二進制文件
#ascii_download_enable=YES
#ftpd_banner=Welcome to blah FTP service.
登錄提示語
#deny_email_enable=YES
拒絕使用banned_email_file參數指定文件中所列出的e-mail地址進行登錄的匿名用戶。即,當匿名用戶使用banned_email_file文件中所列出的e-mail進行登錄時,被拒絕。
#banned_email_file=/etc/vsftpd/banned_emails
#chroot_list_enable=YES
鎖定登陸用戶在其主目錄,將用戶名一個一行寫在/etc/vsftpd/chroot_list文件裏,使用此方法時必須chroot_local_user=YES
#chroot_list_file=/etc/vsftpd/chroot_list
#ls_recurse_enable=YES
是否允許使用ls -R等命令
listen=YES
開啓ipv4監聽
#listen_ipv6=YES
開啓ipv6監聽
pam_service_name=vsftpd
使用pam模塊控制,vsftpd文件在/etc/pam.d目錄下
userlist_enable=YES
與其他中userlist_deny=YES共同控制訪問用戶,詳見userlist_deny=YES參數含義
tcp_wrappers=YES
是否允許tcp_wrappers管理
其他
listen_address=ip address
指定偵聽IP
listen_port=port_value
指定偵聽端口,默認21
chroot_local_user=YES
限制所有的本地用戶在自家目錄
userlist_deny=YES
決定禁止還是隻允許由userlist_file指定文件中的用戶登錄FTP服務器。此選項在userlist_enable選項啓動後才生效。YES爲默認值,禁止文件中的用戶登錄,同時也不向這些用戶發出輸入密碼的提示。NO表示只允許在文件中的用戶登錄FTP服務器
local_root=/home/ftp
所有用戶的根目錄,對匿名用戶無效
anon_max_rate=value
匿名用戶的最大傳輸速度,單位是Byts/s
local_max_rate=value
本地用戶的最大傳輸速度,單位是Byts/s
download_enable=YES
是否允許下載
3)         連接信息

代碼
含義
代碼
含義
110
重新啓動標記應答
120
服務在多久時間內ready
125
數據鏈路埠開啓,準備傳送
150
文件狀態正常,開啓數據連接端口
200
命令執行成功
202
命令執行失敗
211
系統狀態或是系統求助響應
212
目錄的狀態
213
文件的狀態
214
求助的信息
215
名稱系統類型
220
新的聯機服務ready
221
服務的控制連接埠關閉,可以註銷
225
數據連結開啓,但無傳輸動作
226
關閉數據連接端口,請求的文件操作成功
227
進入passive mode
230
使用者登錄
250
請求的文件操作完成
257
顯示目前的路徑名稱
331
用戶名稱正確,需要密碼
332
登入時需要賬號信息
350
請求的操作需要進一部的命令
421
無法提供服務,關閉控制連結
425
無法開啓數據鏈路
426
關閉聯機,終止傳輸
450
請求的操作未執行
451
命令終止:有本地的錯誤
452
未執行命令:磁盤空間不足
500
格式錯誤,無法識別命令
501
參數語法錯誤
502
命令執行失敗
503
命令順序錯誤
504
命令所接的參數不正確
530
未登錄
532
儲存文件需要賬戶登錄
550
未執行請求的操作
551
請求的命令終止,類型未知
552
請求的文件終止,儲存位溢出
553
未執行請求的的命令,名稱不正確
 
 
4.         配置
1)         匿名用戶登錄FTP
Ø 配置

安裝完成後,service vsftpd start啓動服務
Ø 測試

在XP下連接FTP,可以看到登陸成功,用戶名爲ftp,即爲匿名用戶,anonymous也爲匿名用戶,vsFTP默認的配置匿名用戶就可登錄
2)         實名用戶登錄FTP
Ø 配置

mkdir -p /var/ftp/pub/zwb:建立用戶登錄根目錄
useradd -G ftp -d /var/ftp/pub/zwb -M zwb:建立實名用戶
passwd zwb:設置實名用戶登錄密碼
Ø 測試

3)         只允許匿名登錄,不允許實名登錄
Ø 配置
修改配置文件

 

將local_enable=YES改爲NO,保存退出
重啓服務

Ø 測試

4)         不允許匿名登錄,只允許實名登錄
Ø 配置
修改配置文件

 

將local_enable=NO改爲YES,anonymous_enable=YES改爲NO,退出保存
重啓服務

Ø 測試

5)         黑、白名單
Ø 黑名單
配置
修改配置文件

 

anonymous_enable=NO改爲anonymous_enable=YES,還原初始配置
添加黑名單

將zwb用戶追加進黑名單
測試

zwb用戶登錄失敗
Ø 白名單
配置
還原設置

 

將上面追加進黑名單的用戶zwb移除並保存退出
設置白名單

 

添加userlist_deny=NO與userlist_file=/etc/vsftpd/user_list這2行
添加白名單

 

除user_list裏的用戶外,都不可登陸
重啓服務

測試

6)         限制客戶數
Ø 配置
還原設置
還原白名單

 

將上面追加進黑名單的用戶zwb移除並保存退出
還原配置文件

 

去掉userlist_deny=NO與userlist_file=/etc/vsftpd/user_list
修改配置文件

 

添加max_clients=1,指明最大客戶連接數量爲1
重啓服務

Ø 測試

ftp用戶登錄成功,不要退出,再次開啓一個命令行

在纔開啓的命令行上連接FTP,錯誤代碼421,提示There are too many connected users,please try later(有太多的用戶連接,稍後再試),使用zwb用戶登錄Connection closed by remote host(遠程主機連接關閉)
7)         速率限制
Ø 匿名用戶與實名用戶速率限制
配置
還原設置

 

去掉max_clients=1
修改配置文件

 

單位爲bytes,local_max_rate表示實名用戶的下載速度,anon_max_rate表示匿名用戶的下載速度
重啓服務

測試
創建測試文件

dd if=/dev/zero of=get_test bs=126k count=1創建一個大小爲126k的文件,用0填滿,作爲測試文件,實際創建了一個129k的文件
測試

zwb用戶用時爲0.77Seconds,速率爲168.44Kbytes/sec。ftp用戶用時爲6.20Seconds,速率爲20.80Kbytes/sec
Ø 不同實名用戶分等級下載限制
配置
還原設置

 

去掉local_max_rate與anon_max_rate

添加用戶

建立zzj用戶的用戶根目錄,添加zzj用戶,設置zzj用戶密碼
修改配置文件

 

添加user_config_dir=/etc/vsftpd,設置用戶配置目錄
添加用戶配置文件
爲zwb用戶添加配置文件

 

爲zzj用戶添加配置文件

 

重啓服務

測試

zwb用戶用時爲0.78Seconds,速率爲165.20Kbytes/sec。zzj用戶用時爲6.20Seconds,速率爲20.80Kbytes/sec
8)         上傳
Ø 匿名用戶上傳
配置
還原設置

 

把user_config_dir=/etc/vsftpd去掉
修改配置文件

 

取消anon_upload_enable=YES與anon_mkdir_write_enable=YES前的註釋,添加anon_other_write_enable=YES,表示允許文件改名、刪除
權限配置

chmod -R 777 pub:
將pub目錄改爲777的權限
chcon -R -t public_content_rw_t pub:
將pub目錄的文件類型改爲public_content_rw_t
getsebool -a | grep ftp:
查看sebool值中關於ftp的值
setsebool -P allow_ftpd_anon_write on:
修改sebool中allow_ftpd_anon_write的值爲on
重啓服務

測試
創建測試文件

測試

匿名用戶需要上傳在pub目錄下
Ø 實名用戶上傳
配置
還原設置
還原配置文件
將anonymous_enable=YES註釋

將anon_upload_enable=YES與anon_mkdir_write_enable=YES註釋
還原sebool值

設置sebool值

設置用戶根目錄權限

將用戶主目錄/var/ftp/pub/zwb改成777的權限
重啓服務

測試

9)         更改默認共享目錄
Ø 配置
還原設置

 

修改配置文件

 

重啓服務

創建實名用戶根目錄

修改目錄類型

Ø 測試
創建文件

測試

實名用戶登錄後ls可以看到文件A,證明在/home/zwb文件目錄下,或者可以使用pwd命令,查看當前所在目錄

匿名用戶ftp登錄後,ls可以看到文件B,證明在/home文件目錄下
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章