• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            旅途

            如果想飛得高,就該把地平線忘掉

            用TCP Wrappers和xinetd使系統(tǒng)安全

            當(dāng)一個(gè)系統(tǒng)被用作公開網(wǎng)絡(luò)的服務(wù)器時(shí),這個(gè)系統(tǒng)就成為被攻擊的目標(biāo).對(duì)網(wǎng)絡(luò)服務(wù)進(jìn)行訪問控制 是一個(gè)服務(wù)器管理員面臨的最重要的安全任務(wù)之一.紅帽企業(yè)Linux為這種訪問控制提供了一些工具.例如,內(nèi)核使用一個(gè)基于iptables的防火墻來將 不受歡迎的網(wǎng)絡(luò)數(shù)據(jù)包過濾在內(nèi)核網(wǎng)絡(luò)之外.對(duì)于使用這種防火墻的網(wǎng)絡(luò)服務(wù),TCP Wrappers又增加了一層保護(hù),這層保護(hù)通過定義哪些主機(jī)允許或不允許連接到"wrapped"網(wǎng)絡(luò)服務(wù)上來實(shí)現(xiàn).TCP Wrappers為多種不同的服務(wù)提供訪問把關(guān)的功能.大多數(shù)現(xiàn)代網(wǎng)絡(luò)服務(wù)系統(tǒng),像SSH,Telnet和FTP,都利用TCP Wrappers在外來進(jìn)入系統(tǒng)的請(qǐng)求和被請(qǐng)求的服務(wù)器之間設(shè)立防范.

                    xinetd超級(jí)服務(wù)器就是這樣的一個(gè)wrapped network(會(huì)繞網(wǎng)絡(luò))服務(wù).這項(xiàng)服務(wù)被稱為一個(gè)超級(jí)服務(wù)器,是因?yàn)樗梢钥刂七B接到網(wǎng)絡(luò)服務(wù)的一個(gè)子集的連接,還能進(jìn)一步精致地進(jìn)行訪問控制.如果 TCP Wrappers和xinetd一起聯(lián)合使用,TCP Wrappers的功能就會(huì)增強(qiáng),因?yàn)閤inetd作為超級(jí)服務(wù)器可以為系統(tǒng)就訪問,登錄,捆綁,重定向和資源利用方面提供額外的服務(wù)享有權(quán)控制.

                    1.TCP Wrappers

                    在默認(rèn)情況下會(huì)安裝TCP Wrappers軟件包(tcp_wrappers),該軟件包提供基于主機(jī)的,到網(wǎng)絡(luò)服務(wù)的訪問控制.這個(gè)軟件包中最重要的組成部分是/usr/lib /libwrap.a庫.通常來說,使用libwrap.a庫進(jìn)行編譯的服務(wù)就是一個(gè)TCP Wrappers.

                    當(dāng)一個(gè)客戶試圖與一個(gè)TCP-wrapped服務(wù)進(jìn)行連接時(shí),這個(gè)服務(wù)首先會(huì)檢查主機(jī)的訪問文件(/etc/hosts.allow和 /etc/hosts.deny)來決定這個(gè)客戶是否被允許連接到這個(gè)服務(wù).在大多數(shù)情況下,這個(gè)服務(wù)還會(huì)使用syslog守護(hù)進(jìn)程(syslogd)把 這個(gè)發(fā)出請(qǐng)求的客戶用戶名以及所要求訪問的服務(wù)寫入/var/log/secure或/var/log/messages文件中.如果一個(gè)客戶被允許進(jìn)行 連接,TCP Wrappers會(huì)釋放它對(duì)所請(qǐng)求服務(wù)的連接控制權(quán),然后將不再在這個(gè)客戶與服務(wù)器間的通信過程中起任何作用.除了可以控制訪問和記錄日志信息外,TCP Wrappers還可以在允許或拒絕到網(wǎng)絡(luò)服務(wù)的連接請(qǐng)求之前來執(zhí)行相關(guān)的命令與客戶進(jìn)行交流.

                    因?yàn)門CP Wrappers是系統(tǒng)管理員所使用的安全工具庫的一個(gè)很有價(jià)值的補(bǔ)充,紅帽企業(yè)Linux中的多數(shù)網(wǎng)絡(luò)服務(wù)都與libwrap.a庫相連.這樣的應(yīng)用程序包括/usr/sbin/sshd,/usr/sbin/sendmail等.

                   

                    1.1.TCP Wrappers的優(yōu)勢(shì)

                    TCP Wrappers擁有以下其它網(wǎng)絡(luò)控制技術(shù)不具備的優(yōu)勢(shì):

                            A.對(duì)客戶和wrapped(會(huì)繞的)網(wǎng)絡(luò)服務(wù)的透明性.連接的客戶和wrapped網(wǎng)絡(luò)服務(wù)都不需要知道TCP Wrappers在使用中.合法用戶會(huì)被記錄到日志中,并獲得所需要的服務(wù),而非法用戶則無法獲得要求的服務(wù).

                            B.中央化管理多項(xiàng)協(xié)議.TCP Wrappers獨(dú)立運(yùn)行于它們所保護(hù)的網(wǎng)絡(luò)服務(wù),這就允許多個(gè)服務(wù)器應(yīng)用程序共享一組通用的訪問控制配置文件,從而簡(jiǎn)化了管理任務(wù).

             

                    1.2.TCP Wrappers配置文件

                    要決定一個(gè)客戶是否被允許連接一項(xiàng)服務(wù),TCP Wrappers會(huì)參考以下兩個(gè)文件,這兩個(gè)文件通常被稱為主機(jī)訪問文件:

                            /etc/hosts.allow

                            /etc/hosts.deny

                    當(dāng)一個(gè)TCP Wrappers接收到一個(gè)客戶請(qǐng)求時(shí),它會(huì)運(yùn)行以下幾個(gè)步驟:

                            A.檢查/etc/hosts.allow.TCP會(huì)繞服務(wù)會(huì)循序地解釋/etc/hosts.allow文件并應(yīng)用第一個(gè)為這個(gè)服務(wù)所指定的規(guī)則.如果找到了一個(gè)匹配的規(guī)則,則允許連接.如果找不到匹配的規(guī)則,就會(huì)進(jìn)行下一個(gè)步驟.

                            B.檢查/etc/hosts.deny.TCP會(huì)繞的服務(wù)會(huì)循序地來解釋/etc/hosts.deny文件.如果找到一個(gè)匹配的規(guī)則,則拒絕這個(gè)連接.如果找不到匹配的規(guī)則,則允許連接到這個(gè)服務(wù).

                    在使用TCP Wrappers保護(hù)網(wǎng)絡(luò)服務(wù)時(shí)應(yīng)該考慮以下幾個(gè)要點(diǎn):

                            A.因?yàn)閔osts.allow中的規(guī)則會(huì)首先被應(yīng)用,所以比hosts.deny中指定的規(guī)則有優(yōu)先權(quán).因此,如果訪問一項(xiàng)服務(wù)在hosts.allow中設(shè)置為允許,那么在hosts.deny中同一項(xiàng)服務(wù)的拒絕訪問設(shè)置則被忽略.

                            B.每個(gè)文件中的各項(xiàng)規(guī)則是由上到下被讀取的,第一個(gè)匹配的規(guī)則是唯一被應(yīng)用的規(guī)則.因此,規(guī)則的排列順序極其重要.

                            C.如果在這兩個(gè)文件中都沒有找到匹配的規(guī)則,或這兩個(gè)文件都不存在,那么就授予訪問這項(xiàng)服務(wù)的權(quán)限.

                            D.TCP會(huì)繞的服務(wù)并不緩存主機(jī)訪問文件中的規(guī)則,因此對(duì)hosts.allow或hosts.deny的配置改變都無需重新啟動(dòng)網(wǎng)絡(luò)服務(wù)便會(huì)馬上起作用.

             

                    1.3.格式化訪問規(guī)則

                    /etc/hosts.allow和/etc/hosts.deny文件的格式是完全相同的.每個(gè)規(guī)則都必須位于其正確的行位.空行或以井字號(hào)(#)開始的行會(huì)被忽略.

                    每條規(guī)則都使用以下基本格式來對(duì)網(wǎng)絡(luò)服務(wù)的訪問進(jìn)行控制:

                            <daemon list>: <client list> [: <option>: <option>: ...]

                    字段解釋如下:

                            <daemon list>,一個(gè)由逗號(hào)分隔的進(jìn)程名(不是服務(wù)名)列表,或ALL通配符.守護(hù)進(jìn)程列表也接受運(yùn)算符來提供更大的靈活性.

                            <client list>,一個(gè)由逗號(hào)分隔的主機(jī)名,主機(jī)IP地址,特殊模式或通配符列表,該列表用來識(shí)別受這項(xiàng)規(guī)則影響的主機(jī).客戶列表也接受運(yùn)算符來允許更大的靈活性.

                            <option>,這項(xiàng)規(guī)則被觸發(fā)時(shí)要運(yùn)行一個(gè)動(dòng)作選項(xiàng)或由冒號(hào)分隔開動(dòng)作列表.選項(xiàng)領(lǐng)域支持?jǐn)U展式,發(fā)布shell命令,允許或拒絕訪問以及修改日志記錄.

                    下面是一個(gè)基本的主機(jī)訪問規(guī)則示例:

                            vsftpd : .example.com

                    這條規(guī)則指示TCP Wrappers監(jiān)測(cè)在example.com域內(nèi)的任何主機(jī)向FTP守護(hù)進(jìn)程(vsftpd)發(fā)出的連接.如果這條規(guī)則出現(xiàn)在hosts.allow 中,連接則被接受.如果這條規(guī)則出現(xiàn)在hosts.deny中,連接則被拒絕.

                    下面的主機(jī)訪問規(guī)則比較復(fù)雜,而且使用兩個(gè)選項(xiàng)領(lǐng)域:

                            sshd : .example.com  \ :spawn /bin/echo `/bin/date` access denied>>/var/log/sshd.log \ :deny

                    請(qǐng)注意每個(gè)選項(xiàng)領(lǐng)域前面都有反斜線(\).使用反斜線可以防止由于規(guī)則太長(zhǎng)而造成失敗.

                    這個(gè)范例規(guī)定如果example.com中的某個(gè)主機(jī)試圖向SSH守護(hù)進(jìn)程(sshd)發(fā)出連接請(qǐng)求,那么執(zhí)行echo命令來將這次嘗試添加到一個(gè)專用日 志文件里,并且拒絕該連接.因?yàn)槭褂昧嗣钸x項(xiàng) deny,這一行拒絕訪問,即使它出現(xiàn)在 hosts.allow 文件里.

             

                    1.4.通配符

                    通配符使TCP Wrappers更容易匹配各種守護(hù)進(jìn)程或主機(jī).使用通配符最頻繁的是在訪問規(guī)則的客戶列表領(lǐng)域內(nèi).

                    以下是可以被使用的通配符:

                            ALL,完全匹配,可以用在守護(hù)進(jìn)程列表和客戶列表中.

                            LOCAL,與任何不包括圓點(diǎn)(.)的主機(jī)匹配,如localhost.

                            KNOWN,與任何帶有已知主機(jī)名和主機(jī)地址或已知用戶的主機(jī)匹配.

                            UNKNOWN,與任何帶有未知主機(jī)名和主機(jī)地址或未知用戶的主機(jī)匹配.

                            PARANOID,與任何帶有主機(jī)名和主機(jī)地址不相匹配的主機(jī)匹配.

             

                    1.5.模式

                    模式可以用在訪問規(guī)則的客戶領(lǐng)域里,從而更準(zhǔn)確地給客戶主機(jī)指定分組.

                    下面是一個(gè)常用模式列表:

                            A.主機(jī)名以圓點(diǎn)(.)開始,如果在一個(gè)主機(jī)名的開始放置一個(gè)圓點(diǎn),那么就與所有共享這個(gè)主機(jī)名中列出的相同組成部分的主機(jī)匹配.如:.example.com適用于example.com域內(nèi)的任何主機(jī).

                            B.IP地址以圓點(diǎn)(.)結(jié)束,如果在一個(gè)IP地址的末尾放置一個(gè)圓點(diǎn),那么就與所有共享一個(gè)IP地址的起始數(shù)值組的主機(jī)匹配.如:192.168.適用于192.168.x.x網(wǎng)絡(luò)內(nèi)的任何主機(jī).

                            C.IP地址/網(wǎng)絡(luò)掩碼對(duì),網(wǎng)絡(luò)掩碼表達(dá)式也可以作為一個(gè)模式用來控制對(duì)某一組特定的IP地址的訪問.如:192.168.0.0 /255.255.254.0適用于地址區(qū)間從192.168.0.0到192.168.1.255的任何主機(jī).

                            D.[IPv6地址]/前綴長(zhǎng)度對(duì),[網(wǎng)]/前綴長(zhǎng)度對(duì)也可以作為一種模式用來控制對(duì)某一組特定的IPv6地址的訪問.如: [3ffe:505:2:1::]/64適用于地址區(qū)間從3ffe:505:2:1::到 3ffe:505:2:1:ffff:ffff:ffff:ffff的任何主機(jī).

                            E.星號(hào)(*),星號(hào)可以用來匹配整個(gè)不同組別的主機(jī)名或IP地址,只要在含有其它模式類型的客戶列表中這些組不混雜在一起的話.如:*.example.com適用于example.com域內(nèi)的任何主機(jī).

                            F.斜線(/),如果一個(gè)客戶列表以斜線開始,這個(gè)列表就被當(dāng)作一個(gè)文件名對(duì)待.若是需要指定很大數(shù)量主機(jī)的各種規(guī)則的話,這一點(diǎn)就很有用處.

                    更多TCP Wrappers所接受的其它用到的模式.可參閱hosts_access man 5 page.

                    1.6.Portmap(端口映射器)和TCP Wrappers

                    實(shí)施TCP Wrappers的Portmap不支持主機(jī)查找,也就是說portmap命令不能用主機(jī)名來識(shí)別相應(yīng)的主機(jī).因此,在hosts.allow或 hosts.deny中對(duì)portmap的訪問控制規(guī)則必須使用IP地址來特指某主機(jī),或用關(guān)鍵詞ALL.

                    對(duì)portmap訪問控制規(guī)則的修改可能不會(huì)立即起作用.可能得重新啟動(dòng)portmap服務(wù).

                    像NIS和NFS一樣的被廣泛使用的服務(wù)都有賴于portmap來進(jìn)行運(yùn)作,所以要了解這些局限性.

             

                    1.7.算子(Operators)

                    目前,訪問控制規(guī)則接受一個(gè)算子EXCEPT,這個(gè)算子可以用在一個(gè)規(guī)則的守護(hù)程序列表中,也可以用在客戶列表中.

                    這個(gè)EXCEPT算子允許特定的例外以用來在同一個(gè)規(guī)則中拓寬匹配的范圍.

                    下面的例子來自一個(gè)hosts.allow文件,除cracker.example.com之外,允許所有example.com主機(jī)連接所有的服務(wù)

                            ALL: .example.com EXCEPT cracker.example.com

                    hosts.allow文件內(nèi)的另一個(gè)例子中,來自192.168.0.x網(wǎng)絡(luò)的所有客戶都可以使用除FTP之外的所有服務(wù)

                            ALL EXCEPT vsftpd: 192.168.0.

                    從組織結(jié)構(gòu)上來說,避免使用EXCEPT算子更簡(jiǎn)易一些.因?yàn)檫@樣可以讓其他的系統(tǒng)管理員能很快地掃描相關(guān)的文件以便查看哪些主機(jī)被允許或被拒絕訪問服務(wù),而無須通過EXCEPT算子來進(jìn)行排序.

             

                    1.8.選項(xiàng)領(lǐng)域

                    除了允許和拒絕訪問的基本規(guī)則外,紅帽企業(yè)Linux對(duì)TCP Wrappers的實(shí)施支持通過option fields對(duì)訪問控制語言的擴(kuò)展式.通過在主機(jī)訪問規(guī)則中使用選項(xiàng)領(lǐng)域,系統(tǒng)管理員可以完成多種不同的任務(wù),比如像修改日志動(dòng)作,加強(qiáng)訪問控制以及發(fā)出 shell命令.

             

                    1.9.記錄日志

                    通過使用severity命令,其選項(xiàng)領(lǐng)域讓系統(tǒng)管理員能夠很容易地改變一個(gè)規(guī)則的日志設(shè)施和優(yōu)先級(jí)別.

                    在下面的例子中,example.com域內(nèi)的任何主機(jī)向SSH守護(hù)進(jìn)程發(fā)出的各種連接會(huì)登錄到默認(rèn)的authprivsyslog設(shè)施內(nèi)(因?yàn)闆]有具體指明設(shè)施參數(shù)值),并且以emerg優(yōu)先:

                            sshd : .example.com : severity emerg

                    使用severity選項(xiàng)也可以指定某個(gè)設(shè)施.下面的例子將來自example.com 主機(jī)的任何SSH連接意圖登錄到local0設(shè)施,并以alert優(yōu)先.

                            sshd : .example.com : severity local0.alert

                    實(shí)際操作中,這個(gè)例子直到syslog守護(hù)進(jìn)程(syslogd)被配置為登錄到local0設(shè)施才會(huì)起作用.

             

                    1.10.訪問控制

                    選項(xiàng)領(lǐng)域也允許系統(tǒng)管理員通過添加allow或deny作為命令的最后選項(xiàng)來明確地以單個(gè)規(guī)則方式允許或拒絕主機(jī).

                    例如,下面的兩個(gè)規(guī)則允許來自client-1.example.com的SSH連接但卻拒絕來自client-2.example.com的連接

                            sshd : client-1.example.com : allow

                            sshd : client-2.example.com : deny

                    訪問控制以每個(gè)規(guī)則為基礎(chǔ),這樣選項(xiàng)領(lǐng)域就允許系統(tǒng)管理員把所有訪問規(guī)則寫成一個(gè)單一文件,要么是hosts.allow,要么是hosts.deny.有些系統(tǒng)管理員認(rèn)為這樣組織訪問規(guī)則更容易一些.

             

                    1.11.Shell命令

                    選項(xiàng)領(lǐng)域允許訪問規(guī)則通過下面兩個(gè)指令發(fā)出shell命令:

                            spawn,作為子進(jìn)程發(fā)出一個(gè)shell命令.這個(gè)命令可以使用/usr/sbin/safe_finger來獲取發(fā)出請(qǐng)求客戶的更多信息,或使用 echo命令來創(chuàng)建專用日志文件.在下面的例子中,試圖訪問來自example.com 域的Telnet服務(wù)的客戶被俏俏地登錄到一個(gè)專用文件.

                                    in.telnetd : .example.com \

                                            : spawn /bin/echo `/bin/date` from %h>>/var/log/telnet.log \

                                            : allow

                            twist,把要求進(jìn)行的服務(wù)轉(zhuǎn)換成特定的命令.這個(gè)命令經(jīng)常用來給外侵者設(shè)立陷阱(也叫"蜜罐兒").也可以用來向預(yù)連接的客戶發(fā)送信息.這個(gè) twist命令必須出現(xiàn)在該規(guī)則命令行的末尾.在下面的例子中,試圖訪問來自example.com域的FTP服務(wù)的客戶接收到用echo命令發(fā)送的一個(gè) 訊息.

                                    vsftpd : .example.com \

                                            : twist /bin/echo "421 This domain has been black-listed. Access denied!"

             

                    1.12.擴(kuò)展式

                    擴(kuò)展式命令與spawn和twist命令一起使用時(shí),可以提供關(guān)于客戶/服務(wù)器以及相關(guān)進(jìn)程的信息.

                    下面是一個(gè)支持?jǐn)U展式的命令列表:

                            %a,返回用戶的IP地址.

                            %A,返回服務(wù)器的IP地址.

                            %c,返回大量的客戶信息,比如用戶名和主機(jī)名,或用戶名和IP地址.

                            %d,返回守護(hù)進(jìn)程的名稱.

                            %h,返回客戶的主機(jī)名(或IP地址,如果主機(jī)名沒有提供的話).

                            %H,返回服務(wù)器的主機(jī)名(或IP地址,如果主機(jī)名沒有提供的話).

                            %n,返回客戶的主機(jī)名.如果主機(jī)名沒有提供的話,屏幕上會(huì)顯示unknown.如果客戶的主機(jī)名和主機(jī)地址不匹配的話,屏幕上會(huì)顯示paranoid.

                            %N,返回服務(wù)器的主機(jī)名.如果主機(jī)名沒有提供的話,屏幕上會(huì)顯示unknown.如果服務(wù)器的主機(jī)名和主機(jī)地址不匹配的話,屏幕上會(huì)顯示paranoid.

                            %p,返回守護(hù)進(jìn)程的進(jìn)程ID.

                            %s,返回各種不同類型的服務(wù)器信息,比如守護(hù)進(jìn)程的進(jìn)程和服務(wù)器的主機(jī)或IP地址.

                            %u,返回客戶的用戶名.如果沒有提供的話,屏幕上會(huì)顯示unknown.

                    下面用來示范的規(guī)則與spawn命令一起使用了一個(gè)擴(kuò)展式來在一個(gè)定制的日志文件中確認(rèn)客戶主機(jī).

                    當(dāng)來自example.com域的一個(gè)主機(jī)向SSH守護(hù)進(jìn)程(sshd)發(fā)出連接意圖時(shí),執(zhí)行echo命令來把這次包括客戶主機(jī)名(通過使用%h擴(kuò)展式)的連接嘗試信息記錄到一個(gè)專用文件中.

                            sshd : .example.com  \

                                    : spawn /bin/echo `/bin/date` access denied to %h>>/var/log/sshd.log \

                                    : deny

                    同樣的,擴(kuò)展式也可以用來把個(gè)性化的訊息返回給客戶.在下面的例子中,試圖訪問來自example.com域的FTP服務(wù)的客戶們得到通知,他們的訪問被服務(wù)器取締了.

                            vsftpd : .example.com \

                                    : twist /bin/echo "421 %h has been banned from this server!"

                    有關(guān)可用擴(kuò)展式的更完全的解釋,以及對(duì)附加的訪問控制選項(xiàng)的更完全的解釋,可參閱man page的第五部分,查看hosts_access(man 5 hosts_access)和hosts_options.

             

                    1.13.連接旗幟(Connection Banners)

                    當(dāng)用戶連接到服務(wù)器時(shí),用合適的旗幟標(biāo)示顯示其連接是一種很好的方式,可以讓潛在的襲擊者知道本系統(tǒng)管理員很有警惕性.同時(shí)也可以控制關(guān)于系統(tǒng)什么樣的信 息可以呈現(xiàn)給用戶.要想為一項(xiàng)服務(wù)設(shè)置一個(gè)TCP Wrappers旗幟標(biāo)示,可使用banner選項(xiàng)。

                    這個(gè)例子為vsftpd設(shè)置一個(gè)旗幟標(biāo)示.首先,創(chuàng)建一個(gè)旗幟標(biāo)示文件,可以儲(chǔ)存在系統(tǒng)的任何地方,但必須與其守護(hù)進(jìn)程同名.例如,該文件命名為/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權(quán)標(biāo)可提供客戶的多種信息,比如用戶名和主機(jī)名,或用戶名和IP地址,也許這樣會(huì)使該連接更讓人覺得有脅迫感。

                    要想使該旗幟在有外來連接進(jìn)入時(shí)顯示,可在/etc/hosts.allow文件上加上下面一行:

                            vsftpd : ALL : banners /etc/banners/

                    2.xinetd

                    xinetd控制對(duì)一個(gè)流行網(wǎng)絡(luò)服務(wù)子集的訪問,該子集包括FTP,IMAP和Telnet.同時(shí)這種服務(wù)還對(duì)訪問控制,增強(qiáng)的日志記錄功能,捆綁,重定向以及資源使用控制提供特定化服務(wù)配置選項(xiàng).

                    當(dāng)一個(gè)用戶試圖連接由xinetd控制的一個(gè)網(wǎng)絡(luò)服務(wù)時(shí),這種超級(jí)服務(wù)會(huì)接到請(qǐng)求并且查看是否有任何相匹配的TCP Wrappers訪問控制規(guī)則存在.如果連接被允許,xinetd則檢驗(yàn)該連接在其個(gè)性化的規(guī)則下對(duì)那項(xiàng)服務(wù)來說是被允許的.同時(shí)也檢查該項(xiàng)服務(wù)是否還有 足夠的資源份額以及這項(xiàng)服務(wù)是否與任何定義好的規(guī)則相沖突.如果所有條件都得到滿足,(也就是:訪問這項(xiàng)服務(wù)的請(qǐng)求被允許,這項(xiàng)服務(wù)還有足夠的資源份額, 以及這項(xiàng)服務(wù)不與任何定義好的規(guī)則相沖突),那么xinetd就開始進(jìn)行被請(qǐng)求的服務(wù)并且讓其通過對(duì)連接的訪問控制.連接建立后,xinetd就不再參與 客戶和服務(wù)器之間的通訊交流.

             

                    2.1.xinetd的配置文件

                    xinetd的配置文件如下:

                            /etc/xinetd.conf,全局xinetd配置文件.

                            /etc/xinetd.d/,包含所有具體化服務(wù)文件的目錄.

                    /etc/xinetd.conf文件包含一般的配置設(shè)定,這種設(shè)定影響xinetd控制下的每一項(xiàng)服務(wù).當(dāng)xinetd服務(wù)第一次啟動(dòng)時(shí),其設(shè)定信息就 被讀取,所以要想使改變后的配置起作用,你需要重新啟動(dòng)xinetd服務(wù).下面是一個(gè)/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以下的各個(gè)方面:

                            instances,指定xinetd可以處理同時(shí)間進(jìn)入系統(tǒng)的請(qǐng)求的最大數(shù)值.

                            log_type,配置xinetd來使用authpriv日志設(shè)施,該設(shè)施將日志條目寫入/var/log/secure文件.如果加上一個(gè)像FILE /var/log/xinetdlog一樣的命令,就會(huì)在/var/log/目錄下創(chuàng)建一個(gè)叫作xinetdlog的定制日志文件.

                            log_on_success,配置xinetd來記錄成功的連接嘗試.默認(rèn)情況下,遠(yuǎn)程主機(jī)的IP地址和服務(wù)器處理這個(gè)請(qǐng)求的處理ID都要被記錄.

                            log_on_failure,配置xinetd來記錄失敗的連接嘗試,或被拒絕的連接嘗試.

                            cps,配置xinetd來設(shè)定對(duì)任何一項(xiàng)服務(wù)來說每秒鐘最多允許25個(gè)連接.如果超過這個(gè)限制,該服務(wù)就會(huì)隱退30秒.

                            includedir/etc/xinetd.d/,包含位于/etc/xinetd.d/目錄下的并且在具體化特定服務(wù)配置文件中聲明的各種選項(xiàng).

                    /etc/xinetd.d/目錄含有xinetd管理下的每一項(xiàng)服務(wù)的配置文件以及與該服務(wù)相關(guān)連的各文件的名稱.就xinetd.conf來說,該目 錄只有當(dāng)xinetd服務(wù)啟動(dòng)時(shí)才被讀取.要使改變的配置起作用,系統(tǒng)管理員必須重新啟動(dòng)xinetd服務(wù).

                    /etc/xinetd.d/目錄下的文件格式使用與/etc/xinetd.conf相同的常規(guī)格式.各項(xiàng)服務(wù)的配置都儲(chǔ)存在一個(gè)獨(dú)立的文件中,其主要原因是這樣做使得個(gè)性化定制更容易一些,一項(xiàng)服務(wù)影響其它服務(wù)的可能性也更小一些.

                    要想了解這些文件是如何組構(gòu)在一起的,可參考以下/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服務(wù)的多個(gè)不同側(cè)面:

                            service,指定服務(wù)名稱,通常是/etc/services文件中服務(wù)列表中的一項(xiàng).

                            flags,設(shè)定連接的一系列屬性中任何一個(gè)屬性.REUSE指示xinetd來重新使用這個(gè)插座進(jìn)行Telnet連接.

                            socket_type,設(shè)定該網(wǎng)絡(luò)插座類型為stream.

                            wait,指定這項(xiàng)服務(wù)是單線程(yes)還是多線程(no).

                            user,指定該進(jìn)程運(yùn)行在哪個(gè)用戶 ID 下.

                            server,指定要發(fā)射哪個(gè)二進(jìn)制可執(zhí)行文件.

                            log_on_failure,為log_on_failure指定登錄參數(shù),在xinetd.conf中已經(jīng)定義好的除外.

                            disable,指定這項(xiàng)服務(wù)是要被中止(yes)還是不被中止(no).

                    可參閱xinetd.conf man page來獲取關(guān)于這些選項(xiàng)及其用途的更多信息.

             

                    2.2.日志記錄選項(xiàng)

                    下面的日志記錄選項(xiàng)可用于/etc/xinetd.d/目錄下的/etc/xinetd.conf和各種具體化特定服務(wù)配置文件.

                            ATTEMPT,日志記錄每次連接嘗試失敗的事實(shí)(log_on_failure).

                            DURATION,日志記錄這項(xiàng)服務(wù)被遠(yuǎn)程系統(tǒng)使用的時(shí)間長(zhǎng)度(log_on_success).

                            EXIT,日志記錄退出狀態(tài)或這項(xiàng)服務(wù)的中止信號(hào)(log_on_success).

                            HOST,日志記錄遠(yuǎn)程主機(jī)的IP地址(log_on_failure 和 log_on_success).

                            PID,日志記錄該服務(wù)器接到連接請(qǐng)求時(shí)進(jìn)行處理的處理ID(log_on_success).

                            USERID,日志記錄遠(yuǎn)程用戶使用為所有多線程主流服務(wù)而在RFC 1413中規(guī)定的方法(log_on_failure andlog_on_success).

                            如果需要一個(gè)日志記錄的完整列表,可參閱xinetd.conf man page.

             

                    2.3.訪問控制選項(xiàng)

                    xinetd服務(wù)的用戶們可以選擇使用TCP Wrappers主機(jī)訪問規(guī)則,也可以通過xinetd配置文件提供訪問控制,或二者混合使用.

                    下面是一些xinetd支持的主機(jī)訪問控制選項(xiàng):

                            only_from,只允許特別指定的主機(jī)使用這項(xiàng)服務(wù).

                            no_access,阻斷列出的主機(jī)使用這項(xiàng)服務(wù).

                            access_times,指定某一特定服務(wù)可能需要的時(shí)間段.該時(shí)間段的表達(dá)必須用24時(shí)的符號(hào)格式,即:HH:MM-HH:MM.

                    only_from和no_access選項(xiàng)可以使用很多IP地址或主機(jī)名,或者可以指定整個(gè)網(wǎng)絡(luò).與TCP Wrappers類似,將xinetd訪問控制與增強(qiáng)的日志記錄配置相結(jié)合可以提高安全性,這樣可以阻斷被禁止主機(jī)的請(qǐng)求同時(shí)又詳細(xì)記錄每一次的連接嘗 試.

                    例如,下面的/etc/xinetd.d/telnet文件可以用來阻斷來自某特定網(wǎng)絡(luò)群體的Telnet訪問,也用來限制允許用戶們登錄的總體時(shí)間段.

                            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

                            }

                    在這個(gè)例子中,當(dāng)一個(gè)來自10.0.1.0/24網(wǎng)絡(luò)的用戶系統(tǒng),比如10.0.1.2,試圖訪問Telnet服務(wù)時(shí),連接由外連主機(jī)關(guān)閉.

                    另外,他們的登錄試圖會(huì)記錄在/var/log/messages中.

                    當(dāng)TCP Wrappers和xinetd連用來進(jìn)行訪問控制時(shí),了解這兩種訪問控制機(jī)制之間的關(guān)系是很重要的.

                    當(dāng)一個(gè)客戶請(qǐng)求連接時(shí), xinetd控制下的事件發(fā)生順序如下:

                            1.xinetd守護(hù)進(jìn)程通過使用libwrap.a庫呼叫來訪問TCP Wrappers主機(jī)訪問規(guī)則.如果一個(gè)拒絕規(guī)則匹配這個(gè)客戶,那么連接就被放棄.如果一個(gè)允許規(guī)則匹配這個(gè)客戶的話,該連接就被傳遞給xinetd.

                            2.xinetd守護(hù)進(jìn)程檢查其本身的訪問控制規(guī)則,這種檢查既為xinetd服務(wù),也為被請(qǐng)求的服務(wù).如果一個(gè)拒絕規(guī)則匹配這個(gè)客戶,那么連接就被放棄.否則,xinetd 就啟動(dòng)這項(xiàng)被請(qǐng)求的服務(wù),并讓連接連到那項(xiàng)服務(wù)上.

                   

                    2.4.捆綁和重定向選項(xiàng)

                    xinetd服務(wù)配置文件支持將這項(xiàng)服務(wù)捆綁到一個(gè)IP地址上,并且把那項(xiàng)服務(wù)的外來請(qǐng)求重定向到另外一個(gè)IP地址,主機(jī)名或端口.

                    捆綁服務(wù)用特定化服務(wù)配置文件中的bind選項(xiàng)來控制,并把該服務(wù)鏈接到系統(tǒng)上的一個(gè)IP地址.捆綁配置好后,bind選項(xiàng)只允許到合法IP地址的請(qǐng)求來訪問該服務(wù).你可以使用這種方法把不同服務(wù)根據(jù)要求捆綁到不同的網(wǎng)絡(luò)接口.

                    這對(duì)擁有多重網(wǎng)絡(luò)適配器或多個(gè)IP地址的系統(tǒng)尤其有用.在這樣的系統(tǒng)內(nèi),不安全的服務(wù)(比如Telnet)可以配置成只用來偵聽連接到某專用網(wǎng)的接口而不偵聽連接到互聯(lián)網(wǎng)(Telnet)的接口.

                    redirect選項(xiàng)接受后面帶有端口號(hào)的IP地址或主機(jī)名,并配置這項(xiàng)服務(wù)來把連接到這項(xiàng)服務(wù)的任何請(qǐng)求都重定向到指定的主機(jī)和端口號(hào).重定向的這一特 征可以用來把請(qǐng)求改向到同一個(gè)系統(tǒng)上的另一個(gè)端口,重定向到同一臺(tái)機(jī)器上的一個(gè)不同IP地址,或轉(zhuǎn)移到一個(gè)完全不同的系統(tǒng)和端口號(hào),以及這些選項(xiàng)的任何結(jié) 合.因此,一個(gè)系統(tǒng)上要連接到某項(xiàng)服務(wù)的用戶可能會(huì)被路由到另外一個(gè)系統(tǒng),而無須中斷目前的系統(tǒng).

                    xinetd守護(hù)進(jìn)程要完成這樣的重定向需要不斷復(fù)制這樣一個(gè)過程:發(fā)出請(qǐng)求的客戶主機(jī)和實(shí)際提供這項(xiàng)服務(wù)的主機(jī)在連接期間要保持活動(dòng)狀態(tài)并且兩個(gè)系統(tǒng)之間不斷要有數(shù)據(jù)的傳輸轉(zhuǎn)移.

                    bind和redirect選項(xiàng)一起使用時(shí),其優(yōu)勢(shì)最為明顯.如果把一項(xiàng)服務(wù)捆綁到一個(gè)系統(tǒng)的某特定的IP地址,然后再把對(duì)該服務(wù)的請(qǐng)求重定向到只有第一 個(gè)機(jī)器可以看見的第二個(gè)機(jī)器上,那么可以使用內(nèi)部系統(tǒng)來為一個(gè)完全不同的網(wǎng)絡(luò)提供這些服務(wù).還有其它用途,比如這些選項(xiàng)可以用來限制在一個(gè)多處為家的機(jī)器 上某特定服務(wù)與一個(gè)已知IP地址的連接時(shí)間,也可以用來把對(duì)那項(xiàng)服務(wù)的任何請(qǐng)求重定向到另外一臺(tái)專門為那項(xiàng)服務(wù)配置的機(jī)器.

                    例如,考慮這樣一個(gè)系統(tǒng),一個(gè)為其Telnet服務(wù)而設(shè)定的被用作防火墻的系統(tǒng):

                            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

                            }

                    這個(gè)文件中的bind和redirect選項(xiàng)保證那臺(tái)機(jī)器上的Telnet服務(wù)被捆綁到外部IP地址(123.123.123.123),面向互聯(lián)網(wǎng)的那 個(gè)地址.另外,任何發(fā)送到123.123.123.123的Telnet服務(wù)請(qǐng)求都會(huì)通過第二個(gè)網(wǎng)絡(luò)適配器重定向到一個(gè)內(nèi)部IP地址 (10.0.1.13),這個(gè)地址只有防火墻和內(nèi)部系統(tǒng)可以訪問.這個(gè)防火墻就傳輸這兩個(gè)系統(tǒng)之間的通訊交流,可是該連接系統(tǒng)卻認(rèn)為連接的是 123.123.123.123,而實(shí)際上連接的是一個(gè)不同的機(jī)器.

                    這一特征對(duì)使用寬帶連接又只有一個(gè)固定的IP地址的用戶尤其有用.使用NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)時(shí),網(wǎng)關(guān)機(jī)器背后的使用內(nèi)部專用IP地址的各系統(tǒng)在該網(wǎng)關(guān)系 統(tǒng)以外是不能被使用的.然而,當(dāng)由xinetd控制的某些服務(wù)用bind和redirect選項(xiàng)配置時(shí),該網(wǎng)關(guān)機(jī)器可以被用作外部系統(tǒng)和某特定被配置好來 提供該服務(wù)的內(nèi)部機(jī)器之間的服務(wù)代理.另外,多種不同的xinetd訪問控制和日志選項(xiàng)也可以接受額外的保護(hù).

             

                    2.5.資源管理選項(xiàng)

                    xinetd守護(hù)進(jìn)程可以增加一層基本的不受DoS(服務(wù)拒絕)攻擊的保護(hù).

                    下面是一個(gè)可以幫助限制類似攻擊成效的命令列表:

                            cps=,限制外來連接的速度.這個(gè)命令有兩個(gè)參數(shù):

                                    第一個(gè)參數(shù),每分鐘能夠處理的連接數(shù)目.如果處理外來連接的速度高于這個(gè)數(shù)目,該服務(wù)就會(huì)暫時(shí)中斷,默認(rèn)值是50.

                                    第二個(gè)參數(shù),服務(wù)中斷幾秒中之后才能重新啟動(dòng)該服務(wù),其默認(rèn)間隙是10秒鐘.

                            instances,指明一項(xiàng)服務(wù)所能允許的連接總數(shù).這項(xiàng)命令接受任何整數(shù)數(shù)值或UNLIMITED.

                            per_source,指明一臺(tái)主機(jī)所能允許的一項(xiàng)服務(wù)的連接總數(shù).這項(xiàng)命令接受任何整數(shù)數(shù)值或UNLIMITED.

                            rlimit_as,以千字節(jié)或MB為單位指明該服務(wù)所占用的內(nèi)存空間.這項(xiàng)命令接受任何整數(shù)數(shù)值或UNLIMITED.

                            rlimit_cpu,以秒為單位指明一項(xiàng)服務(wù)所占用 CPU 的時(shí)間總量.這項(xiàng)命令接受任何整數(shù)數(shù)值或UNLIMITED.

                            max_load,定義CPU用量或一項(xiàng)服務(wù)負(fù)載平均限量值.它接受一個(gè)非固定點(diǎn)的數(shù)值參數(shù).負(fù)載平均是對(duì)某一時(shí)間內(nèi)系統(tǒng)有多少進(jìn)程處于活動(dòng)狀態(tài)的一個(gè)大 體測(cè)量.請(qǐng)參閱 uptime、who 和 procinfo 命令來獲取關(guān)于負(fù)載平均的更多信息.

                    還有很多可以使用的資源管理選項(xiàng)可以用來管理xinetd.可參閱xinetd.conf man page來獲取更多信息.

             

                    2.6.有用的網(wǎng)站

                            http://www.xinetd.org/,xinetd 的主頁,含有配置文件示例,配置文件特點(diǎn)的詳細(xì)列表和一個(gè)很有用的FAQ.

                            http://www.macsecurity.org/resources/xinetd/tutorial.shtml,一部詳細(xì)的學(xué)習(xí)指南,討論多種不同方式來優(yōu)化xinetd默認(rèn)配置文件以滿足特定的安全需要.

            posted on 2009-08-20 12:51 旅途 閱讀(1169) 評(píng)論(5)  編輯 收藏 引用 所屬分類: LINUX基礎(chǔ)、管理

            Feedback

            # re: 用TCP Wrappers和xinetd使系統(tǒng)安全 2010-06-09 12:00 Jannie19Russo

            Do you exactly know that you could have a good job in <a href="http://www.topdissertations.com">dissertation service</a> or essay writers, because different people are willing to know the smashing news connecting with this good post or <a href="http://www.topdissertations.com">custom thesis</a> so, they buy research papers online.   回復(fù)  更多評(píng)論   

            # re: 用TCP Wrappers和xinetd使系統(tǒng)安全 2013-04-09 01:32 home loans

            Houses and cars are not cheap and not every person is able to buy it. But, mortgage loans are invented to support different people in such kind of cases.   回復(fù)  更多評(píng)論   

            久久精品二区| 国产精品久久成人影院| 国内精品久久久久影院优 | 国产精品久久久久久久人人看 | 久久久精品国产Sm最大网站| A狠狠久久蜜臀婷色中文网| 亚洲成色www久久网站夜月| 国产精品亚洲综合久久| 欧美日韩久久中文字幕| 亚洲中文字幕无码久久综合网| 精品久久久一二三区| 国内高清久久久久久| 欧美大香线蕉线伊人久久| 日韩精品久久久久久久电影蜜臀 | 一本一本久久a久久综合精品蜜桃| 少妇人妻综合久久中文字幕| 青青草原综合久久大伊人| 伊人久久大香线蕉av不卡| 国产精品久久免费| 9191精品国产免费久久| 久久精品国产亚洲精品| 久久久久久久精品成人热色戒| 欧美丰满熟妇BBB久久久| 久久夜色精品国产亚洲| 色综合久久88色综合天天 | 亚洲中文字幕无码久久2017| 久久精品免费观看| 欧美午夜精品久久久久久浪潮| 久久久久久久久久久久久久| 91精品国产乱码久久久久久| 久久一本综合| 99久久无码一区人妻a黑| 欧洲性大片xxxxx久久久| 久久精品人人做人人妻人人玩| 久久精品国产亚洲7777| 人妻少妇久久中文字幕| 日韩十八禁一区二区久久| 国产成人精品白浆久久69| 午夜精品久久久久久影视777| 久久国产精品久久精品国产| 7777精品伊人久久久大香线蕉|