linux下架wu-ftpd(轉)

BSDLite發表於2007-08-15
linux下架wu-ftpd(轉)[@more@]  wu-ftpd的安裝非常容易,大多數版本的linux中都包含了wu-ftpd的rpm軟體包,你可

以在安裝linux時指定裝入。如果你想自行編譯原始碼,也可以到

下載最新版本的原始碼包。

  安裝好以後,可以用ckconfig命令來檢查是否已經正確安裝。 在/etc/passwd中可以
指定ftp使用者的登入目錄。

wu-ftpd主要有以下6個配置檔案:

ftpaccess(主要配置檔案,控制存取許可權)

ftpconvertions(配置檔案壓縮/解壓縮轉換)

ftpgroups(設定ftp自己定義的群組)

ftphosts(設定個別的使用者許可權)

ftpservers(設定不同IP/Domain Name以對應到不同的虛擬主機)

ftpusers(設定哪些帳號不能用ftp連線)

下面我們來一一介紹。

⒈/etc/ftpaccess(wu-ftpd的主要配置檔案)

class--定義群組,用法如下:

class[……]

由class定義的群組使用者才可以連線進來,可以使用多層式的class來規範哪些群組的使用者能夠從哪些地方上來。這裡有三個重要的種類,real、anonymous個guest。real如果沒有列在定義中,那麼這臺機器中任何真實的一般使用者都無法用自己的帳號連上來。anonymous如果沒有在定義,就表示不讓沒有帳號的的人連上來。如果有定義guest,那麼guest群組的人就可以上來。另外是指ftp上來的使用者會用到的IP地址,則可自行設定。以下是一些例子:


class all real,guest,anonymous *


定義了一個名為all的class,包含三種人,所有IP的連線使用者(也就是所有人都包括了)


class local real localhost loopback


local這個class說,只有real的使用者可以從本機機器連上來


class remote guest,anonymous *


remote這個class包含了從任何地方上來的guest和anonymous使用者,但是real使用者不算


class rmtuser real !*.example.com


rmtuser這個class包含了從外面來的(除了example.com)真實使用者


autogroup--自動對應群組,用法如下:


autogroup[……]


當你定義好的那些同屬於一個class的使用者,一旦連線上來就會被對應到一個相應的群組下面,這樣你就可以用Unix的檔案許可權對某一群人做限制。


deny--拒絕某些地址連線,用法如下:


deny


禁止某些機器連線,並顯示。例如:


deny 210.62.146.*:255.255.255.254 /etc/reject.msg


guestgroup--設定訪客群


guestuser--設定訪客帳號


realgroup--設定真實群組


realuser--設定真實帳號


nice--設定給某些class多少優先權,用法如下:


nice


在linux中,nice的值是-20(最優先)到19(最後處理),這裡你可以指定負的值來提高某class的優先順序。


defumask--設定某class的umask,用法如下:


defumask[]


umask是建立檔案時該檔案的的許可權掩碼


tcpwindow--設定tcpwindow的大小


keepalive--設定是否使用TCP SO_KEEPALIVE來控制斷線情形


timeout--設定連線超時,用法如下:


timeout accept


接受連線超時,預設120秒


timeout connect


連線建立超時,預設120秒


timeout data


資料傳送超時,預設1200秒


timeout idle


使用者發呆超時,預設900秒


file-limit--限制某class只能傳幾個檔案,用法如下:


file-limit[][]


對某個class限制存取檔案的數目,包含了in(上傳)、out(下載),total raw代表整個傳輸的結果,不光是資料檔案。例如:


file-limit out 20 lvfour


限制lvfour這個class的使用者最多隻能下載20個檔案


byte-limit--限制某class只能傳幾個位元組,用法跟file-limit相似


limit-time--限制一個連線只能持續多久,用法如下:


limit-time{*|anonymous|guest}


為了避免有人掛在站上不下來,可以用這個方法限制使用者的上線時間,例如:


limit-time guest 5


讓guest帳號的使用者只能用5分鐘


limit--限制某class能同時幾人上線,用法如下:


limit


設定某個class在某一時間區段內最多能夠幾人同時上線,後面是當超過連線數目時要顯示的資訊。例如:


limit all 32 Any /home/ftp/etc/toomanyuser.msg


限制所有連線在任何時間只能有32個使用者,超過則拒絕連線並顯示資訊


limit levellone 5 Any2300-0600 /home/ftp/etc/toomanyuser.msg


限制levellone這個class的使用者在23:00到6:00這段時間內只能有5人連線


noretrieve--設定哪些檔案不可下載


noretrieve[absolute/relative][class=]…[-][…]


absolute或relative指檔案是用絕對路徑還是相對路徑


allow=retrieve--設定哪些檔案可以下載


allow[absolute/relative][class=]…[-][…]


loginfails--設定登入錯誤可嘗試的次數


