在Linux下如何使用vsftpd構建FTP服務器,構建後的FTP服務器有哪些特點?本文將作詳細介紹。
vsftpd 是“very secure FTP daemon”的縮寫,安全性是它的一個最大的特點。vsftpd 是一個 UNIX 類操作系統上運行的服務器的名字,它可以運行在諸如 Linux、BSD、Solaris、 HP-UNIX等系統上面,是一個完全免費的、開發源代碼的ftp服務器軟件,支持很多其他的 FTP 服務器所不支持的特征。比如:非常高的安全性需求、帶寬限制、良好的可伸縮性、可創建虛擬用戶、支持IPv6、速率高等。
本文以RedHat Linux 9.0為例介紹一下如何安裝和配置vsftpd服務器。
安裝服務器程序
程序下載地址:ftp://vsftpd.beasts.org/users/cevans/,目前最新版本為2.0.3,源程序文件名為vsftpd-2.0.3.tar.gz。
1.安裝之前的准備:
安裝之前我們應該看看用戶“nobody”和目錄“/usr/share/empty”是否存在,如果不存在需要新建這個用戶和目錄。
[root@localhost root]# useradd nobody
[root@localhost root]# mkdir /usr/share/empty
如果要允許匿名訪問,還需要創建ftp用戶,並將其主目錄設置為/var/ftp。在RedHat Linux 9.0中這些都已默認設置好了,只需要創建一個/var/ftp目錄即可。
[root@localhost root]# mkdir /var/ftp
為了安全,目錄“/var/ftp”不應該屬於用戶“ftp”,也不應該有寫權限。在此,我們做如下設置:
[root@localhost root]# chown root.root /var/ftp
[root@localhost root]# chmod 755 /var/ftp
2.開始安裝:
以管理員身份登錄Linux系統,將vsftpd-2.0.3.tar.gz復制到/root目錄下。
[root@localhost root]# tar xzvf vsftpd-2.0.3.tar.gz
[root@localhost root]# cd vsftpd-2.0.3
[root@localhost vsftpd-2.0.3]# make
[root@localhost vsftpd-2.0.3]# make install
3.安裝後續工作
由於采用源代碼方式安裝,很多必要的配置文件沒有復制到系統中,需要手動復制。
復制配置文件:
[root@localhost vsftpd-2.0.3]# cp vsftpd.conf /etc
復制pam驗證文件:(多數使用vsftpd的用戶在用源代碼安裝後都會遇到這樣的問題:匿名用戶可以登錄,而本地用戶無論怎樣設置都無法登錄,原因就在於vsftpd采用了PAM驗證的方式,需要復制一個驗證文件本地用戶才能訪問。)
[root@localhost vsftpd-2.0.3]# cp RedHat/vsftpd.pam /etc/pam.d/ftp
vsftpd的配置
vsftpd服務器的配置文件為/etc/vsftpd.conf,其配置選項比較多,在此我只選擇幾個常用的配置選項介紹。
1.禁止匿名用戶訪問。
anonymous_enable=NO
2.允許本地用戶登錄並允許其上傳文件。
local_enable=YES
write_enable=YES
要使上述選項生效,必須復制一個pam驗證文件到/etc/pam.d,並改名為ftp。當然也可以改為其他名稱,但必須修改pam_service_name的值,默認為ftp。
3.將本地用戶鎖定在主目錄中,不允許切換到上一級目錄中。
chroot_local_user=YES
4.禁止某些用戶通過ftp登錄服務器。
如果設置了local_enable=YES,那麼所有的用戶包括root也能通過ftp登錄服務器,出於安全考慮,需要對某些用戶進行限制。
在vsftpd.conf中有三個選項控制:
userlist_deny=YES/NO
userlist_enalbe=YES
userlist_file=/etc/vsftpd.user_list
如果userlist_deny=YES,/etc/vsftpd.user_list中列出的用戶名就不允許登錄ftp服務器;如果userlist_deny=NO,/etc/vsftpd.user_list中列出的用戶名允許登錄ftp服務器。
我們只要在/etc目錄下創建vsftpd.user_list文件,文件內容為允許登錄或禁止登錄的用戶名,每個用戶占一行。
5.禁止用戶通過FTP修改文件或文件夾的權限。
chmod_enable=NO(默認值為YES)
6.設置本地用戶上傳的文件或文件夾的umask值。
local_umask=022(默認值為077)
umask的值設為022表示,上傳的如果是文件將權限改為644,如果是文件夾將權限改為755。在上傳網頁時,如果設置為077,就會出現用戶沒有權限(Permission denied)訪問網頁的問題,所以建議將umask的值設為022。
7.添加一個只能從ftp登錄服務器,而不能從本地登錄的用戶。以下創建一個用戶ftpuser,不允許從本地登錄,並創建該用戶的密碼。 //本文來自電腦軟硬件應用網www.45it.com
[root@localhost root]# useradd –g ftp –s /sbin/nologin ftpuser
[root@localhost root]# passwd ftpuser
Changing password for user ftpuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
8.讓vsftp服務器限制總的連接數以及每個IP最大的連接數。
#最多同時允許100個客戶連接
max_clients=100
#每個ip地址最多允許開3個線程
max_per_ip=3
vsftpd的配置文件中有很多選項,但個人認為,如果是架設一個簡單的ftp服務器,以上選項就足夠了。