作者 | Michael Kwaku Aboagye
譯者 | leemeans ? ? 共計翻譯:7 篇 貢獻時間:78 天
如何使用 iptables 防火牆保護你的網路免遭駭客攻擊。
即便是被入侵檢測和隔離系統所保護的遠端網路,駭客們也在尋找各種精巧的方法入侵。IDS/IPS 不能停止或者減少那些想要接管你的網路控制權的駭客攻擊。不恰當的配置允許攻擊者繞過所有部署的安全措施。
在這篇文章中,我將會解釋安全工程師或者系統管理員該怎樣避免這些攻擊。
幾乎所有的 Linux 發行版都帶著一個內建的防火牆來保護執行在 Linux 主機上的行程和應用程式。大多數防火牆都按照 IDS/IPS 解決方案設計,這樣的設計的主要目的是檢測和避免惡意包獲取網路的進入權。
Linux 防火牆通常有兩種介面:iptables 和 ipchains 程式(LCTT 譯註:在支援 systemd 的系統上,採用的是更新的介面 firewalld)。大多數人將這些介面稱作 iptables 防火牆或者 ipchains 防火牆。這兩個介面都被設計成包過濾器。iptables 是有狀態防火牆,其基於先前的包做出決定。ipchains 不會基於先前的包做出決定,它被設計為無狀態防火牆。
在這篇文章中,我們將會專註於核心 2.4 之後出現的 iptables 防火牆。
有了 iptables 防火牆,你可以建立策略或者有序的規則集,規則集可以告訴核心該如何對待特定的資料包。在核心中的是Netfilter 框架。Netfilter 既是框架也是 iptables 防火牆的專案名稱。作為一個框架,Netfilter 允許 iptables 勾連被設計來運算元據包的功能。概括地說,iptables 依靠 Netfilter 框架構築諸如過濾資料包資料的功能。
每個 iptables 規則都被應用到一個表中的鏈上。一個 iptables 鏈就是一個比較包中相似特徵的規則集合。而表(例如 nat
或者 mangle
)則描述不同的功能目錄。例如, mangle
表用於修改包資料。因此,特定的修改包資料的規則被應用到這裡;而過濾規則被應用到 filter
表,因為 filter
表過濾包資料。
iptables 規則有一個匹配集,以及一個諸如 Drop
或者 Deny
的標的,這可以告訴 iptables 對一個包做什麼以符合規則。因此,沒有標的和匹配集,iptables 就不能有效地處理包。如果一個包匹配了一條規則,標的會指向一個將要採取的特定措施。另一方面,為了讓 iptables 處理,每個資料包必須匹配才能被處理。
現在我們已經知道 iptables 防火牆如何工作,讓我們著眼於如何使用 iptables 防火牆檢測並拒絕或丟棄欺騙地址吧。
開啟源地址驗證
作為一個安全工程師,在處理遠端的欺騙地址的時候,我採取的第一步是在核心開啟源地址驗證。
源地址驗證是一種核心層級的特性,這種特性丟棄那些偽裝成來自你的網路的包。這種特性使用反向路徑過濾器方法來檢查收到的包的源地址是否可以透過包到達的介面可以到達。(LCTT 譯註:到達的包的源地址應該可以從它到達的網路介面反向到達,只需反轉源地址和目的地址就可以達到這樣的效果)
利用下麵簡單的指令碼可以開啟源地址驗證而不用手工操作:
#!/bin/sh
#作者: Michael K Aboagye
#程式標的: 開啟反向路徑過濾
#日期: 7/02/18
#在螢幕上顯示 “enabling source address verification”
echo -n "Enabling source address verification…"
#將值0改寫為1來開啟源地址驗證
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo "completed"
上面的指令碼在執行的時候只顯示了 Enabling source address verification
這條資訊而不會換行。預設的反向路徑過濾的值是 0
,0
表示沒有源驗證。因此,第二行簡單地將預設值 0
改寫為 1
。1
表示核心將會透過確認反向路徑來驗證源地址。
最後,你可以使用下麵的命令透過選擇 DROP
或者 REJECT
標的之一來丟棄或者拒絕來自遠端主機的欺騙地址。但是,處於安全原因的考慮,我建議使用 DROP
標的。
像下麵這樣,用你自己的 IP 地址代替 IP-address
佔位符。另外,你必須選擇使用 REJECT
或者 DROP
中的一個,這兩個標的不能同時使用。
iptables -A INPUT -i internal_interface -s IP_address -j REJECT / DROP
iptables -A INPUT -i internal_interface -s 192.168.0.0/16 -j REJECT / DROP
這篇文章只提供瞭如何使用 iptables 防火牆來避免遠端欺騙攻擊的基礎知識。
via: https://opensource.com/article/18/2/block-local-spoofed-addresses-using-linux-firewall
作者:Michael Kwaku Aboagye[2] 譯者:leemeans 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出