proftpd全稱:Professional FTP daemon是針對Wu-FTP的弱項而開發的,除了改進的安全性,還具備許多Wu-FTP沒有的特點,能以Stand-alone、xinetd模式運行等。ProFTP已經成為繼Wu-FTP之後最為流行的FTP服務器軟件,越來越多的站點選用它構築安全高效的FTP站點,ProFTP配置方便,並有MySQL和Quota模塊可供選擇,利用它們的完美結合可以實現非系統賬號的管理和用戶磁盤的限制。ProFTPD 的特點:
1. 單配置文件,其設置指示和apache的有類似之處,非常容易配置。
2. 基於單個目錄的.ftpaccess設置文件,類似與apache的.htaccess文件。
3. 易於設置的多虛擬服務器和匿名ftp服務。
4. 可以設置為從xinetd啟動,或者是獨立ftp服務器兩種運行方式。
5. 匿名ftp的根目錄不需要任何特殊的目錄結構,或系統程序或其他系統文件。
6. ncfptd不執行任何外部程序,從而減少了安全隱患。
7. 可以根據文件屬主情況或unix風格的訪問控制來隱藏文件或目錄。
8. 以非root身份運行,從而減少了安全隱患。
9. 強大的log功能,支持utmp/wtmp及wu-ftpd格式的記錄標准,並支持擴展功能的記錄。
10. 支持Shadow密碼,包括支持密碼過期機制。
11. 遵從GPL版權,開放源代碼。
12. 可設定多個虛擬FTP server,而匿名FTP服務更是十分容易。
13. 最新版本1.2.10 。ftpd.org/">http://www.ProFTPD.org 。
一、基本ProFTPD服務器配置過程:
1.如果安裝過wuftpd服務器首先卸載。ProFTPD最新版本是1.3.0,官方網址:ftpd.org/">http://www.ProFTPD.org 。下載鏈結:ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.0.tar.bz2">ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.0.tar.bz2
[root@ftpd /]# bunzip proftpd-1.3.0.tar.bz2
[root@ftpd /]# cp proftpd-1.3.0.tar /usr/src/
[root@ftpd /]# cd /usr/src
[root@ftpd src]# tar xvf proftpd-1.3.0.tar
[root@ftpd src]# cd proftpd-1.3.0
[root@pftd proftpd-1.3.0]# ./configure ; make ; make install
到現在為止,你已經完成了proftpd的編譯和安裝。並且在/usr/local/etc/目錄下有一個默認的proftpd配置文件proftpd.conf。
2.理解配置文件
下面是默認安裝後的配置文件:
ServerName “ProFTPD Default Installation”
ServerType standalone
DefaultServer on
ServerIdent off
Port 21
Umask 022
MaxInstances 30
User nobody
Group nogroup
<Directory /*>
AllowOverwrite on
</Directory>
<Anonymous ~ftp>
User ftp
Group ftp
UserAlias anonymous ftp
MaxClients 10
DisplayLogin welcome.msg
DisplayFirstChdir .message
<Limit WRITE>
DenyAll
</Limit>
</Anonymous>
這裡筆者去掉了所有注視。熟悉Apache服務器的配置方法的讀者很很容易理解。二者有許多相似之處。
單線指令,如ServerName and ServerType。
多線容器指令。如<Directory> and <Limit>。
配置服務器後應當知道配置文件中指令的含義。可以參考官方配置指南(下載鏈接:ftpd.org/docs/directives/configuration.pdf">http://www.proftpd.org/docs/directives/configuration.pdf )。下面主要介紹安全相關的部分。
ServerName :服務器名稱。在登入時所顯示的服務器名稱。確省是:“ProFTPD Default Installation”可以根據個人情況修改。
ServerType :服務器工作類型。ProFTPD能以Stand-alone、xinetd兩種模式運行。
DefaultServer:是否啟用虛擬FTP,on為支持,off是關閉。
ServerIdent :是否顯示FTP軟件名稱,on為顯示,off是關閉。
Port:運行端口。設定於登入時,主機是監聽那一個端口。
Umask:指定確省配置文件的權限一般是022。
MaxInstances:最大連接請求。設定服務器於同一時間內可以處理的程序有幾筆,若服務器運行類型設為standalone的話,可設低一點,以避免黑客的DoS攻擊。
User:指明運行FTP服務器的用戶名稱。
Group: 指明運行FTP服務器的用戶組名稱。
<Directory /*> 登入時想進入的目錄位置 (/*是通配符合),AllowOverwrite 表示是否允許客戶端覆蓋文件,這樣是不安全的應當選擇off。
</Anonymous> 是否建立匿名FTP站點。除非需要請刪除這個選型。
DisplayLogin welcome.msg 設置ftp登陸歡迎信息文件。
3.配置實例
建立一個單機(standalone)模式的FTP服務器:
建立配置文件如下:
ServerName “FTP Server”
ServerType standalone
DefaultServer on
Port 21
Umask 027
MaxInstances 30
User nobody
Group nogroup
<Directory /*>
AllowOverwrite off
</Directory>
使用su命令切換為root用戶。
在/etc/rc.d/init.d目錄中安裝啟動腳本:cp ./contrib/dist/rpm/proftpd.init.d /etc/rc.d
/init.d/proftpd
添加一個新組:groupadd nogroup。
建立符號鏈結讓FTP服務器隨啟動自動啟動:ln -/etc/rc.d/init.d/proftpd /etc/rc.d/rc3.d/S95proftpd
測試連接情況:從客戶端測試proftpd是否正常運行:
C:WINDOWS>ftp 192.168.2.33
Connected to 192.168.2.33.
220 ProFTPD 1.2.0rc3 Server (ProFTPD Default Installation)[ftpd.test.com.cn]
User (192.168.2.33:(none)): ideal
Password:
230 User ideal logged in.
ftp>
ProFTPD的控制命令:/etc/rc.d/init.d/proftpd stop 關閉服務器
/etc/rc.d/init.d/proftpd start 啟動服務器
/etc/rc.d/init.d/ proftpd reload 重新加載修改後的配置文件etc/proftpd.conf並且啟動服務器。
4.建立一個安全的匿名ProFTPD站點
如果人們只需要從FTP服務器等到一些小文件(幾兆),可以使用Apache web服務器代替匿名FTP站點。如果要通過一個匿名賬號頻繁上傳、下載文件,就要建立一個安全的ProFTPD服務器。下面是配置文件/etc/proftpd.conf內容(其中incoming目錄容許用戶上傳文件):
<Anonymous ~ftp>
User ftp
Group ftp
RequireValidShell off
UserAlias anonymous ftp
MaxClients 40
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
<Directory incoming>
<Limit WRITE>
AllowAll
</Limit>
<Limit READ>
DenyAll
</Limit>
</Directory>
</Anonymous>
根據以上內容建立的ProFTPD服務器會為自動連接到匿名ProFTPD服務器的用戶創建一個chroot限制,用戶的主目錄為站點的根目錄。下面解釋主要配置指令的作用:
User 和 Group:這兩個指令確保User ftp和Group ftp擁有所有匿名會話。
RequireValidShell:由於在/etc/passwd中沒有用戶FTP的有效列表,所以該指令說明ProFTPD允許User ftp的匿名會話。
UserAlias:該指令把anonymous賦予FTP賬號,以便所有用戶可以使用ftp和anonymous作為用戶名登錄匿名FTP服務器。
MaxClients:這裡限制匿名連接數目是40,你可以根據系統負載設定連接數目。
<Directory>容器:這些容器給定目錄的各種限制:
第一個目錄容器對每個用戶和每個目錄禁止寫權限(包括上傳、刪除和修改)。
第二個目錄容器在incoming子目錄中給每個用戶寫權限。
最後一個Limit指令確保在incoming子目錄中上傳文件的用戶不能查看和恢復目錄中的文件。