當使用者連線時可能打錯ID或密碼,這個設定可以讓他打錯幾次以後就斷線,避免有人用窮舉法猜測密碼。


private--設定線上是否可以執行SITE GROUP/SITE GPASS


當開放SITE GROUP與SITE GPASS指令時,可以用這兩個指令切換到/etc/ftpgroup的群組。一般而言我們不會用到這個功能,以避免安全漏洞。


greeting--顯示Server的版本資訊,用法如下:


greeting


當使用者登入畫面顯示的server資訊,full是預設值,包含版本號以及hostname,brief只有hostname,而terse只有“FTP server ready”的資訊。


barnner--設定未進入Login畫面之前使用者看到的資訊,用法如下:


banner


這裡敘述了在使用者登入時,在還沒打ID/Password之前要出現的資訊。檔案路徑指的是相對於真實的路徑,而不是相對於ftp的根目錄。


host--設定ftp主機名


email--指定ftp管理者的email地址


message--資訊檔案的設定,用法如下:


message{{……}}


這裡的檔案的路徑是相對於ftp的根目錄的,“何時”是指當你做了什麼動作之後的反應,有幾個選擇:


login(登入時)


cwd=(進入某目錄時)


class 名稱是前面已經定義過的,允許你的資訊只對哪些人發出。


而資訊檔案的內容除了文字以外,還可以使用以下一些事先定義好的代號:


%T(本機時間)


%F(目前分割槽所剩餘的空間)


%C(目前所在的目錄)


%E(管理者的E-mail)


%R(客戶端主機名稱)


%L(本機主機名稱)


%U(使用者名稱稱)


%M(與我相同class使用者允許多少人連線)


%N(與我相同class使用者目前有多少人連線)


%B(絕對磁碟限制大小,目前分割槽(單位blocks))


%b(preferred磁碟限制大小,目前分割槽(單位blocks))


%Q(目前已使用的blocks)


%I(最大可使用的inodes(+1))


%i(Preferred inodes限制)


%q(目前使用的indoes)


%H(超量使用磁碟空間的時間限制)


%h(超量使用檔案數目的時間限制)


readme--通知使用者哪些README檔案已經更新


log commands--記錄使用者所使用過的命令,用法如下:


log commands


log transfers--記錄使用者所傳輸的檔案,用法如下:


log transfers


設定有哪些型別的使用者傳輸檔案需要記錄,包含了inbound(使用者上傳)和outbound(使用者下載),例如:


log transfers anonymous,guest inbound,outbound


log security--記錄安全性,用法如下:


log security


特別用於記錄某類使用者關於noretrive、notar等有關安全性的記錄


log syslog--記錄到系統的syslog檔案


alias--設定目錄別名,用法如下:


alias


cdpath--設定cd更換目錄搜尋順序


compress,tar--設定是否自動壓縮,用法如下:


compress[……]


tar[……]


定義哪些人可以執行壓縮以及tar


shutdown--通知使用者要關站了


shutdown


如果資訊檔案存在的話,當這個檔案指定的某時間以後,就會拒絕連線並切斷已有的連線,等時間一到就關機。這個資訊檔案的格式如下:





daemon address--指定只監聽某個IP地址,用法如下:


daemon address


當你有許多IP的時候,使用這個選項將會取消其它任何虛擬FTP主機的設定。不設定的話,監聽所有IP。


virtual--設定虛擬FTP站臺


wu-ftpd提供了虛擬主機的功能,也就是說,在同一臺機器上提供了不同FTP站臺,以主機名稱或IP來區分;當然你要用名稱的話,還需要跟DNS配合才行。virtual有很多個設定:


virtual





可以是主機名或IP地址


root指的是ftp的根目錄,banner是歡迎資訊,logfile指的是這個虛擬站臺的log檔案


以下是一些例子:


virtual virtual.com.bj root /home/ftp2


virtual virtual.com.bj banner /etc/vftpbanner.2


virtual virtual.com.bj logfile /etc/viftplog.2


virtual





使用者可以查到hostname跟管理者email,以下是一些例子:


virtual 210.62.146.50 hostname virtual.site.com.bj


virtual vritual.site.com.bj email


virtual


allow[……]

virtual

deny[……]

很明顯,以上兩個選項是設定是否允許連線的,以下是一些例子:

virtual virtual.site.com.bj allow *

virtual virtual.site.com.bj deny badman

virtual

private

本虛擬站臺拒絕anonymous使用者

defaultserver deny [……]

defaultserver allow [……]

當我們使用了虛擬主機,原先的deny,allow設定不知道要設哪個server,所以會無效,用defaultserver代表原來的主機

defaultserver private

主站臺拒絕anonymous使用者

passive address--轉換IP數值

passive address/cidr

passive ports--passive的ports範圍

passive ports

pasv-allow--允許使用pasv

pasv-allow[……]

