vsftd 模擬實驗

企業環境

司各部門(技術部tech、市場部market、人力部hr的資料、文件和鏡像軟件公佈,搭建FTP服務器,爲全公司提供相關文檔資料的下載。1、對所有互聯網提供開放共享目錄,允許下載文檔資料,禁止上傳和刪除;2、公司同事能夠使用FTP服務器進行本部門目錄的上傳和下載,但不可以刪除數據,本部門管理員除外3、保證服務器的穩定性,進行適當優化設置。
需求分析
根據企業的需求,對於不同用戶進行不同的權限限制,FTP服務器需要實現用戶的審覈。需考慮到服務器的安全性,所以關閉實體用戶登錄,使用虛擬帳號驗證機制,並對不同虛擬帳號設置不同的權限。爲了保證服務器的性能,還需要根據用戶的等級,限制客戶端的連接數及下載速度。
解決方案

I、開放目錄採用匿名用戶訪問:

主動模式: client 先連接服務器的 21端口(命令端口),然後client開放一個大於1024的端口等待服務器的20端口連接,21號端口的鏈接建立以後,服務器就用20去連接client開放的端口,簡單來說就是服務器主動連客戶端啦 基於上面的連接方式,如果client端有個防火牆,服務器的20端口就連接不進入,導致會連接失敗。 

被動模式:  就是client開啓大於1024X端口連接服務器的21(命令端口),同時開啓X+1端口 當21號端口連接成功後,client會發送PASV命令,通知服務器自己處於被動模式,服務器收到這個消息後,就會開放一個大於1024的端口Y通知clientclient接到通知後就會用X+1來連接服務器的Y端口,簡單的說就是client主動連接服務器 

關閉selinux,,開啓防火牆,添加規則允許端口通行

vi /etc/sysconfig/iptables

添加  

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 30000:31000 -j ACCEPT

二、設置被動模式開放端口

vi /etc/vsftpd/vsftpd.conf

pasv_min_port=30000

pasv_max_port=31000

三、修改匿名目錄

anon_root=/var/ftp/pub

默認爲/var/ftp,修改本地用戶ftp的主目錄即可。

重啓服務,登錄

注:ftp://ftp:ftp@serverip 這爲主動模式,有用戶名密碼驗證的

II、公司內部採用虛擬用戶訪問:
1、創建用戶數據庫
(1)創建用戶文本文件
先建立用戶文本文件vsftpd_virtualuser.txt,添加虛擬帳號
touch /etc/vsftpd/vsftpd_virtualuser.txt
vim /etc/vsftpd/vsftpd_virtualuser.txt
格式:
虛擬帳號1
密碼
虛擬帳號2
密碼

vtech1

123

vtech2

123

vhr1

123

vhr2

123

vmarket1

123

vmarket2

123 
保存退出哈~
(2)生成數據庫
保存虛擬帳號和密碼的文本文件無法被系統帳號直接調用哈~我們需要使用db_load命令生成db數據庫文件
db_load -T -t hash -f /etc/vsftpd_vsftpd/vsftpd_virtualuser.txt /etc/vsftpd/vsftpd_virtualuser.db
(3)修改數據庫文件訪問權限
數據庫文件中保存着虛擬帳號的密碼信息,爲了防止非法用戶盜取哈,我們可以修改該文件的訪問權限。生成的認證文件的權限應設置爲只對root用戶可讀可寫,即600
chmod 600 /etc/vsftpd/vsftpd_virtualuser.db
2、配置PAM文件
爲了使服務器能夠使用數據庫文件,對客戶端進行身份驗證,需要調用系統的PAM模塊.PAM(Plugable Authentication Module)爲可插拔認證模塊,不必重新安裝應用系統,通過修改指定的配置文件,調整對該程序的認證方式。PAM模塊配置文件路徑爲/etc/pam.d/目錄,此目錄下保存着大量與認證有關的配置文件,並以服務名稱命名。
修改vsftpd對應的PAM配置文件/etc/pam.d/vsftpd,將默認配置使用“#”全部註釋,添加相應字段。

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualuser

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualvuser

注:32位系統路徑爲

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualuser

account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualvuser

 
3、創建虛擬帳號對應的系統用戶
對於公共帳號和客戶帳號,因爲需要配置不同的權限,所以可以將虛擬帳號的目錄進行隔離,控制用戶的文件訪問。以技術部賬號vtech1/vtech2爲例,其它賬號同理。

vtech1/vtech2對應本地用戶爲tech,並指定其主目錄爲/var/ftp/tech

mkdir /var/ftp/tech

useradd -d /var/ftp/tech/ -s /sbin/nologin tech

chmod -R 700 /var/ftp/tech/ :虛擬賬號vtech1/vtech2允許上傳和下載,所以對tech目錄權限設置爲rwx,可讀可寫可執行。

注:虛擬用戶的權限是基於本地用戶,即虛擬用戶權限<=本地用戶權限。 

[root@boureneye vsftpd]# ll /var/ftp/

total 16

drwx------ 3 hr     hr     4096 Mar 20 00:54 hr

drwx------ 2 market market 4096 Mar 20 00:25 market

drwxr-xr-x 2 root   root   4096 Mar 20 00:58 pub

drwx------ 4 tech   tech   4096 Mar 20 00:36 tech   
4、建立配置文件
設置多個虛擬帳號的不同權限,若使用一個配置文件無法實現此功能,需要爲每個虛擬帳號建立獨立的配置文件,並根據需要進行相應的設置。
(1)修改vsftpd.conf主配置文件
配置主配置文件/etc/vsftpd/vsftpd.conf添加虛擬帳號的共同設置並添加user_config_dir字段,定義虛擬帳號的配置文件目錄
chroot_local_user=YES ;將所有本地用戶限制在家目錄中,NO則不限制
pam_service_name=vsftpd ;配置vsftpd使用的PAM模塊爲vsftpd,默認
user_config_dir=/etc/vsftpd/vuserconfig ;設置虛擬帳號的主目錄爲/vuserconfig 
max_clients=300 ;設置FTP服務器最大接入客戶端數爲300個 
max_per_ip=10 ;設置每個IP地址最大連接數爲10個
 
(2)建立虛擬帳號配置文件
在user_config_dir指定路徑下,建立與虛擬帳號同名的配置文件並添加相應的配置字段哈~
首先建立公共帳號vtech1/vtech2的配置文件

vi /etc/vsftpd/vuserconfig/vtech1
guest_enable=yes ;開啓虛擬帳號登錄 
guest_username=tech ;設置vtech1對應的系統帳號爲tech 
anon_world_readable_only=no ;允許匿名用戶瀏覽器整個服務器的文件系統 
write_enable=yes ;允許在文件系統寫入權限 
anon_mkdir_write_enable=yes ;允許創建文件夾 
anon_upload_enable=yes ;開啓匿名帳號的上傳功能 
anon_max_rate=100000 ;限定傳輸速度爲100KB/s

anon_other_write_enable=yes ;允許刪除,管理員權限

注意:
vsftpd對於文件傳輸速度限制並不是絕對鎖定在一個數值上哈,而是在80%~120%之間變化哈~比如設置100KB/s則實際是速度在80KB/s~120KB/s之間變化哈~

5、虛擬用戶目錄顯示匿名目錄,或者顯示其它目錄,可使用如下方法:
mkdir /var/ftp/hr/anonymous/

mount --bind /var/ftp/pub/ /var/ftp/hr/anonymous/


6、重啓vsftpd使配置生效,測試

注:顯示不出文件目錄時,重啓服務器。 

後記:以個人對公司FTP服務器的瞭解模擬實驗,不足之處,敬請諒解。

《完》

引用並感謝

http://bbs.51cto.com/thread-557955-1.html

 

 

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