ProFtpd快速指南(轉)

BSDLite發表於2007-08-11
ProFtpd快速指南(轉)[@more@]ProFTPD是一個Unix平臺上或是類Unix平臺上(如Linux, FreeBSD等)的FTP伺服器程式,它是在自由軟體基金會的版權宣告(GPL)下開發、釋出的免費軟體,也就是說任何人只要遵守GPL版權宣告,都可以隨意修改源始碼。

ProFTPD設計目標是實現一個安全且易於設定的FTP Server。目前Unix或類Unix平臺上FTP Server十分有限,最常使用的恐怕就是wu-ftpd了。雖然wu-ftpd有著極佳的效能同時也是一套很好的軟體,然而它卻欠缺了許多Win32平臺上FTP Server的一些特色,同時wu-ftpd過去也有不少的安全漏洞陸續被發現。ProFTPD的原創者本身就曾經花非常多的時間尋找wu-ftpd的漏洞加以改進並且增加許多功能。然而十分不幸的是,他很快地發現顯然wu-ftpd需要全部重新的改寫才能補足欠缺的設定能力以及缺乏的一些功能。ProFTPD不是從其它FTP Server的既有原始碼修改而產生的,相反的,它是完全獨立而完整、重新改寫的FTP Server。

ProFTPD的主要包括如下特點:
* 單一主設定檔案,包含許多指令以及其支配的組,完全都是直觀的設定。如果各位對Apache Web Serve的設定不陌生的話相信一定會覺得十分容易操作設定。

* 每個目錄都可以定義一個".ftpaccess"設定檔案,就如同Apache的".htaccess"檔案一樣可以設定該目錄的存取許可權。

* 可設定多個虛擬FTP server,而匿名FTP服務更是十分容易。

* 可根據系統的負載(load)選擇以單獨運作(stand-alone)方式或是由inetd啟動。

* 匿名FTP的根目錄不需要特定的目錄結構、系統二進位制執行檔案或其它系統檔案。

* ProFTPD不執行任何外部程式以免造成安全漏洞。

* 具有隱藏目錄或隱藏檔案,源自於Unix形式的檔案許可權,或是user/group型別的檔案許可權設定。

* 能夠以一般使用者在單獨運作(stand-alone)模式下執行,以減少某些藉由攻擊方式取得root權的可能性。注:此功能與Unix的作業系統有關。

* 支援系統記錄以及utmp/wtmp。
記錄的方式與wu-ftpd的標準完全相容,也支援記錄內容的延伸格式。

* 支援Shadow password,包括了帳號使用期限設定的功能。

編譯和安裝 

Proftpd提供了多種安裝格式,包括原始碼方式、RPM方式、deb方式(debian軟體包)等。本文主要討論原始碼方式的安裝。

從ftp.proftpd.net下載最新版本的proftpd-1.2.0rc3到Linux伺服器上。然後按照如下步驟進行處理:

[root@ftpd /]# cp proftpd-1.2.0rc3.tar.gz /usr/src/
[root@ftpd /]# cd /usr/src
[root@ftpd src]# tar xvfz proftpd-1.2.0rc3.tar.gz
[root@ftpd src]# cd proftpd-1.2.0rc3
[root@pftd proftpd-1.2.0rc3]# ./configure
[root@pftd proftpd-1.2.0rc3]# make
[root@pftd proftpd-1.2.0rc3]# make install

到現在為止,你已經完成了proftpd的編譯和安裝。並且在/usr/local/etc/目錄下有一個預設的proftpd配置檔案proftpd.conf。

啟動測試

對於筆者的試驗系統RedHat6.2來說,需要將該配置檔案中:

Group nogroup

修改為:

Group nobody

因為redhat系統中nobody使用者屬於nobody組,而不是nogroup組。

若需要將proftpd設定為系統啟動時自動啟動則透過如下命令複製啟動檔案:

[root@ftpd proftpd-1.2.0rc3]# cp ./contrib/dist/rpm/proftpd.init.d /etc/rc.d
/init.d/proftpd

