hosts.allow、hosts.deny配置不生效的解決方法


數據包經過本地iptables防火牆后的權限分布圖

數據包通過iptables規則檢查之后,系統還會判斷這個數據包所使用的的應用程序是否調用到Libwrap.So鏈接庫文件,如果使用Libwrap.so鏈接庫文件的話會走/etc/hosts.allow和hosts.deny文件,可以在這兩個文件再次做一次管控,如果應用程序不調用Libwrap.so鏈接庫那么數據包就直接到達本地應用程序了。

 

說明:

1.一個IP請求連入,linux的檢查策略是先看/etc/hosts.allow中是否允許,如果允許直接放行;如果沒有,則再看/etc/hosts.deny中是否禁止,如果禁止那么就禁止連入。

2.實驗發現對/etc/hosts.allow和/etc/hosts.deny的配置不用重啟就立即生效,但不管重啟不重啟當前已有會話都不會受影響;也就是說對之前已經連入的,即便IP已配置為禁止登錄會話仍不會強制斷開。不過不知是否所有linux都一樣,由此第四步標為可選。

3.網上發現有些教程寫成不是sshd而是in.sshd不是in.telnetd而是telnetd的,個人覺得應該是獨立啟的不用加in.托管於xinetd的需要加in.

 

通過配置hosts.allow、hosts.deny,控制SSH限制固定IP登陸

按照以往的方法,分別在hosts.allow、hosts.deny加入以下配置

# more /etc/hosts.allow

sshd:192.168.x.x

# more /etc/hosts.deny

sshd:all

保存后測試,發現配置無效,其他IP還是可以登陸成功。

解決方法如下:

hosts.allow和hosts.deny屬於tcp_Wrappers防火牆的配置文件,而用tcp_Wrappers防火牆控制某一服務訪問策略的前提是,該服務支持tcp_Wrappers防火牆,即該服務應用了libwrapped庫文件。

查看某服務(如ssh)是否應用了libwrapped庫文件的方法是:

# ldd /usr/sbin/sshd |grep libwrap.so.0

沒有顯示,表示此服務器上安裝的SSH沒有應用libwrapped庫文件,也就不能用tcp_Wrappers防火牆控制訪問策略。(一般情況下服務器默認安裝的SSH都是支持libwrapped庫文件,這台服務器不清楚為什么不支持)

最終解決方法是重新安裝SSH。

# yum -y remove openssh

# yum -y install openssh

# yum -y install openssh-server

安裝完成后再次查看是否應用了libwrapped庫文件,顯示支持。

# ldd /usr/sbin/sshd |grep libwrap.so.0

        libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f3fb7f09000)

再測試SSH登陸,配置生效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM