TCP_Wrappers 基於TCP的安全控制

來源:互聯網
上載者:User

標籤:錯誤   change   login   ext   路徑   not   應該   擴充   cto   

TCP_Wrappers簡介

TCP_Wrappers全稱:Transmission Control Protocol(TCP)Wrappers

是一個基於主機的網路存取控制表系統,用於過濾對類Unix系統(如Linux或BSD)的網路訪問。

其能將主機或子網IP地址、名稱及ident查詢回複作為篩選標記,實現存取控制。

Tcp_Wrappers主要特點

? 工作在第四層(傳輸層)的TCP協議

? 對有狀態串連的特定服務進行安全檢測並實現存取控制

? 以庫檔案形式實現

? 某進程是否接受libwrap的控製取決於發起此進程的程式在編譯時間是否針對libwrap進行編譯的

判斷程式是否支援tcp_wrapper

程式如果調用了libwrap.so庫,表示支援。

ldd 程式路徑|grep libwrap.sostrings 程式路徑|grep libwrap.so#ldd /usr/sbin/sshd|grep libwrap.so    libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f9851678000)#ldd /usr/sbin/vsftpd |grep libwrap.so    libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f802ef50000)#strings `which sshd`|grep libwrap.solibwrap.so.0
TCP_Wrappers的使用

TCP Wrappers是通過/etc/hosts.allow和/etc/hosts.deny這兩個設定檔來實現一個類似防火牆的機制。

設定檔

協助參考:man 5 hosts_access,man 5 hosts_options

設定檔 規則定義
/etc/hosts.allow 允許訪問規則
/etc/hosts.deny 拒絕訪問規則

注意:說明文檔中表示此檔案也可以實現拒絕的規則,本著見名知義和管理清晰化的指引,這種寫法不是討論的重點。

文法
daemon_list : client_list [ : shell_command ]daemon_list          單個應用程式的二進位檔案名,而不是服務名,如果有多個,用逗號或空格分隔。如sshd,vsftpd 或 sshd vsftpd        可以綁定服務地址,如,[email protected]:ALL        ALL表示所有接受tcp_wrapper控制的服務程式        支援萬用字元client_list        用戶端列表        ? 基於單個IP地址:192.168.10.1         ? 基於網段IP地址:192.168.1. 注意,192.168.1.0這個寫法是錯誤的。        ? 基於主機名稱:www.hunk.tech .hunk.tech較少用        ? 基於網路/掩碼:192.168.0.0/255.255.255.0        ? 基於net/prefixlen: 192.168.1.0/24(僅CentOS7)        ? 基於網路組(NIS 域):@mynetwork        ? 內建ACL:            ALL 所有(進程或者主機)            LOCAL 名稱中不帶點的主機            KNOWN 可以解析的主機名稱            UNKNOWN 無法解析的主機名稱            PARANOID 正、反向查詢不匹配或無法解析        支援萬用字元shell_command        執行指令        如:sshd:all:spawn echo "`date +%%F-%%T` from %a pid=%p to %s" >> /app/sshd.logEXCEPT是排除的意思,一行規則裡可以有多個,後面的是對前面的結果集進行排除。         vsftpd:172.16. EXCEPT 172.16.100.0/24 EXCEPT 172.16.100.1        匹配整個172.16網段,但是把172.16.100的網段排除,在排除172.16.100網段中又把172.16.100.1的IP給排除。spawn 啟動一個外部程式完成執行的操作,可以支援內建變數。內建變數請man ,找%的選項        %a (%A) 用戶端IP        %c      用戶端資訊,可以是IP或主機名稱(如果能解析)        %p      伺服器處理序資訊 (PID)        %s      已連線的服務端的資訊        %%      當規則中包含%時,使用雙%轉義twist 特殊擴充以指定的命令執行,執行後立即結束該串連。需在spawn之後使用。
樣本

使用的2台測試主機網路IP配置如下:

本文中簡稱 主機 IP 1 IP 2
6A 6-web-1.hunk.tech 192.168.7.201 192.168.5.102
7B 7-web-2.hunk.tech 192.168.7.202 192.168.5.103

預設hosts.allow和hosts.deny 設定檔為空白,表示全部允許。

#ssh 192.168.7.202Last login: Thu Feb  8 11:04:58 2018 from 192.168.7.201

拒絕某個IP訪問:

7B:vim /etc/hosts.denysshd:192.168.7.2016A:#ssh 192.168.7.202ssh_exchange_identification: Connection closed by remote host配置規則儲存後,立即生效7B:日誌會明確記錄#tail -n1 /var/log/secureFeb  8 11:18:29 7-web-2 sshd[1811]: refused connect from 192.168.7.201 (192.168.7.201)

那如果一個client_list同時存在於2個檔案呢

7B:tail -n1 /etc/hosts.deny >> /etc/hosts.allow 6A:#ssh 192.168.7.202Last login: Thu Feb  8 11:05:33 2018 from 192.168.7.201

看到了吧,是可以允許訪問的,這就涉及到了執行處理機制了。

因此,上面的結果就是允許訪問了。因為在hosts.allow已經匹配了。

僅允許內網IP訪問

假設192.168.7.202是7B的肉網卡地址,那麼規則應該為:#vim /etc/hosts.deny[email protected]:ALL#ssh -b 192.168.7.201 192.168.7.202         > -b 是使用源地址為X.X.X.X訪問bind: 192.168.7.201: Cannot assign requested addressssh: connect to host 192.168.7.202 port 22: Cannot assign requested address

把每個ssh登入日誌記錄到檔案

#vim /etc/hosts.allowsshd:all:spawn echo "`date +%%F-%%T` from %a pid=%p to %s" >> /app/sshd.log#cat /app/sshd.log2018-02-08-15:59:53 from 192.168.7.202 pid=2565 to [email protected]#ps aux |grep 2565root       2565  0.0  2.3 145696  5328 ?        Ss   15:59   0:00 sshd: [email protected]/2
應用執行個體

編寫指令碼/root/bin/checkip.sh,每5分鐘檢查一次,如果發現通過ssh登入失敗次數超過10次,自動將此遠程IP放入Tcp_Wrapper的黑名單中予以禁止防問

#!/bin/bash#定義 休眠時間sleeptime=300#定義 通過ssh登入失敗次數num=10#定義 黑名單檔案file=/etc/hosts.deny#無限迴圈while true;do        #將失敗登入的記錄逐行讀入變數        lastb | grep ssh|awk -F "[ ]+" ‘{print $3}‘|uniq -c | while read conn ip;do        #判斷失敗次數        if  [ "$conn" -ge "$num" ];then                #判斷記錄的IP是否存在                egrep -q ^sshd.*$ip $file                #如果不存在記錄,將追加記錄至指定黑名單檔案                [ $? -ne 0 ] &&  echo "sshd:$ip" >> $file        fi        donesleep $sleeptimedone

使用watch -n1 cat /etc/hosts.deny來觀察動態檔案

總結:TCP_Wrappers
適用於需求簡單的應用情境,並且受到監視軟體的是否支援libwrap.so庫局限。

TCP_Wrappers 基於TCP的安全控制

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.