port-allow--允許使用port

port-allow[……]

mailserver--指定Upload通知的mail伺服器

incmail--指定anonymous upload的email通知地址

virtual incmail--指定虛擬主機anonymous upload的email通知地址

defaultserver incmail--指定預設主機anonymous upload的email通知地址

mailfrom--通知的寄信人upload

virtual mailfrom--虛擬主機upload通知的寄信人

defaultserver mailfrom--預設主機upload通知的寄信人

chmod--設定是否可以改變檔案許可權

delete--設定是否可以刪除檔案

overwrite--覆蓋檔案

rename--重新命名檔案

umask--允許設定umask

passwd-check--設定anonymous FTP的密碼檢查程度,用法如下:

passwd-check()

設定對anonymous ftp使用者的密碼是否檢查,none表示不檢查,trivial為包含@的任意密碼,rfc822則表示密碼要遵循RFC822格式,enforce表示密碼檢查不過不允許進入,warn表示密碼檢查不過只出現警告資訊。

deny=email--拒絕特定的email當密碼

path-filer--攝定哪些檔名不可使用

path-filer

upload--設定upload許可權

upload[absloute/relative][class=]…[-] >[dirs/nodirs][d_mode]

用來對我們要設定的目錄做許可權設定:

absoulte/relative使用絕對路徑或是相對路徑

class=指定某個class

root-dir指的是對哪些root-dir的人,也就是chroot後的登入目錄,應用這個規則

設定的目錄指的就是我們要限制的目錄

yes/no指得是能否在此目錄下開新檔案

owner,group指出是開出來的檔案擁有者及群組

Mode指的是檔案許可權

dirs/nodirs指的是能否開新目錄

d_mode設定建立新目錄時目錄的許可權,如果不設定會根據mode來設定

thoughput--控制下載速度

thoughput

對遠端的地址,控制他抓某個子目錄下的某些檔案時的速度,例如:

thoughput /e/ftp * * oo - *

thoughput /e/ftp /sw* * 1024 0.5 *

thoughput /e/ftp sw* readme oo - *

thoughput /e/ftp sw* * oo - *.foo.com

以上的設定你是否能夠看出來呢?“oo”表示不限制bytes/sec,“-”或是“1.0”都是代表一倍。第一行的意思是說,在/e/ftp下面的檔案不限制下載速度;第二行說,在/sw*下面的任何檔案限速為1024bytes/sec*

0.5=512bytes/sec;第三行又把readme檔案的限速取消;最後一行則對*.foo.com開放全速。

anonymous-root--對某class設定匿名使用者的根目錄

anonymous-root[]

guest-root--預設一個guest使用者根目錄

guest-root[]

其中用於指定uid的範圍

deny-uid,deny-gid--拒絕某段UID(GID)範圍

allow-uid,allow-gid--允許某段UID(GID)範圍

restricted-uid,restricted-gid--限制使用者不能離開他的登入目錄

unrestricted-uid,unrestricted-gid--使用者可以離開他的登入目錄

dns refuse_mismatch--設定DNS查到名稱與使用者設定不符的動作

dns refuse_mismatch[override]

當使用者使用未註冊IP時,拒絕他的連線,override則是不理會錯誤而讓他連線,資訊檔案則是我們要給使用者看的。

dns refuse_no_reverse--設定無反查記錄拒絕連線

dns refuse_no_reverse[override]

當使用者的IP反查無記錄時,拒絕他的連線

dns resolveoptions--設定DNS解析選項

dns resolveoptions[options]

這裡可以設定DNS解析選項

⒉/etc/ftphosts

ftphosts檔案其實跟ftpaccess裡面的access,deny很像,它是特別用來設定某些ID的連線,它沒有class定義,所以必須是真實使用者。


allow|deny[……]


以下是一些例子:


allow rose 140.0.0/8


deny jack 140.123.0.0:255.255.0.0


允許rose從140.*.*.*進來,拒絕jack從140.123.*.*上來


⒊/etc/ftpservers


這個檔案控制了當你有不同的IP/hostname的時候,進來的連線使用哪一個配置檔案。例如:


10.196.145.10 /etc/ftpd/ftpaccess.somedomain/


10.196.145.200 /etc/ftpd/ftpaccess.someotherdomain/


some.domain internal


10.196.145.20 /etc/ftpd/config/faqs.org/


ftp.some.domain /etc/ftpd/config/faqs.org/


⒋/etc/ftpusers


在這個檔案裡記錄的使用者禁止使用FTP


⒌/etc/ftpgroups


給SITE GROUP指令使用,線上切換group。SITE EXEC容易造成安全漏洞,一般我們都不開放。


⒍/etc/ftpconversions


用來做tar、compress、gzip等動作指令配置檔案,只要用預設即可,如果你不開放即時壓縮打包,也可以把內容清除。

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

相關文章