然後修改該指令碼的可執行屬性:

[root@ftpd /]# chmod +x /etc/rc.d/init.d/proftpd

然後編輯/etc/rc.d/init.d/functions:

修改

export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin"



export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/sbin"

注:若將在執行./cofigure命令時透過--prefix選項指定將proftpd安裝在/usr/sbin目錄下則不需要修改fuctions檔案。

然後執行命令:

[root@ftpd rc3.d]# chkconfig --level 35 proftpd on
則下次系統啟動以後,proftpd將自動啟動。

最後,需要確保系統當前沒有ftp伺服器在執行:

[root@ftpd /]# netstat -ln

若輸出中不包含

tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN

這樣的內容則可以直接啟動proftpd,否則需要關閉以前的ftpd伺服器。對於一般的預設Linux安裝來說,則需要透過以下的途徑來關閉ftp伺服器:

編輯/etc/inetd.conf檔案,在

ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a

一行前加上#:

#ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a

然後:

[root@ftpd /]# ps ax|grep inetd
350 ? S 0:00 inetd

得到inetd的程式號 ,重新啟動inetd程式:

[root@ftpd /]# kill -HUP 350

然後透過如下命令啟動proftpd:

[root@ftpd /]# /etc/rc.d/init.d/proftpd start

這時候可以透過如下命令來測試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>

則現在你就擁有了一個安全可靠的ftp伺服器。

FAQ

1、我安裝proftpd以後,出現了問題,我如何除錯?

透過透過命令/usr/local/sbin/proftpd -d9 -n啟動proftpd來進行除錯,則proftpd就會將除錯資訊列印到consle上以供除錯之用。

2、為什麼我的proftpf啟動以後,匿名使用者不能登入?

檢視proftp配置檔案/usr/local/etc/proftpd.conf,修改為(這裡/home/ftp可以是任何希望匿名使用者登入以後的當前根目錄,但是確保要使該目錄允許ftp使用者訪問),並且若部分的User指令指定的使用者為ftp使用者,則需要在配置檔案中新增如下命令指示:

RequireValidShell off

3、我如何實現一個正常使用者登入以後將其的訪問限定在某個目錄之下?
可以透過指令DefaultRoot來實現。例如若希望將ftpusers組的使用者限定在自己的home目錄下,則需要首先建立該組:

/usr/sbin/groupadd ftpusers

然後將使用者ideal加入到該組中:

usrmod -G ftpusers ideal

最後在在proftpd.conf檔案中新增如下內容:

DefaultRoot ~ ftpusers

也可以限制使用者登入以後僅僅訪問自己主目錄下的一個子目錄:

DefaultRoot ~/anoftp ftpusers

當然也可以將使用者限制在其他目錄之下,而不是自己的home目錄下:

DefaultRoot /tmp ftpusers

也可以限定一個使用者組的某些使用者被限制,而其他不作限制:

DefaultRoot ~ ftpusers,!empolyee

這個指令指示僅僅限制ftpusers組中的不是empolyee組的使用者進行限制。

4、我如何使使用者登陸時不顯示ftp伺服器版本資訊,以增強安全性?

在proftpd.conf中新增如下內容:

ServerIdent off

則再次登入時,顯示如下內容:

C:WINDOWS>ftp 192.168.2.33
Connected to 192.168.2.33.
220 ftpd.test.com.cn FTP server ready.
User (192.168.2.33:(none)):

5、在proftpd環境下如何設定虛擬主機?

可以透過指令:VirtualHost來實現,一個最簡單的例子:


ServerName "virtual FTP server"

若你僅僅希望透過匿名訪問某個虛擬主機,則使用如下的指令:



ServerName "virtual FTP server"


DenyAll




User private
Group private


AllowAll


這樣192.168.2.35的這臺主機則僅僅允許匿名登入。

筆者的proftpd.conf配置檔案內容為:
QUOTE:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-946946/,如需轉載,請註明出處,否則將追究法律責任。

ProFtpd快速指南(轉)
請登入後發表評論 登入
全部評論

相關文章