tcp wraper和xinetd的訪問控制

 一、tcp wrapper

tcp wrapper是一種訪問控制工具,類似於iptables可以作訪問控制。

tcp wrapper只能對基於tcp協議的服務作訪問控制,但並不是所有基於tcp協議的服務都能實現用tcp wraper作訪問控制。

1.tcp wrapper實現訪問控制主要依靠兩個文件,一個是/etc.hosts.allow文件,另一個是/etc/hosts.deny文件.從文件的名字上可以理解:一個是定義允許的,一個是定義拒絕的。那這兩個文件生效的次序是怎樣的呢?

 

說明:如圖所示,N表示沒有匹配的規則,Y表示有匹配的規則,OK表示允許訪問,DENY表示拒絕訪問。

首先檢查hosts.allow文件中是否有匹配的規則。如果有匹配的規則,則允許訪問;如果沒有匹配的規則,則檢查hosts.deny文件。

其次,檢查hosts.deny文件中是否有匹配的規則。如果有匹配的規則,則拒絕訪問;如果沒有匹配的規則,則視爲默認規則,默認規則則爲允許,所以允許訪問。

2.文件內容的書寫規則:

Daemon_list:client_list[:options]

Daemon_list 要寫的可執行程序的二進制文件名。例ssh的二進制文件名sshdhttp的二進制文件名爲httpd

ALL 本機上所有接受tcp wrapper 訪問控制的服務

client_list

IP 單獨的ip地址  例:172.16.22.1

Network address 不能使用長度格式,只能使用完整長度格式。例:172.16. 172.16.0.1/255.255.0.0  但不能使用172.16.0.1/16

HOSTNAME 主機名 例:www.lihuan.com

[:options] 選項,可有可無

看個例子:

例:ssh僅允許172.16.0.0/16網段訪問。

首先在/etc/hosts.allow中定義:

sshd:172.16.

然後在/etc/hosts.deny中定義:

sshd:ALL

即可實現要求了。

3.特殊用法

spaw  記錄日誌功能

DENY 拒絕

ALLOW 允許

例:ssh允許172.16.0.0/16網段訪問。

可在/etc/hosts.deny中這樣定義:

sshd:172.16. :ALLOW

例:ssh允許172.16.0.0/16網段訪問,記錄日誌。

可在/etc/hosts.allow中這樣定義:

sshd:172.16. :spawn echo ”someone login” >> /var/log/tcpwrapper.log

spawn中也可帶上這幾個選項:

%c  客戶端信息

%s  服務端信息

%h  客戶端主機名

%p  服務端的pid

例:ssh允許172.16.0.0/16網段訪問,記錄日誌。

sshd:172.16. :spawn echo ”someone login attempt from%c to %s” >> /var/log/tcpwrapper.log

 

二、xinetd

xinetd是超級守護進程,xinetd提供類似於inetd+tcp wrapper的功能,但是更加強大和安全。

進程有獨立守護進程和非獨立守護進程。

獨立守護進程響應速度快,消耗資源大;費獨立守護進程響應速度慢,但消耗資源少,需要超級守護進程xinetd進行代理。

支持對tcpudprpc服務

* 基本訪問控制

only_from 僅允許  例:only_from = 172.16.22.1  only_from = 172.16.22.1/16

no_access 不允許  例:no_access = 172.16.22.1  no_access = 172.16.22.1/16

備註:兩者同時使用,一般誰的匹配範圍小誰生效,但不建議同時使用。

* 基於時間段的訪問控制

access_times  例:access_times = 10:00-16:00

* 基於資源的訪問控制

cps  能限制每秒鐘客戶端能啓動服務的個數(帶兩個參數:每秒連接數的最大值;超出最大連接數後臨時禁用的時長例:cps = 50 5

per_source  能限制每個客戶端能啓動的最大服務器數目 例:per_source = 20

instances  能限制客戶端能啓動的最大服務器數目總數 例:instances = 200

* 功能完備的log功能,即可以記錄連接成功也可以記錄連接失敗的行爲

type_log  type_log=FILE /var/log/ftp.log

  * 將某個服務綁定在特定的系統接口上,從而能實現只允許私有網絡訪問某項服務
   bind 
例:bind = 172.16.22.1

這些訪問控制規則在哪兒寫呢?當然會有一個文件專門保存這些規則的:/etc/xinetd.conf

只要把規則寫進這個文件就會生效!

service daytime
{
        socket_type     = stream
        protocol        = tcp
        wait            = no
        user            = nobody
        server          = /usr/sbin/in.date
        instances       = 1
        nice            = 10
        only_from       = 0.0.0.0 

} 

 

 

defaults
	{
	     log_type		 = FILE /var/log/servicelog
	     log_on_success	 = PID
	     log_on_failure	 = HOST RECORD
	     only_from		 = 128.138.193.0 128.138.204.0
	     only_from		 = 128.138.252.1
	     instances		 = 10
	     disabled		 = rstatd
    }

 

看看上面這2個例子,相信你應該懂得什麼意思了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章