在Linux下使用TCP封裝器來增強網絡服務安全

在Linux下使用TCP封裝器來增強網絡服務安全在Linux下使用TCP封裝器來增強網絡服務安全

就這一點而言,你能夠把這個工具看做是一個基於主機的訪問控制列表,並且並不能做爲你的系統的終極安全措施。經過使用一個防火牆和 TCP 封裝器,而不是隻偏心其中的一個,你將會確保你的服務不會被出現單點故障。html

正確理解 hosts.allow 和 hosts.deny 文件linux

當一個網絡請求到達你的主機的時候,TCP 封裝器會使用 hosts.allow 和 hosts.deny (按照這樣的順序)來決定客戶端是否應該被容許使用一個提供的服務。.
在默認狀況下,這些文件內容是空的,或者被註釋掉,或者根本不存在。因此,任何請求都會被容許經過 TCP 過濾器並且你的系統被置於依靠防火牆來提供全部的保護。由於這並非咱們想要的。因爲在一開始咱們就介紹過的緣由,清確保下面兩個文件都存在:安全

# ls -l /etc/hosts.allow /etc/hosts.deny 

兩個文件的編寫語法規則是同樣的:服務器

<services> : <clients> [: <option1> : <option2> : ...] 

在文件中,
1. services 指當前規則對應的服務,是一個逗號分割的列表。
2. clients 指被規則影響的主機名或者 IP 地址,逗號分割的。下面的通配符也能夠接受:網絡

1).ALL 表示全部事物,應用於clients和services。ssh

2).LOCAL 表示匹配在正式域名中沒有徹底限定主機名(FQDN)的機器,例如 localhost。tcp

3).KNOWN 表示主機名,主機地址,或者用戶是已知的(便可以經過 DNS 或其它服務解析到)。工具

4).UNKNOWN 和 KNOWN 相反。htm

5).PARANOID 若是進行反向 DNS 查找彼此返回了不一樣的地址,那麼鏈接就會被斷開(首先根據 IP 去解析主機名,而後根據主機名去得到 IP 地址)。字符串

3. 最後,一個冒號分割的動做列表表示了當一個規則被觸發的時候會採起什麼操做。

你應該記住 /etc/hosts.allow 文件中容許一個服務接入的規則要優先於 /etc/hosts.deny 中的規則。另外還有,若是兩個規則應用於同一個服務,只有第一個規則會被歸入考慮。不幸的是,不是全部的網絡服務都支持 TCP 過濾器,爲了查看一個給定的服務是否支持他們,能夠執行如下命令:

# ldd /path/to/binary | grep libwrap 

若是以上命令執行之後獲得瞭如下結果,那麼它就能夠支持 TCP 過濾器,sshd 和 vsftpd 做爲例子,輸出以下所示。
在Linux下使用TCP封裝器來增強網絡服務安全在Linux下使用TCP封裝器來增強網絡服務安全

如何使用 TCP 過濾器來限制服務的權限

當你編輯 /etc/hosts.allow 和 /etc/hosts.deny 的時候,確保你在最後一個非空行後面經過回車鍵來添加一個新的行。
爲了使得 SSH 和 FTP 服務只容許 localhost 和 192.168.0.102 而且拒絕全部其餘用戶,在 /etc/hosts.deny 添加以下內容:

sshd,vsftpd : ALL 
ALL : ALL 

並且在 /etc/hosts.allow 文件中添加以下內容:

sshd,vsftpd : 192.168.0.102,LOCAL 

這些更改會馬上生效而且不須要從新啓動。
在下圖中你會看到,在最後一行中刪掉 LOCAL 後,FTP 服務器會對於 localhost 不可用。在咱們添加了通配符之後,服務又變得可用了。
在Linux下使用TCP封裝器來增強網絡服務安全在Linux下使用TCP封裝器來增強網絡服務安全
爲了容許全部服務對於主機名中含有 example.com 均可用,在 hosts.allow 中添加以下一行:

ALL : .example.com 

而爲了禁止 10.0.1.0/24 的機器訪問 vsftpd 服務,在 hosts.deny 文件中添加以下一行:

vsftpd : 10.0.1. 

在最後的兩個例子中,注意到客戶端列表每行開頭和結尾的點。這是用來表示 「全部名字或者 IP 中含有那個字符串的主機或客戶端」

原文來自:http://os.51cto.com/art/201611/521409.htm

本文地址:http://www.linuxprobe.com/linux-tcp-network.html

相關文章
相關標籤/搜索