天天看點

【linux基礎】27、tcp_wrap和xinetd

一、xinetd簡介

1、什麼是xinetd

xinetd:eXtended InterNET Daemon  擴充的網際網路守護程式

   xinetd是新一代的網絡守護程序服務程式,又叫超級守護程序,常用來管理多種輕量級Internet服務。xinetd提供類似于inetd + tcp_wrapper的功能,但是更加強大和安全。

2、Xinetd的缺點

   目前最大的缺點是對RPC支援的不穩定,但是可以啟動protmap,使它與xinetd共存來解決這個問題。

3、使用xinetd啟動守護程序

   原則上任何系統服務都可以使用xinetd,然而最适合的應該是那些常用的網絡服務,同時,這個服務的請求數目和頻繁程度不會太高。像DNS和Apache就不适合采用這種方式,而像FTP、Telnet、SSH等就适合使用xinetd模式。 

二、xinetd的使用

  xinetd為接收使用者請求較少的服務專門提供監聽功能,有請求時,xinetd臨時地啟動相應服務并響應請求,結束後又關掉相應的服務。

  這種被xinetd管理的服務叫非獨立守護程序又被稱為瞬時守護程序:他們無需定義在運作級别下,隻需要一次性地定義xinetd的運作級别

  能自我管理,無需xinetd提供監聽服務的程序叫獨立(standalone)守護程序

1、那如何啟動基于xinetd的服務?

例如,我想啟動rsync服務

在/etc/inetd.d/目錄下每個被xinetd管理的服務都有一個配置檔案:

我們可以總結出:

   非獨立守護程序和獨立守護程序不一樣,非獨立守護程序使用chkconfig既然設定開機是否運作,也設定服務目前開啟和關閉,而獨立守護程序chkconfig是僅設定開機在哪些運作級别下是否運作

   瞬時守護程序依賴于xinetd監聽端口,當xinetd服務沒啟動時,非獨立守護程序啟動着也沒用

二、tcp_wrapper

1、tcp_wrapper簡介

  tcp_wrapper  tcp包裝器,

  是一種通路控制工具,類似于iptables,可以作通路控制。

  tcp_wrapper隻能對基于tcp協定的服務作通路控制,但并不是所有基于tcp協定的服務都能實作用tcp wraper作通路控制。

2、tcp_wrapper工作機制

守護程序:tcpd,也可以說tcp_wrapper是一個庫,程式依賴于tcp_wrapper就表明接受tcp_wrapper控制

配置檔案:/etc/hosts.allow,/etc/hosts.deny

 注意:

    并非所有服務均能由tcp_wrapper控制

    判斷某服務程式是否能由tcp_wrap控制

     動态編譯:

        ldd指令檢測其是否連結至libwrap庫上即可

    libwarp.so.0 =>/lib64/libwarp.so.0

     靜态編譯:

       string /path/to/program

       如果出現以下某項說明也接受tcp_wrapper控制   

         hosts.allow

         hosts.deny

   tcp_wrapper實作通路控制主要依靠兩個檔案,一個是/etc.hosts.allow檔案,另一個是/etc/hosts.deny檔案從檔案的名字上可以了解:一個是定義允許的,一個是定義拒絕的。那這兩個檔案生效的次序是怎樣的呢?

【linux基礎】27、tcp_wrap和xinetd

說明:如圖所示,N表示沒有比對的規則,Y表示有比對的規則,OK表示允許通路,DENY表示拒絕通路。

比對機制:

  1.先檢查/etc/hosts.allow,如果被允許,則直接放心

  2.如果/etc/hosts.allow沒有比對項,則檢查/etc/hosts.deny,如果被拒絕,則禁止通路;

  3.如果二者均無比對,則放行

3、tcp_wrapper配置

配置檔案文法格式:

   daemon_list:client_list [:options]

   程序清單:用戶端清單

daemon_list的格式:

   應用程式名稱(不是程序名),如果有多個,用逗号分隔即可

   ALL:比對所有的清單

client_list:

    ip位址:172.16.100.100

    主機名:www.magedu.com

    網絡位址/子網路遮罩:掩碼僅允許使用長格式,不允許使用CIDR格式

                 172.16. 表示172.16.0.0/255.255.0.0

[:options]

   在hosts.allow檔案中使用deny選項:表示在hosts.allow檔案中定義拒絕規則

   在hosts.deny檔案中使用allow選項:表示在hosts.deny檔案中定義放行規則

tcp_wrapper有幾個内置的宏:

   用于client_list的有:ALL,KNOWN(主機名能正常解析的),UNKNOWN(主機名不能正常解析),PARANOID(主機名正反項解析不比對的)

   用于daemon_list的有:ALL

            EXCEPT:可以使用者client和daemon之中,起到排除功能

例子:

spawn

  發起執行一條指令的意思,可以用來記錄日志

    %c:user@host

    %s:server@host

    %h:用戶端主機名

    %p:伺服器上的程序PID

man 5 hosts_access:擷取其完整幫助資訊

注意:

   spaw要定義在用戶端被哪個檔案拒絕的那個檔案裡才生效

   echo的資訊無需加引号,否則,指令替換可能不會進行

練習:

   使用tcp_wrapper控制vsftp服務僅允許172.16.0.0網絡中的主機通路,但要拒絕172.16.200.中的所有主機,對所有的拒絕通路嘗試使用記錄日志