企業環境
公司各部門(技術部tech、市場部market、人力部hr)的資料、文件和鏡像軟件公佈,搭建FTP服務器,爲全公司提供相關文檔資料的下載。1、對所有互聯網提供開放共享目錄,允許下載文檔資料,禁止上傳和刪除;2、公司同事能夠使用FTP服務器進行本部門目錄的上傳和下載,但不可以刪除數據,本部門管理員除外;3、保證服務器的穩定性,進行適當優化設置。
需求分析
根據企業的需求,對於不同用戶進行不同的權限限制,FTP服務器需要實現用戶的審覈。需考慮到服務器的安全性,所以關閉實體用戶登錄,使用虛擬帳號驗證機制,並對不同虛擬帳號設置不同的權限。爲了保證服務器的性能,還需要根據用戶的等級,限制客戶端的連接數及下載速度。
解決方案
I、開放目錄採用匿名用戶訪問:
主動模式: client 先連接服務器的 21端口(命令端口),然後client開放一個大於1024的端口等待服務器的20端口連接,21號端口的鏈接建立以後,服務器就用20去連接client開放的端口,簡單來說就是服務器主動連客戶端啦 基於上面的連接方式,如果client端有個防火牆,服務器的20端口就連接不進入,導致會連接失敗。
被動模式: 就是client開啓大於1024的X端口連接服務器的21(命令端口),同時開啓X+1端口 當21號端口連接成功後,client會發送PASV命令,通知服務器自己處於被動模式,服務器收到這個消息後,就會開放一個大於1024的端口Y通知client,client接到通知後就會用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