Dreamfire公司由於業務需求,需要架設一臺FTP服務器,出於系統穩定和安全等多方面考慮,決定使用RHEL 4作爲服務器平臺,架設vsftp服務器。其次爲了最大限度地保證公司內部RHEL4服務器上“/home”下用戶的安全性,決定採用虛擬用戶的方式訪問FTP服務器。管理員爲了能夠更好的靈活管理服務器上每個用戶的訪問權限,根據貴公司的需求和當前網絡狀況制定了一套可行的方案如下:
1、 所有用戶都通過用戶名:ftpall、密碼:123登錄FTP服務器的公共目錄ftpall
2、 公共目錄ftpall是供員工下載資料所用的,只允許下載,不允許刪除、修改、重命名ftpall中的文件或目錄
3、 所有用戶都可以通過自己的用戶和密碼登錄到FTP服務器上的宿主目錄裏,且只能看到自己的文件和文件夾,而且可以添加、刪除、修改、重命名自己的文件或文件夾。
4、 匿名訪問的用戶根據實際情況開啓,默認不開啓。
5、 所有員工訪問公共目錄ftpall的下載速度最大爲100KB/s,而訪問各自的宿主目錄的下載速度最大爲300KB/s
6、 考慮到FTP服務器的承受力,每次只允許最多100個用戶連接服務器。
7、 考慮到公司內部某些員工可能會用迅雷、快車等BT下載工具下載文件,所以將同一IP地址的FTP客戶機與FTP服務器建立的最大連接數不超過3個。
建立虛擬用戶的口令庫文件,文件中奇數行設置虛擬用戶的用戶名,偶數行設置用戶的口令。爲了便於記憶可以將文件命名爲.txt文件。不過Linux下文件是不支持擴展名滴哦,只是爲了標示而已。
使用db_load命令生成認證文件,“-f”命令選項設置的值是虛擬用戶的口令庫文件,即vsftpd_login.txt,命令的參數設置爲需要生成的認證文件名vsftpd_login.db,該文件必須放在“/etc/vsftpd/”中。
由於vsftpd的認證文件vsftpd_login.db裏保存了所有虛擬用戶的用戶名和密碼,爲了增強其安全性,應當設置只有root纔可以查看。
修改/etc/pam.d/vsftpd文件
將默認配置全部用“#”註釋在最後添加
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
建立vsftpd虛擬目錄所需的系統公共用戶賬號,賬號名爲ftpall,指定用戶的宿主目錄是“/var/ftp/ftpall”
建立vsftpd虛擬目錄所需的系統單用戶賬號,賬號名爲xiaonuo,指定用戶的宿主目錄是“/var/ftp/xiaonuo”
參數“-d”是建立用戶之後,並將自己的宿主目錄指向指定的位置。
建立的虛擬用戶的宿主目錄默認都是700權限,由於ftpall是公共目錄,是不允許普通用戶修改、添加、刪除和重命名的,所以將其改成500(讀+執行)即可。
參數“-R”是修改用戶宿主目錄以及目錄裏所有子文件的屬性。
在對vsftpd.conf配置文件進行修改前,應先將原有的文件進行備份,以便出現配置錯誤時可進行恢復。
在vsftpd.conf配置文件中添加虛擬用的配置項,內容如下:
anonymous_enable=NO 禁用匿名用戶登錄
local_enable=YES 啓用本地用戶登錄(本質上是爲了能夠讓虛擬用戶登錄)
chroot_local_user=YES 將所有本地用戶限制在自己的目錄中
pam_service_name=vsftpd 配置vsftpd使用的PAM模塊爲vsftpd
user_config_dir=/etc/vsftpd/users_config 設置虛擬賬戶配置文件的主目錄爲 /users_config(後面創建)
max_clients=100 設置FTP服務器最大接入客戶端數爲100個
max_per_ip=3 設置每個IP地址最大連接數爲3個
local_max_rate=300000 FTP服務器的本地用戶最大傳輸速率設置爲300KB/s
anon_max_rate=100000 FTP服務器匿名用戶最大傳輸速率設置爲100KB/s
首先創建虛擬用戶配置文件的主文件夾users_config,並在此文件夾下建立虛擬用戶的文件ftpall和xiaonuo。
在/etc/vsftpd/user_config/ftpall配置文件中添加虛擬用的配置項,內容如下:
guest_enable=YES 開啓虛擬賬戶登錄
guest_username=ftpall 設置ftpall對應的系統賬戶爲ftpall
anon_world_readable_only=NO 允許用戶瀏覽FTP目錄和下載文件
anon_max_rate=100000 限制傳輸速率爲100KB/s
在/etc/vsftpd/user_config/xiaonuo配置文件中添加虛擬用的配置項,內容如下:
guest_enable=YES 開啓虛擬賬戶登錄
guest_username=xiaonuo 設置xiaonuo目錄對應的系統賬戶爲xiaonuo
anon_world_readable_only=NO 允許用戶瀏覽FTP目錄和下載文件
anon_other_write_enable=YES 允許用戶進行文件改名和刪除文件的權限
anon_mkdir_write_enable=YES 表示用戶具有建立和刪除目錄的權利
anon_upload_enable=YES 表示用戶可以上傳文件
anon_max_rate=300000 限制傳輸速度爲300KB/s
通過對以上配置項的組合設置,vsftpd可以爲每個虛擬用戶配置不同的FTP權限,用戶配置文件中沒有的配置項將按照vsftpd.conf配置文件中的內容設置。
使用/etc/rc.d/init.d/vsftpd restart或者services vsftpd restart命令重新啓動vsftpd服務。
在測試之前,首先在/var/ftp/ftpall和/var/ftp/xiaonuo中創建文件和文件夾做測試用。
公共用戶ftpall使用常用的IE瀏覽器進行訪問FTP服務器,測試ftpall的權限。
將客戶機機上的文件複製到FTP服務器上提示出錯,測試成功!
重命名FTP服務器上的文件提示出錯,測試成功!
刪除FTP服務器上的文件提示出錯,測試成功!
重命名FTP服務器上的文件夾提示出錯,測試成功!
將FTP服務器上的文件拖拽的本地文件夾中,測試成功。
整個測試過程說明使用ftpall用戶登錄FTP服務器,只能下載文件,不允許增加、刪除、修改、重命名文件或文件夾。
使用命令提示符窗口測試虛擬用戶xiaonuo的權限。
首先使用匿名用戶登錄,可以看到登錄失敗,原因是因爲在主配置文件vsftpd.conf的anonymous_enable=NO的緣故,如果開啓,則登錄成功,而且能夠看到所有用戶的宿主目錄名稱,雖然不能訪問,但如果惡意用戶使用用戶名猜測密碼則會造成一定的危害。
使用虛擬用戶xiaonuo登錄FTP服務器。
使用dir或者ls –l命令可以查看到xiaonuo用戶宿主目錄裏的內容,而ftpall裏的內容是看不到的,這也就實現了用戶目錄的隔離。
使用get命令下載文件到本地測試成功。
使用put命令上傳文件到FTP服務器上測試成功
使用rename命令重命名FTP服務器上的文件測試成功。
使用rename命令重命名FTP服務器上的文件夾測試成功。
使用delete刪除FTP服務器上的文件測試成功。
使用rmdir刪除FTP服務器上的空目錄測試成功。
下載速度或者上傳速度的測試,可將速度調整低一點,便可以看出效果來。
通過上面的實驗可以看出,所有員工使用公共虛擬用戶ftpall登錄FTP服務器只能查看和下載FTP服務器上共享的文件,而每個員工使用分發的虛擬用戶名登錄FTP服務器可以實現添加、刪除、修改、查詢宿主目錄裏的文件或文件夾,這也就實現了Dreanfire公司的業務需求,同時也增強了FTP服務器的安全性。
本文出自 “【小諾的LINUX成長之路】