天天看點

linux下tcpwraper和xinetd超級守護程序通路控制詳解

linux下tcpwraper和xinetd超級守護程序通路控制詳解

1.tcpwraper概念:不同于iptables防火牆網絡通路控制,iptables可對于tcp/ip進行所有通路控制并且工作在核心中,而tcpwraper隻對部分具有tcp協定的服務進行網絡通路控制,友善那些對iptables不熟悉的人使用,也就是說,隻有那些連結libwraper.so庫檔案的服務,才受tcpwraper控制

2.ldd指令查詢服務是否加載動态libwrap.so庫檔案,如果加載,則受tcpwraper控制,否則不受控制

 ldd `which 服務名稱` | grep libwrap

例如:ldd `which sshd` | grep libwrap

   ldd `which xinetd` | grep libwrap

3.strings指令查詢是否加載靜态hosts.allow和host.deny檔案,如果加載,則受tcpwraper控制,否則不受控制

 strings `which portmap` | grep hosts

4.tcpwraper控制機制:主要由/etc/hosts.allow和/etc/hosts.deny這兩個檔案進行控制

比對順序:首先查詢/etc/hosts.allow,再查詢/etc/hosts.deny,最後預設規則是允許所有通過

/etc/hosts.allow和/etc/hosts.deny檔案格式:

服務清單: 用戶端清單 [:選項]

服務清單有下幾種類型寫法:

        sshd

        vsftpd,sshd,in.telnetd   #可以寫多個服務

        ALL

        [email protected]        

用戶端清單有下幾種類型寫法:

        IP       

        network/mask(如172.16.1.0/255.255.255.0)

        172.16.1.

        FQDN       #完整合格域名,如mail.willow.com

        .example.com  #域名

        ALL        #所有主機

        LOCAL,KNOWN,UNKNOWN,PARANOID 

        EXCEPT #意思是除了

選項有如下幾種類型寫法:

        DENY   #在host.allow檔案中可以寫DENY

        ALLOW  #在host.deny檔案中可以寫ALLOW

        spawn  #可以在後面執行一樣指令

tcp_wraper宏定義:

%c:代表用戶端資訊(user@host)

%s:代表伺服器資訊(server@host)

%h:用戶端主機名(hostname)

%p:服務ID(server PID)

tcp_wraper宏定義查詢方法: man 5 hosts_access

5.執行個體:不允許1.1.1.0/24通路本機telnet服務,但允許1.1.1.100通路,其他用戶端不受控制

5.1.方法1:

vim /etc/hosts.allow

in.telnetd: 1.1.1.100

vim /etc/hosts.deny

in.telnetd: 1.1.1.0/255.255.255.0

5.2.方法2:

in.telnetd: 1.1.1. EXCEPT 1.1.1.100

5.3.方法3

in.telnetd: ALL EXCEPT 1.1.1. EXCEPT 1.1.1.100

in.telnetd: ALL

6.在hosts.allow檔案中,拒絕1.1.1.0/24通路本機sshd服務,這是一種不常見寫法

vim /etc/host.allow

sshd: 1.1.1. :DENY

7.允許1.1.1.0/24通路本機sshd服務,但必須将其登入日志進行記錄

sshd: 1.1.1. :spawn echo "`date`, Login attempt from %c to %s" >> /var/log/tcpwarper.log

8.xinetd超級守護程序

守護程序分為獨立守護程序和瞬時或短暫守護程序

而xinetd屬于獨立守護程序,但xinetd控制多個瞬時或短暫守護程序,是以叫做超級守護程序

xinetd超級守護程序:有多個非獨立守護程序,也是瞬時或短暫守護程序

主要配置檔案:/etc/xinetd.conf,包含/etc/xinetd.d/*所有短暫守護程序配置檔案

配置檔案分為兩部分:全局和服務配置

配置檔案格式:

        service <服務名稱>

             (

               屬性 操作符 值

               ..............

              )

9.xinetd超級守護程序通路控制

man xinetd.conf #查詢此檔案的配置參數方法

比對規則:only_from與no_access誰精确比對用誰的條目

格式如下:

only_from =          #僅允許通路的用戶端,取值有如下常見幾種

   IP             #如1.1.1.100

   NETWORK          #如1.1.1.0/24或1.1.1.0/255.255.255.0

   HOSTNAME         #如mail.willow.com

   DOMAIN          #如.mail.willow

no_access =          #拒絕通路的用戶端,取值格式與only_from一樣

10.時間通路控制:

格式:  access_times = hh:mm-hh:mm   

例如:  access_times = 08:00-17:00   #僅允許在上午8點至下午5點允許通路

11.偵聽的位址通路控制

格式:  bind = 

     interface =   #不常見

例如:本機有3個IP,172.16.1.6,172.16.2.6,192.168.1.6,隻想偵聽172.16.2.6這個位址

      bind =  172.16.2.6

12.資源通路控制

 cps = 每秒連接配接的最大并發數  如超過最大并發數的禁用時長

 per_source =  每個IP位址最多連接配接個數

 instances =   最大連接配接數(執行個體)

 banner   =   自定義檔案路徑    #登入提示資訊

13.實驗對rsync服務進行如下通路控制:

  (1).偵聽在1.1.1.19位址并提供服務

  (2).僅允許1.1.1.0/24網絡内的主機通路,拒絕1.1.1.144主機通路

  (3).僅允許同時運作最多3個執行個體,并且每個IP隻能發起2個請求

  (4).僅允許在上午10點至下午15點允許通路

vim /etc/xinetd.d/rsync

service rsync

{

        disable = no

        bind          = 1.1.1.19

        only_from       = 1.1.1.0/24

        no_access       = 1.1.1.144

        instances       = 3

        per_source      = 2

        access_times     = 10:00-15:00

}

linux下tcpwraper和xinetd超級守護程式通路控制詳解

service xinetd restart

netstat -antlp | grep 873    #檢視rsync服務是否啟動且rsync工作在873/tcp端口

再使用rsync指令進行測試即可

14.xinetd超級守護程序也可以通過syslog和file進行記錄日志,相關檢視/etc/xinetd.conf檔案

log_type  = SYSLOG daemon info

log_type  = FILE /var/log/xxx.log

15.總結:linux系統下的通路控制,常見有3種實作方式,iptables,tcp_wraper,xinetd方式

具體使用哪種方式控制通路,看個人使用習慣和技術特長,因人而異,隻要達到目的即可,哈!

繼續閱讀