FTP服務(wù)器的安全設(shè)置方法
若水221147由 分享
時間:
FTP的隱患
早期FTP并沒有涉及安全問題,隨著互連網(wǎng)應(yīng)用的快速增長,人們對安全的要求也不斷提高。目前在各種平臺上包括UNIX、Linux、Windows NT以及Netware等網(wǎng)絡(luò)操作系統(tǒng),都實現(xiàn)了FTP的客戶和服務(wù)器。
FTP是為了共享資源、方便用戶文件下載而制定的文件傳輸協(xié)議,那么必然有對系統(tǒng)讀寫的權(quán)利,所以它也是整個網(wǎng)絡(luò)系統(tǒng)的薄弱環(huán)節(jié),一些網(wǎng)上的黑客常常利用FTP作為侵入和破壞系統(tǒng)的突破口。他們有時利用FTP將一些監(jiān)控程序裝入系統(tǒng),以竊取管理口令;有時利用FTP獲取系統(tǒng)的passwd文件,從而了解系統(tǒng)的用戶信息;有時利用FTP的puts和gets功能,增加系統(tǒng)負(fù)擔(dān),從而導(dǎo)致硬盤塞滿甚至系統(tǒng)崩潰。
FTP主要工作原理
FTP是基于客戶端/服務(wù)器方式來提供文件傳輸服務(wù)的。一個FTP服務(wù)器進程可同時為多個客戶進程提供服務(wù),即用戶所在的一方是客戶方,客戶方翻譯用戶發(fā)出的命令,向提供FTP服務(wù)的文件服務(wù)器傳送適當(dāng)?shù)恼埱蟆?br />
服務(wù)器端則一直運行著ftpd守護程序,遵循TCP協(xié)議,服務(wù)進程ftpd在指定的通信端口監(jiān)聽客戶發(fā)來的FTP請求,當(dāng)ftpd確認(rèn)該用戶為合法時,就開始為其客戶進程提供文件傳輸服務(wù)了。因此FTP協(xié)議在客戶和服務(wù)器之間通過TCP來建立連接,并利用TCP提供的可靠傳輸在不同的站點間傳輸文件。當(dāng)FTP客戶與FTP服務(wù)器進行會話時,F(xiàn)TP建立了兩個連接,一個是控制連接,一個是數(shù)據(jù)連接,如圖所示。
windows.chinaitlab.com/UploadFiles_3263/200701/20070115085631711.jpg" border=1>
FTP的客戶服務(wù)器模式
在一個FTP會話中需建立一個控制連接和若干個數(shù)據(jù)連接??刂七B接是執(zhí)行ftp命令時由客戶建立的通向FTP服務(wù)器的連接,該連接只能用來傳送FTP執(zhí)行的內(nèi)部命令以及命令的響應(yīng)等控制信息而非數(shù)據(jù),數(shù)據(jù)連接是為在服務(wù)器與客戶端,或兩個ftp服務(wù)器之間傳輸文件(即FTP代理傳輸方式)而建立的連接,該連接是全雙工的,允許同時進行雙向數(shù)據(jù)的傳輸。一旦數(shù)據(jù)傳輸結(jié)束,就撤消數(shù)據(jù)連接,再回到交互會話狀態(tài),直到客戶撤消控制連接,并退出FTP會話為止。
FTP服務(wù)器的安全分析
我們可以通過編輯FTP服務(wù)器的配置文件來調(diào)整訪問權(quán)限,在傳輸文件過程中進行文件加密等措施來達(dá)到FTP服務(wù)器的安全工作。下面是FTP服務(wù)器對用戶、目錄和文件管理安全問題的分析。
1)FTP服務(wù)器對用戶的管理
為了不允許其它用戶用匿名ftp訪問系統(tǒng),必須創(chuàng)建一個名為ftp的帳號,給帳號ftp設(shè)置一些限制,使得任何遠(yuǎn)程的ftp用戶不能訪問系統(tǒng)的其他部分。必須改變此帳號在文件/etc/passwd中的項,使一般的用戶不能訪問它,這一項是ftp:*:14:50:FTPUser:/home/ftp:。
口令區(qū)域中的星號用來保護帳號,它將阻止其他用戶以此帳號注冊以及控制它的文件或訪問系統(tǒng)的其他部分。用戶ID為14,是一個獨立的ID,注釋域是“FTP User”,注冊目錄是/home/ftp,當(dāng)ftp用戶注冊到系統(tǒng)時,它將處于此目錄中。
如果沒有設(shè)置主目錄,需創(chuàng)建一個,并用命令chown為ftp用戶改變它的權(quán)限。組ID是ftp組的ID,專門為匿名ftp用戶設(shè)置的。通過為ftp組設(shè)置限制來限制匿名的ftp用戶。下面是一個在/etc/group文件中找到的關(guān)于ftp組的項。對于Linux系統(tǒng),如果沒有此項,應(yīng)該加上ftp:: 50。
目錄/home/ftp的權(quán)限中應(yīng)該否定寫權(quán)限。如果不希望ftp用戶創(chuàng)建和刪除目錄,可以用chmod命令設(shè)置權(quán)限555來禁止寫訪問,這個命令是chmod555/home/ftp。
2)FTP服務(wù)器對目錄的管理
為了防止系統(tǒng)遭到ftp用戶的一些意外的訪問,應(yīng)在ftp目錄中(如/home/ftp中),創(chuàng)建一組有限制的目錄。在表1中提供一列目錄。保護一個重要部分的方法是阻止遠(yuǎn)程用戶使用不在限制目錄中的命令或程序。例如,因為ls命令位于/bin目錄中,可能不希望用戶使用ls列出文件名,同時,又希望用戶使用ls命令。
windows.chinaitlab.com/UploadFiles_3263/200701/20070115085631974.jpg" border=1>
為了做到這一點,需要在目錄/home/ftp中創(chuàng)建一個新的目錄bin,接著復(fù)制一份命令ls放到/home/ftp/bin中。此目錄將限制ftp用戶的使用,他們使用的命令ls是目錄/home/ftp/bin中的命令,而不是管理員用的/bin中的ls命令。通過同樣的方法,可以讓ftp用戶使用其他命令。
目錄/home/ftp/etc中存放passwd和group文件的副本,這個目錄的存在也阻止ftp用戶訪問/etc目錄下的原文件。編輯 /home/ftp/etc/passwd文件,刪除系統(tǒng)的一般用戶的項,剩余的項的口令應(yīng)被設(shè)置為3,以保護訪問。對于group文件,除去所有的用戶組并設(shè)置所有的口令為3。
具體命令如下:
#cat/home/ftp/etc/kpasswd
root:3:0:0:::
bin:3:1:1:::
operator:3:11:0:::
ftp:3:14:50:::
nobody:3:99:99:::
#cat/home/ftp/etc/group
root::0:
bin::1:
daemon::2:
sys::3:
adm::4:
ftp::50:
目錄/home/ftp/pub中放有想讓遠(yuǎn)程ftp用戶下載的文件。當(dāng)ftp用戶注冊到系統(tǒng)時,它將處于目錄/home/ftp中,并能切換到目錄/home/ftp/pub中開始訪問其中的文件。在/home/ftp/pub中能加入任何希望的目錄和文件,甚至可以指定一些目錄為上傳目錄,允許ftp用戶上傳文件到系統(tǒng)中。
一些Linux系統(tǒng)要求,ls命令工作時要訪問libc.so.l和rld文件。它們通常存放在/lib目錄中。因為不希望ftp用戶間接訪問系統(tǒng),所以要創(chuàng)建一個/home/ftp/lib目錄,并復(fù)制這些文件到此目錄中。
另外,因為rld使用/dev/zero文件,還要創(chuàng)建一個/home/ftp/dev目錄并用mknod復(fù)制設(shè)備文件/dev/zero,然后把它放到此目錄中。
3)權(quán)限
為了限制ftp用戶只能訪問目錄/home/ftp和它的子目錄,需要對ftp用戶隱藏文件結(jié)構(gòu)的其余部分。要讓目錄/home/ftp呈現(xiàn)為ftp用戶的主目錄,實際的主目錄和其他的目錄結(jié)構(gòu)則對ftp用戶隱藏??梢杂妹頲hroot加上參數(shù)ftp,使得目錄/home/ftp呈現(xiàn)為主目錄。
ftp目錄的權(quán)限應(yīng)該設(shè)置為允許ftp用戶訪問。對于所有者、組和另外的用戶,有三組權(quán)限為讀、寫和執(zhí)行。為了允許ftp用戶訪問,組和目錄的其他權(quán)限應(yīng)設(shè)置為可讀和執(zhí)行。執(zhí)行權(quán)限允許ftp用戶訪問目錄,讀權(quán)限則允許列出目錄中內(nèi)容。目錄不允許ftp用戶具有寫權(quán)限,沒人想讓ftp用戶能刪除或添加一個目錄。對于擁有可以下載的文件的目錄/home/ftp/pub來說,它必須擁有讀和執(zhí)行的權(quán)限。
作為目錄的所有者,需要寫權(quán)限以便能添加新文件或子目錄。當(dāng)然,只有當(dāng)做改變時才需要寫權(quán)限。為了進一步的安全,當(dāng)不需要做改動時,能設(shè)置這些目錄對所有的用戶包括所有者都只開放讀和執(zhí)行的權(quán)限。用命令chmod加上數(shù)字555和目錄名將設(shè)置對所有的用戶為讀和執(zhí)行權(quán)限。
對于目錄/home/ftp/bin中文件的權(quán)限和其他指定的ftp目錄的權(quán)限有時需要更多的限制。一些文件需要執(zhí)行,而另一些文件只要被讀。目錄 /home/ftp/bin或/home/ftp/lib中的文件ls和rld需要執(zhí)行,可以設(shè)置權(quán)限為555。在目錄/home/ftp/etc中的文件象passwd和group可以設(shè)置權(quán)限為111,即只讀的權(quán)限。
4)監(jiān)測和記錄
用ftpwho命令可以顯示通過FTP正在與系統(tǒng)連接的所有用戶的進程信息。下面是ftpwho輸出的一個例子:
Service class all
10448?S0:00
ftpd:vestax.domain.com:anonymouws/sshah@domain.com:DLE
10501?S0:00
ftpd:toybox.domain.com:heidi:PETR mklinux-ALL.sit.bin-2 user(-1 maximum)
在這里,可以看到有兩個用戶登錄進入系統(tǒng)(本例沒有對用戶數(shù)進行限制)。第一個用戶是一個稱sshah@domain.com的匿名用戶,他目前沒有執(zhí)行任何操作;第二個用戶名為heidi,他目前正在獲取mklinux-ALL.sit.bin文件。用ftpcount命令可以查看當(dāng)前每個組的用戶個數(shù)。顯示信息如下:
Serviceclassall-2user(-1maximum)
最后,建議詳細(xì)記載ftp登錄,以防不測。
適度隔離保證安全
FTP被我們廣泛應(yīng)用,自建立后其主框架相當(dāng)穩(wěn)定,二十多年沒有什么變化,但在Internet迅猛發(fā)展的形勢下,其安全問題日益突出,因此對于FTP的使用首先應(yīng)做到正確地配置FTP,防止系統(tǒng)文件被竊取或者目錄下程序進程被啟動。
其次,有條件的地方將FTP服務(wù)器與網(wǎng)絡(luò)上的其他應(yīng)用隔離,這樣即便被攻擊也不會影響整個系統(tǒng)。最后注意定期觀察FTP服務(wù)器的運行情況,檢查硬盤的大小,并做出相應(yīng)處理。
上述對FTP服務(wù)器的安全性能分析在一定程度上緩解了FTP服務(wù)的安全問題,而RFC2228.txt中提出的FTP擴展,提供了強大的認(rèn)證和集成,并引入新的可選命令、應(yīng)答和文件傳輸加密,使得控制和數(shù)據(jù)連接中的安全性大大提高。
早期FTP并沒有涉及安全問題,隨著互連網(wǎng)應(yīng)用的快速增長,人們對安全的要求也不斷提高。目前在各種平臺上包括UNIX、Linux、Windows NT以及Netware等網(wǎng)絡(luò)操作系統(tǒng),都實現(xiàn)了FTP的客戶和服務(wù)器。
FTP是為了共享資源、方便用戶文件下載而制定的文件傳輸協(xié)議,那么必然有對系統(tǒng)讀寫的權(quán)利,所以它也是整個網(wǎng)絡(luò)系統(tǒng)的薄弱環(huán)節(jié),一些網(wǎng)上的黑客常常利用FTP作為侵入和破壞系統(tǒng)的突破口。他們有時利用FTP將一些監(jiān)控程序裝入系統(tǒng),以竊取管理口令;有時利用FTP獲取系統(tǒng)的passwd文件,從而了解系統(tǒng)的用戶信息;有時利用FTP的puts和gets功能,增加系統(tǒng)負(fù)擔(dān),從而導(dǎo)致硬盤塞滿甚至系統(tǒng)崩潰。
FTP主要工作原理
FTP是基于客戶端/服務(wù)器方式來提供文件傳輸服務(wù)的。一個FTP服務(wù)器進程可同時為多個客戶進程提供服務(wù),即用戶所在的一方是客戶方,客戶方翻譯用戶發(fā)出的命令,向提供FTP服務(wù)的文件服務(wù)器傳送適當(dāng)?shù)恼埱蟆?br />
服務(wù)器端則一直運行著ftpd守護程序,遵循TCP協(xié)議,服務(wù)進程ftpd在指定的通信端口監(jiān)聽客戶發(fā)來的FTP請求,當(dāng)ftpd確認(rèn)該用戶為合法時,就開始為其客戶進程提供文件傳輸服務(wù)了。因此FTP協(xié)議在客戶和服務(wù)器之間通過TCP來建立連接,并利用TCP提供的可靠傳輸在不同的站點間傳輸文件。當(dāng)FTP客戶與FTP服務(wù)器進行會話時,F(xiàn)TP建立了兩個連接,一個是控制連接,一個是數(shù)據(jù)連接,如圖所示。
windows.chinaitlab.com/UploadFiles_3263/200701/20070115085631711.jpg" border=1>
FTP的客戶服務(wù)器模式
在一個FTP會話中需建立一個控制連接和若干個數(shù)據(jù)連接??刂七B接是執(zhí)行ftp命令時由客戶建立的通向FTP服務(wù)器的連接,該連接只能用來傳送FTP執(zhí)行的內(nèi)部命令以及命令的響應(yīng)等控制信息而非數(shù)據(jù),數(shù)據(jù)連接是為在服務(wù)器與客戶端,或兩個ftp服務(wù)器之間傳輸文件(即FTP代理傳輸方式)而建立的連接,該連接是全雙工的,允許同時進行雙向數(shù)據(jù)的傳輸。一旦數(shù)據(jù)傳輸結(jié)束,就撤消數(shù)據(jù)連接,再回到交互會話狀態(tài),直到客戶撤消控制連接,并退出FTP會話為止。
FTP服務(wù)器的安全分析
我們可以通過編輯FTP服務(wù)器的配置文件來調(diào)整訪問權(quán)限,在傳輸文件過程中進行文件加密等措施來達(dá)到FTP服務(wù)器的安全工作。下面是FTP服務(wù)器對用戶、目錄和文件管理安全問題的分析。
1)FTP服務(wù)器對用戶的管理
為了不允許其它用戶用匿名ftp訪問系統(tǒng),必須創(chuàng)建一個名為ftp的帳號,給帳號ftp設(shè)置一些限制,使得任何遠(yuǎn)程的ftp用戶不能訪問系統(tǒng)的其他部分。必須改變此帳號在文件/etc/passwd中的項,使一般的用戶不能訪問它,這一項是ftp:*:14:50:FTPUser:/home/ftp:。
口令區(qū)域中的星號用來保護帳號,它將阻止其他用戶以此帳號注冊以及控制它的文件或訪問系統(tǒng)的其他部分。用戶ID為14,是一個獨立的ID,注釋域是“FTP User”,注冊目錄是/home/ftp,當(dāng)ftp用戶注冊到系統(tǒng)時,它將處于此目錄中。
如果沒有設(shè)置主目錄,需創(chuàng)建一個,并用命令chown為ftp用戶改變它的權(quán)限。組ID是ftp組的ID,專門為匿名ftp用戶設(shè)置的。通過為ftp組設(shè)置限制來限制匿名的ftp用戶。下面是一個在/etc/group文件中找到的關(guān)于ftp組的項。對于Linux系統(tǒng),如果沒有此項,應(yīng)該加上ftp:: 50。
目錄/home/ftp的權(quán)限中應(yīng)該否定寫權(quán)限。如果不希望ftp用戶創(chuàng)建和刪除目錄,可以用chmod命令設(shè)置權(quán)限555來禁止寫訪問,這個命令是chmod555/home/ftp。
2)FTP服務(wù)器對目錄的管理
為了防止系統(tǒng)遭到ftp用戶的一些意外的訪問,應(yīng)在ftp目錄中(如/home/ftp中),創(chuàng)建一組有限制的目錄。在表1中提供一列目錄。保護一個重要部分的方法是阻止遠(yuǎn)程用戶使用不在限制目錄中的命令或程序。例如,因為ls命令位于/bin目錄中,可能不希望用戶使用ls列出文件名,同時,又希望用戶使用ls命令。
windows.chinaitlab.com/UploadFiles_3263/200701/20070115085631974.jpg" border=1>
為了做到這一點,需要在目錄/home/ftp中創(chuàng)建一個新的目錄bin,接著復(fù)制一份命令ls放到/home/ftp/bin中。此目錄將限制ftp用戶的使用,他們使用的命令ls是目錄/home/ftp/bin中的命令,而不是管理員用的/bin中的ls命令。通過同樣的方法,可以讓ftp用戶使用其他命令。
目錄/home/ftp/etc中存放passwd和group文件的副本,這個目錄的存在也阻止ftp用戶訪問/etc目錄下的原文件。編輯 /home/ftp/etc/passwd文件,刪除系統(tǒng)的一般用戶的項,剩余的項的口令應(yīng)被設(shè)置為3,以保護訪問。對于group文件,除去所有的用戶組并設(shè)置所有的口令為3。
具體命令如下:
#cat/home/ftp/etc/kpasswd
root:3:0:0:::
bin:3:1:1:::
operator:3:11:0:::
ftp:3:14:50:::
nobody:3:99:99:::
#cat/home/ftp/etc/group
root::0:
bin::1:
daemon::2:
sys::3:
adm::4:
ftp::50:
目錄/home/ftp/pub中放有想讓遠(yuǎn)程ftp用戶下載的文件。當(dāng)ftp用戶注冊到系統(tǒng)時,它將處于目錄/home/ftp中,并能切換到目錄/home/ftp/pub中開始訪問其中的文件。在/home/ftp/pub中能加入任何希望的目錄和文件,甚至可以指定一些目錄為上傳目錄,允許ftp用戶上傳文件到系統(tǒng)中。
一些Linux系統(tǒng)要求,ls命令工作時要訪問libc.so.l和rld文件。它們通常存放在/lib目錄中。因為不希望ftp用戶間接訪問系統(tǒng),所以要創(chuàng)建一個/home/ftp/lib目錄,并復(fù)制這些文件到此目錄中。
另外,因為rld使用/dev/zero文件,還要創(chuàng)建一個/home/ftp/dev目錄并用mknod復(fù)制設(shè)備文件/dev/zero,然后把它放到此目錄中。
3)權(quán)限
為了限制ftp用戶只能訪問目錄/home/ftp和它的子目錄,需要對ftp用戶隱藏文件結(jié)構(gòu)的其余部分。要讓目錄/home/ftp呈現(xiàn)為ftp用戶的主目錄,實際的主目錄和其他的目錄結(jié)構(gòu)則對ftp用戶隱藏??梢杂妹頲hroot加上參數(shù)ftp,使得目錄/home/ftp呈現(xiàn)為主目錄。
ftp目錄的權(quán)限應(yīng)該設(shè)置為允許ftp用戶訪問。對于所有者、組和另外的用戶,有三組權(quán)限為讀、寫和執(zhí)行。為了允許ftp用戶訪問,組和目錄的其他權(quán)限應(yīng)設(shè)置為可讀和執(zhí)行。執(zhí)行權(quán)限允許ftp用戶訪問目錄,讀權(quán)限則允許列出目錄中內(nèi)容。目錄不允許ftp用戶具有寫權(quán)限,沒人想讓ftp用戶能刪除或添加一個目錄。對于擁有可以下載的文件的目錄/home/ftp/pub來說,它必須擁有讀和執(zhí)行的權(quán)限。
作為目錄的所有者,需要寫權(quán)限以便能添加新文件或子目錄。當(dāng)然,只有當(dāng)做改變時才需要寫權(quán)限。為了進一步的安全,當(dāng)不需要做改動時,能設(shè)置這些目錄對所有的用戶包括所有者都只開放讀和執(zhí)行的權(quán)限。用命令chmod加上數(shù)字555和目錄名將設(shè)置對所有的用戶為讀和執(zhí)行權(quán)限。
對于目錄/home/ftp/bin中文件的權(quán)限和其他指定的ftp目錄的權(quán)限有時需要更多的限制。一些文件需要執(zhí)行,而另一些文件只要被讀。目錄 /home/ftp/bin或/home/ftp/lib中的文件ls和rld需要執(zhí)行,可以設(shè)置權(quán)限為555。在目錄/home/ftp/etc中的文件象passwd和group可以設(shè)置權(quán)限為111,即只讀的權(quán)限。
4)監(jiān)測和記錄
用ftpwho命令可以顯示通過FTP正在與系統(tǒng)連接的所有用戶的進程信息。下面是ftpwho輸出的一個例子:
Service class all
10448?S0:00
ftpd:vestax.domain.com:anonymouws/sshah@domain.com:DLE
10501?S0:00
ftpd:toybox.domain.com:heidi:PETR mklinux-ALL.sit.bin-2 user(-1 maximum)
在這里,可以看到有兩個用戶登錄進入系統(tǒng)(本例沒有對用戶數(shù)進行限制)。第一個用戶是一個稱sshah@domain.com的匿名用戶,他目前沒有執(zhí)行任何操作;第二個用戶名為heidi,他目前正在獲取mklinux-ALL.sit.bin文件。用ftpcount命令可以查看當(dāng)前每個組的用戶個數(shù)。顯示信息如下:
Serviceclassall-2user(-1maximum)
最后,建議詳細(xì)記載ftp登錄,以防不測。
適度隔離保證安全
FTP被我們廣泛應(yīng)用,自建立后其主框架相當(dāng)穩(wěn)定,二十多年沒有什么變化,但在Internet迅猛發(fā)展的形勢下,其安全問題日益突出,因此對于FTP的使用首先應(yīng)做到正確地配置FTP,防止系統(tǒng)文件被竊取或者目錄下程序進程被啟動。
其次,有條件的地方將FTP服務(wù)器與網(wǎng)絡(luò)上的其他應(yīng)用隔離,這樣即便被攻擊也不會影響整個系統(tǒng)。最后注意定期觀察FTP服務(wù)器的運行情況,檢查硬盤的大小,并做出相應(yīng)處理。
上述對FTP服務(wù)器的安全性能分析在一定程度上緩解了FTP服務(wù)的安全問題,而RFC2228.txt中提出的FTP擴展,提供了強大的認(rèn)證和集成,并引入新的可選命令、應(yīng)答和文件傳輸加密,使得控制和數(shù)據(jù)連接中的安全性大大提高。