當一個系統被用作公開網絡的服務器時,這個系統就成為被攻擊的目標.對網絡服務進行訪問控制
是一個服務器管理員面臨的最重要的安全任務之一.紅帽企業Linux為這種訪問控制提供了一些工具.例如,內核使用一個基于iptables的防火墻來將
不受歡迎的網絡數據包過濾在內核網絡之外.對于使用這種防火墻的網絡服務,TCP
Wrappers又增加了一層保護,這層保護通過定義哪些主機允許或不允許連接到"wrapped"網絡服務上來實現.TCP
Wrappers為多種不同的服務提供訪問把關的功能.大多數現代網絡服務系統,像SSH,Telnet和FTP,都利用TCP
Wrappers在外來進入系統的請求和被請求的服務器之間設立防范.
xinetd超級服務器就是這樣的一個wrapped
network(會繞網絡)服務.這項服務被稱為一個超級服務器,是因為它可以控制連接到網絡服務的一個子集的連接,還能進一步精致地進行訪問控制.如果
TCP Wrappers和xinetd一起聯合使用,TCP
Wrappers的功能就會增強,因為xinetd作為超級服務器可以為系統就訪問,登錄,捆綁,重定向和資源利用方面提供額外的服務享有權控制.
1.TCP Wrappers
在默認情況下會安裝TCP
Wrappers軟件包(tcp_wrappers),該軟件包提供基于主機的,到網絡服務的訪問控制.這個軟件包中最重要的組成部分是/usr/lib
/libwrap.a庫.通常來說,使用libwrap.a庫進行編譯的服務就是一個TCP Wrappers.
當一個客戶試圖與一個TCP-wrapped服務進行連接時,這個服務首先會檢查主機的訪問文件(/etc/hosts.allow和
/etc/hosts.deny)來決定這個客戶是否被允許連接到這個服務.在大多數情況下,這個服務還會使用syslog守護進程(syslogd)把
這個發出請求的客戶用戶名以及所要求訪問的服務寫入/var/log/secure或/var/log/messages文件中.如果一個客戶被允許進行
連接,TCP
Wrappers會釋放它對所請求服務的連接控制權,然后將不再在這個客戶與服務器間的通信過程中起任何作用.除了可以控制訪問和記錄日志信息外,TCP
Wrappers還可以在允許或拒絕到網絡服務的連接請求之前來執行相關的命令與客戶進行交流.
因為TCP Wrappers是系統管理員所使用的安全工具庫的一個很有價值的補充,紅帽企業Linux中的多數網絡服務都與libwrap.a庫相連.這樣的應用程序包括/usr/sbin/sshd,/usr/sbin/sendmail等.
1.1.TCP Wrappers的優勢
TCP Wrappers擁有以下其它網絡控制技術不具備的優勢:
A.對客戶和wrapped(會繞的)網絡服務的透明性.連接的客戶和wrapped網絡服務都不需要知道TCP Wrappers在使用中.合法用戶會被記錄到日志中,并獲得所需要的服務,而非法用戶則無法獲得要求的服務.
B.中央化管理多項協議.TCP Wrappers獨立運行于它們所保護的網絡服務,這就允許多個服務器應用程序共享一組通用的訪問控制配置文件,從而簡化了管理任務.
1.2.TCP Wrappers配置文件
要決定一個客戶是否被允許連接一項服務,TCP Wrappers會參考以下兩個文件,這兩個文件通常被稱為主機訪問文件:
/etc/hosts.allow
/etc/hosts.deny
當一個TCP Wrappers接收到一個客戶請求時,它會運行以下幾個步驟:
A.檢查/etc/hosts.allow.TCP會繞服務會循序地解釋/etc/hosts.allow文件并應用第一個為這個服務所指定的規則.如果找到了一個匹配的規則,則允許連接.如果找不到匹配的規則,就會進行下一個步驟.
B.檢查/etc/hosts.deny.TCP會繞的服務會循序地來解釋/etc/hosts.deny文件.如果找到一個匹配的規則,則拒絕這個連接.如果找不到匹配的規則,則允許連接到這個服務.
在使用TCP Wrappers保護網絡服務時應該考慮以下幾個要點:
A.因為hosts.allow中的規則會首先被應用,所以比hosts.deny中指定的規則有優先權.因此,如果訪問一項服務在hosts.allow中設置為允許,那么在hosts.deny中同一項服務的拒絕訪問設置則被忽略.
B.每個文件中的各項規則是由上到下被讀取的,第一個匹配的規則是唯一被應用的規則.因此,規則的排列順序極其重要.
C.如果在這兩個文件中都沒有找到匹配的規則,或這兩個文件都不存在,那么就授予訪問這項服務的權限.
D.TCP會繞的服務并不緩存主機訪問文件中的規則,因此對hosts.allow或hosts.deny的配置改變都無需重新啟動網絡服務便會馬上起作用.
1.3.格式化訪問規則
/etc/hosts.allow和/etc/hosts.deny文件的格式是完全相同的.每個規則都必須位于其正確的行位.空行或以井字號(#)開始的行會被忽略.
每條規則都使用以下基本格式來對網絡服務的訪問進行控制:
<daemon list>: <client list> [: <option>: <option>: ...]
字段解釋如下:
<daemon list>,一個由逗號分隔的進程名(不是服務名)列表,或ALL通配符.守護進程列表也接受運算符來提供更大的靈活性.
<client list>,一個由逗號分隔的主機名,主機IP地址,特殊模式或通配符列表,該列表用來識別受這項規則影響的主機.客戶列表也接受運算符來允許更大的靈活性.
<option>,這項規則被觸發時要運行一個動作選項或由冒號分隔開動作列表.選項領域支持擴展式,發布shell命令,允許或拒絕訪問以及修改日志記錄.
下面是一個基本的主機訪問規則示例:
vsftpd : .example.com
這條規則指示TCP Wrappers監測在example.com域內的任何主機向FTP守護進程(vsftpd)發出的連接.如果這條規則出現在hosts.allow 中,連接則被接受.如果這條規則出現在hosts.deny中,連接則被拒絕.
下面的主機訪問規則比較復雜,而且使用兩個選項領域:
sshd : .example.com \ :spawn /bin/echo `/bin/date` access denied>>/var/log/sshd.log \ :deny
請注意每個選項領域前面都有反斜線(\).使用反斜線可以防止由于規則太長而造成失敗.
這個范例規定如果example.com中的某個主機試圖向SSH守護進程(sshd)發出連接請求,那么執行echo命令來將這次嘗試添加到一個專用日
志文件里,并且拒絕該連接.因為使用了命令選項 deny,這一行拒絕訪問,即使它出現在 hosts.allow 文件里.
1.4.通配符
通配符使TCP Wrappers更容易匹配各種守護進程或主機.使用通配符最頻繁的是在訪問規則的客戶列表領域內.
以下是可以被使用的通配符:
ALL,完全匹配,可以用在守護進程列表和客戶列表中.
LOCAL,與任何不包括圓點(.)的主機匹配,如localhost.
KNOWN,與任何帶有已知主機名和主機地址或已知用戶的主機匹配.
UNKNOWN,與任何帶有未知主機名和主機地址或未知用戶的主機匹配.
PARANOID,與任何帶有主機名和主機地址不相匹配的主機匹配.
1.5.模式
模式可以用在訪問規則的客戶領域里,從而更準確地給客戶主機指定分組.
下面是一個常用模式列表:
A.主機名以圓點(.)開始,如果在一個主機名的開始放置一個圓點,那么就與所有共享這個主機名中列出的相同組成部分的主機匹配.如:.example.com適用于example.com域內的任何主機.
B.IP地址以圓點(.)結束,如果在一個IP地址的末尾放置一個圓點,那么就與所有共享一個IP地址的起始數值組的主機匹配.如:192.168.適用于192.168.x.x網絡內的任何主機.
C.IP地址/網絡掩碼對,網絡掩碼表達式也可以作為一個模式用來控制對某一組特定的IP地址的訪問.如:192.168.0.0
/255.255.254.0適用于地址區間從192.168.0.0到192.168.1.255的任何主機.
D.[IPv6地址]/前綴長度對,[網]/前綴長度對也可以作為一種模式用來控制對某一組特定的IPv6地址的訪問.如:
[3ffe:505:2:1::]/64適用于地址區間從3ffe:505:2:1::到
3ffe:505:2:1:ffff:ffff:ffff:ffff的任何主機.
E.星號(*),星號可以用來匹配整個不同組別的主機名或IP地址,只要在含有其它模式類型的客戶列表中這些組不混雜在一起的話.如:*.example.com適用于example.com域內的任何主機.
F.斜線(/),如果一個客戶列表以斜線開始,這個列表就被當作一個文件名對待.若是需要指定很大數量主機的各種規則的話,這一點就很有用處.
更多TCP Wrappers所接受的其它用到的模式.可參閱hosts_access man 5 page.
1.6.Portmap(端口映射器)和TCP Wrappers
實施TCP
Wrappers的Portmap不支持主機查找,也就是說portmap命令不能用主機名來識別相應的主機.因此,在hosts.allow或
hosts.deny中對portmap的訪問控制規則必須使用IP地址來特指某主機,或用關鍵詞ALL.
對portmap訪問控制規則的修改可能不會立即起作用.可能得重新啟動portmap服務.
像NIS和NFS一樣的被廣泛使用的服務都有賴于portmap來進行運作,所以要了解這些局限性.
1.7.算子(Operators)
目前,訪問控制規則接受一個算子EXCEPT,這個算子可以用在一個規則的守護程序列表中,也可以用在客戶列表中.
這個EXCEPT算子允許特定的例外以用來在同一個規則中拓寬匹配的范圍.
下面的例子來自一個hosts.allow文件,除cracker.example.com之外,允許所有example.com主機連接所有的服務
ALL: .example.com EXCEPT cracker.example.com
hosts.allow文件內的另一個例子中,來自192.168.0.x網絡的所有客戶都可以使用除FTP之外的所有服務
ALL EXCEPT vsftpd: 192.168.0.
從組織結構上來說,避免使用EXCEPT算子更簡易一些.因為這樣可以讓其他的系統管理員能很快地掃描相關的文件以便查看哪些主機被允許或被拒絕訪問服務,而無須通過EXCEPT算子來進行排序.
1.8.選項領域
除了允許和拒絕訪問的基本規則外,紅帽企業Linux對TCP
Wrappers的實施支持通過option
fields對訪問控制語言的擴展式.通過在主機訪問規則中使用選項領域,系統管理員可以完成多種不同的任務,比如像修改日志動作,加強訪問控制以及發出
shell命令.
1.9.記錄日志
通過使用severity命令,其選項領域讓系統管理員能夠很容易地改變一個規則的日志設施和優先級別.
在下面的例子中,example.com域內的任何主機向SSH守護進程發出的各種連接會登錄到默認的authprivsyslog設施內(因為沒有具體指明設施參數值),并且以emerg優先:
sshd : .example.com : severity emerg
使用severity選項也可以指定某個設施.下面的例子將來自example.com 主機的任何SSH連接意圖登錄到local0設施,并以alert優先.
sshd : .example.com : severity local0.alert
實際操作中,這個例子直到syslog守護進程(syslogd)被配置為登錄到local0設施才會起作用.
1.10.訪問控制
選項領域也允許系統管理員通過添加allow或deny作為命令的最后選項來明確地以單個規則方式允許或拒絕主機.
例如,下面的兩個規則允許來自client-1.example.com的SSH連接但卻拒絕來自client-2.example.com的連接
sshd : client-1.example.com : allow
sshd : client-2.example.com : deny
訪問控制以每個規則為基礎,這樣選項領域就允許系統管理員把所有訪問規則寫成一個單一文件,要么是hosts.allow,要么是hosts.deny.有些系統管理員認為這樣組織訪問規則更容易一些.
1.11.Shell命令
選項領域允許訪問規則通過下面兩個指令發出shell命令:
spawn,作為子進程發出一個shell命令.這個命令可以使用/usr/sbin/safe_finger來獲取發出請求客戶的更多信息,或使用
echo命令來創建專用日志文件.在下面的例子中,試圖訪問來自example.com 域的Telnet服務的客戶被俏俏地登錄到一個專用文件.
in.telnetd : .example.com \
: spawn /bin/echo `/bin/date` from %h>>/var/log/telnet.log \
: allow
twist,把要求進行的服務轉換成特定的命令.這個命令經常用來給外侵者設立陷阱(也叫"蜜罐兒").也可以用來向預連接的客戶發送信息.這個
twist命令必須出現在該規則命令行的末尾.在下面的例子中,試圖訪問來自example.com域的FTP服務的客戶接收到用echo命令發送的一個
訊息.
vsftpd : .example.com \
: twist /bin/echo "421 This domain has been black-listed. Access denied!"
1.12.擴展式
擴展式命令與spawn和twist命令一起使用時,可以提供關于客戶/服務器以及相關進程的信息.
下面是一個支持擴展式的命令列表:
%a,返回用戶的IP地址.
%A,返回服務器的IP地址.
%c,返回大量的客戶信息,比如用戶名和主機名,或用戶名和IP地址.
%d,返回守護進程的名稱.
%h,返回客戶的主機名(或IP地址,如果主機名沒有提供的話).
%H,返回服務器的主機名(或IP地址,如果主機名沒有提供的話).
%n,返回客戶的主機名.如果主機名沒有提供的話,屏幕上會顯示unknown.如果客戶的主機名和主機地址不匹配的話,屏幕上會顯示paranoid.
%N,返回服務器的主機名.如果主機名沒有提供的話,屏幕上會顯示unknown.如果服務器的主機名和主機地址不匹配的話,屏幕上會顯示paranoid.
%p,返回守護進程的進程ID.
%s,返回各種不同類型的服務器信息,比如守護進程的進程和服務器的主機或IP地址.
%u,返回客戶的用戶名.如果沒有提供的話,屏幕上會顯示unknown.
下面用來示范的規則與spawn命令一起使用了一個擴展式來在一個定制的日志文件中確認客戶主機.
當來自example.com域的一個主機向SSH守護進程(sshd)發出連接意圖時,執行echo命令來把這次包括客戶主機名(通過使用%h擴展式)的連接嘗試信息記錄到一個專用文件中.
sshd : .example.com \
: spawn /bin/echo `/bin/date` access denied to %h>>/var/log/sshd.log \
: deny
同樣的,擴展式也可以用來把個性化的訊息返回給客戶.在下面的例子中,試圖訪問來自example.com域的FTP服務的客戶們得到通知,他們的訪問被服務器取締了.
vsftpd : .example.com \
: twist /bin/echo "421 %h has been banned from this server!"
有關可用擴展式的更完全的解釋,以及對附加的訪問控制選項的更完全的解釋,可參閱man page的第五部分,查看hosts_access(man 5 hosts_access)和hosts_options.
1.13.連接旗幟(Connection Banners)
當用戶連接到服務器時,用合適的旗幟標示顯示其連接是一種很好的方式,可以讓潛在的襲擊者知道本系統管理員很有警惕性.同時也可以控制關于系統什么樣的信
息可以呈現給用戶.要想為一項服務設置一個TCP Wrappers旗幟標示,可使用banner選項。
這個例子為vsftpd設置一個旗幟標示.首先,創建一個旗幟標示文件,可以儲存在系統的任何地方,但必須與其守護進程同名.例如,該文件命名為/etc/banners/vsftpd并包含下面一行:
220-Hello, %c 220-All activity on ftp.example.com is logged. 220-Inappropriate use will result in your access privileges being removed.
%c權標可提供客戶的多種信息,比如用戶名和主機名,或用戶名和IP地址,也許這樣會使該連接更讓人覺得有脅迫感。
要想使該旗幟在有外來連接進入時顯示,可在/etc/hosts.allow文件上加上下面一行:
vsftpd : ALL : banners /etc/banners/
2.xinetd
xinetd控制對一個流行網絡服務子集的訪問,該子集包括FTP,IMAP和Telnet.同時這種服務還對訪問控制,增強的日志記錄功能,捆綁,重定向以及資源使用控制提供特定化服務配置選項.
當一個用戶試圖連接由xinetd控制的一個網絡服務時,這種超級服務會接到請求并且查看是否有任何相匹配的TCP
Wrappers訪問控制規則存在.如果連接被允許,xinetd則檢驗該連接在其個性化的規則下對那項服務來說是被允許的.同時也檢查該項服務是否還有
足夠的資源份額以及這項服務是否與任何定義好的規則相沖突.如果所有條件都得到滿足,(也就是:訪問這項服務的請求被允許,這項服務還有足夠的資源份額,
以及這項服務不與任何定義好的規則相沖突),那么xinetd就開始進行被請求的服務并且讓其通過對連接的訪問控制.連接建立后,xinetd就不再參與
客戶和服務器之間的通訊交流.
2.1.xinetd的配置文件
xinetd的配置文件如下:
/etc/xinetd.conf,全局xinetd配置文件.
/etc/xinetd.d/,包含所有具體化服務文件的目錄.
/etc/xinetd.conf文件包含一般的配置設定,這種設定影響xinetd控制下的每一項服務.當xinetd服務第一次啟動時,其設定信息就
被讀取,所以要想使改變后的配置起作用,你需要重新啟動xinetd服務.下面是一個/etc/xinetd.conf文件的示范:
defaults
{
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST
cps = 25 30
}
includedir /etc/xinetd.d
這些行控制xinetd以下的各個方面:
instances,指定xinetd可以處理同時間進入系統的請求的最大數值.
log_type,配置xinetd來使用authpriv日志設施,該設施將日志條目寫入/var/log/secure文件.如果加上一個像FILE
/var/log/xinetdlog一樣的命令,就會在/var/log/目錄下創建一個叫作xinetdlog的定制日志文件.
log_on_success,配置xinetd來記錄成功的連接嘗試.默認情況下,遠程主機的IP地址和服務器處理這個請求的處理ID都要被記錄.
log_on_failure,配置xinetd來記錄失敗的連接嘗試,或被拒絕的連接嘗試.
cps,配置xinetd來設定對任何一項服務來說每秒鐘最多允許25個連接.如果超過這個限制,該服務就會隱退30秒.
includedir/etc/xinetd.d/,包含位于/etc/xinetd.d/目錄下的并且在具體化特定服務配置文件中聲明的各種選項.
/etc/xinetd.d/目錄含有xinetd管理下的每一項服務的配置文件以及與該服務相關連的各文件的名稱.就xinetd.conf來說,該目
錄只有當xinetd服務啟動時才被讀取.要使改變的配置起作用,系統管理員必須重新啟動xinetd服務.
/etc/xinetd.d/目錄下的文件格式使用與/etc/xinetd.conf相同的常規格式.各項服務的配置都儲存在一個獨立的文件中,其主要原因是這樣做使得個性化定制更容易一些,一項服務影響其它服務的可能性也更小一些.
要想了解這些文件是如何組構在一起的,可參考以下/etc/xinetd.d/krb5-telnet文件:
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/kerberos/sbin/telnetd
log_on_failure += USERID
disable = yes
}
這些行控制telnet服務的多個不同側面:
service,指定服務名稱,通常是/etc/services文件中服務列表中的一項.
flags,設定連接的一系列屬性中任何一個屬性.REUSE指示xinetd來重新使用這個插座進行Telnet連接.
socket_type,設定該網絡插座類型為stream.
wait,指定這項服務是單線程(yes)還是多線程(no).
user,指定該進程運行在哪個用戶 ID 下.
server,指定要發射哪個二進制可執行文件.
log_on_failure,為log_on_failure指定登錄參數,在xinetd.conf中已經定義好的除外.
disable,指定這項服務是要被中止(yes)還是不被中止(no).
可參閱xinetd.conf man page來獲取關于這些選項及其用途的更多信息.
2.2.日志記錄選項
下面的日志記錄選項可用于/etc/xinetd.d/目錄下的/etc/xinetd.conf和各種具體化特定服務配置文件.
ATTEMPT,日志記錄每次連接嘗試失敗的事實(log_on_failure).
DURATION,日志記錄這項服務被遠程系統使用的時間長度(log_on_success).
EXIT,日志記錄退出狀態或這項服務的中止信號(log_on_success).
HOST,日志記錄遠程主機的IP地址(log_on_failure 和 log_on_success).
PID,日志記錄該服務器接到連接請求時進行處理的處理ID(log_on_success).
USERID,日志記錄遠程用戶使用為所有多線程主流服務而在RFC 1413中規定的方法(log_on_failure andlog_on_success).
如果需要一個日志記錄的完整列表,可參閱xinetd.conf man page.
2.3.訪問控制選項
xinetd服務的用戶們可以選擇使用TCP Wrappers主機訪問規則,也可以通過xinetd配置文件提供訪問控制,或二者混合使用.
下面是一些xinetd支持的主機訪問控制選項:
only_from,只允許特別指定的主機使用這項服務.
no_access,阻斷列出的主機使用這項服務.
access_times,指定某一特定服務可能需要的時間段.該時間段的表達必須用24時的符號格式,即:HH:MM-HH:MM.
only_from和no_access選項可以使用很多IP地址或主機名,或者可以指定整個網絡.與TCP
Wrappers類似,將xinetd訪問控制與增強的日志記錄配置相結合可以提高安全性,這樣可以阻斷被禁止主機的請求同時又詳細記錄每一次的連接嘗
試.
例如,下面的/etc/xinetd.d/telnet文件可以用來阻斷來自某特定網絡群體的Telnet訪問,也用來限制允許用戶們登錄的總體時間段.
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/kerberos/sbin/telnetd
log_on_failure += USERID
no_access = 172.16.45.0/24
log_on_success += PID HOST EXIT
access_times = 09:45-16:15
}
在這個例子中,當一個來自10.0.1.0/24網絡的用戶系統,比如10.0.1.2,試圖訪問Telnet服務時,連接由外連主機關閉.
另外,他們的登錄試圖會記錄在/var/log/messages中.
當TCP Wrappers和xinetd連用來進行訪問控制時,了解這兩種訪問控制機制之間的關系是很重要的.
當一個客戶請求連接時, xinetd控制下的事件發生順序如下:
1.xinetd守護進程通過使用libwrap.a庫呼叫來訪問TCP Wrappers主機訪問規則.如果一個拒絕規則匹配這個客戶,那么連接就被放棄.如果一個允許規則匹配這個客戶的話,該連接就被傳遞給xinetd.
2.xinetd守護進程檢查其本身的訪問控制規則,這種檢查既為xinetd服務,也為被請求的服務.如果一個拒絕規則匹配這個客戶,那么連接就被放棄.否則,xinetd 就啟動這項被請求的服務,并讓連接連到那項服務上.
2.4.捆綁和重定向選項
xinetd服務配置文件支持將這項服務捆綁到一個IP地址上,并且把那項服務的外來請求重定向到另外一個IP地址,主機名或端口.
捆綁服務用特定化服務配置文件中的bind選項來控制,并把該服務鏈接到系統上的一個IP地址.捆綁配置好后,bind選項只允許到合法IP地址的請求來訪問該服務.你可以使用這種方法把不同服務根據要求捆綁到不同的網絡接口.
這對擁有多重網絡適配器或多個IP地址的系統尤其有用.在這樣的系統內,不安全的服務(比如Telnet)可以配置成只用來偵聽連接到某專用網的接口而不偵聽連接到互聯網(Telnet)的接口.
redirect選項接受后面帶有端口號的IP地址或主機名,并配置這項服務來把連接到這項服務的任何請求都重定向到指定的主機和端口號.重定向的這一特
征可以用來把請求改向到同一個系統上的另一個端口,重定向到同一臺機器上的一個不同IP地址,或轉移到一個完全不同的系統和端口號,以及這些選項的任何結
合.因此,一個系統上要連接到某項服務的用戶可能會被路由到另外一個系統,而無須中斷目前的系統.
xinetd守護進程要完成這樣的重定向需要不斷復制這樣一個過程:發出請求的客戶主機和實際提供這項服務的主機在連接期間要保持活動狀態并且兩個系統之間不斷要有數據的傳輸轉移.
bind和redirect選項一起使用時,其優勢最為明顯.如果把一項服務捆綁到一個系統的某特定的IP地址,然后再把對該服務的請求重定向到只有第一
個機器可以看見的第二個機器上,那么可以使用內部系統來為一個完全不同的網絡提供這些服務.還有其它用途,比如這些選項可以用來限制在一個多處為家的機器
上某特定服務與一個已知IP地址的連接時間,也可以用來把對那項服務的任何請求重定向到另外一臺專門為那項服務配置的機器.
例如,考慮這樣一個系統,一個為其Telnet服務而設定的被用作防火墻的系統:
service telnet
{
socket_type = stream
wait = no
server = /usr/kerberos/sbin/telnetd
log_on_success += DURATION USERID
log_on_failure += USERID
bind = 123.123.123.123
redirect = 10.0.1.13 23
}
這個文件中的bind和redirect選項保證那臺機器上的Telnet服務被捆綁到外部IP地址(123.123.123.123),面向互聯網的那
個地址.另外,任何發送到123.123.123.123的Telnet服務請求都會通過第二個網絡適配器重定向到一個內部IP地址
(10.0.1.13),這個地址只有防火墻和內部系統可以訪問.這個防火墻就傳輸這兩個系統之間的通訊交流,可是該連接系統卻認為連接的是
123.123.123.123,而實際上連接的是一個不同的機器.
這一特征對使用寬帶連接又只有一個固定的IP地址的用戶尤其有用.使用NAT(網絡地址轉換)時,網關機器背后的使用內部專用IP地址的各系統在該網關系
統以外是不能被使用的.然而,當由xinetd控制的某些服務用bind和redirect選項配置時,該網關機器可以被用作外部系統和某特定被配置好來
提供該服務的內部機器之間的服務代理.另外,多種不同的xinetd訪問控制和日志選項也可以接受額外的保護.
2.5.資源管理選項
xinetd守護進程可以增加一層基本的不受DoS(服務拒絕)攻擊的保護.
下面是一個可以幫助限制類似攻擊成效的命令列表:
cps=,限制外來連接的速度.這個命令有兩個參數:
第一個參數,每分鐘能夠處理的連接數目.如果處理外來連接的速度高于這個數目,該服務就會暫時中斷,默認值是50.
第二個參數,服務中斷幾秒中之后才能重新啟動該服務,其默認間隙是10秒鐘.
instances,指明一項服務所能允許的連接總數.這項命令接受任何整數數值或UNLIMITED.
per_source,指明一臺主機所能允許的一項服務的連接總數.這項命令接受任何整數數值或UNLIMITED.
rlimit_as,以千字節或MB為單位指明該服務所占用的內存空間.這項命令接受任何整數數值或UNLIMITED.
rlimit_cpu,以秒為單位指明一項服務所占用 CPU 的時間總量.這項命令接受任何整數數值或UNLIMITED.
max_load,定義CPU用量或一項服務負載平均限量值.它接受一個非固定點的數值參數.負載平均是對某一時間內系統有多少進程處于活動狀態的一個大
體測量.請參閱 uptime、who 和 procinfo 命令來獲取關于負載平均的更多信息.
還有很多可以使用的資源管理選項可以用來管理xinetd.可參閱xinetd.conf man page來獲取更多信息.
2.6.有用的網站
http://www.xinetd.org/,xinetd 的主頁,含有配置文件示例,配置文件特點的詳細列表和一個很有用的FAQ.
http://www.macsecurity.org/resources/xinetd/tutorial.shtml,一部詳細的學習指南,討論多種不同方式來優化xinetd默認配置文件以滿足特定的安全需要.