網路防火牆之iptables的前世今生和歸宿
作者簡介:永福,7年大型網際網路Linux運維實戰經驗,先後供職於好豆網、芒果TV,從零構建行業領先運維架構,精通web叢集、資料庫叢集、分散式檔案系統架構、大資料運維架構等。研發的waf應用於各大行業網站。
任何事物都有一個從無到有,再歸於無的過程。是的,我這裡用了一個絕對詞:任何。
防火牆
在計算機領域中,防火牆(英文:Firewall)是一項協助確保資訊保安的裝置,會依照特定的規則,允許或是限制傳輸的資料通過。防火牆可能是一臺專屬的硬體或是架設在一般硬體上的。通俗的一個類比就是中國古代的長城或者城市的城牆,用於安全防禦的作用,只有滿足特定要求,接受檢查後才能進入。
防火牆作為內部網與外部網之間的一種訪問控制裝置, 常常安裝在內部網和外部網交界點上。主要分為網路層防火牆和應用層防火牆兩種,但也有些防火牆是同時運作於網路層和應用層。
iptables
iptables屬於網路層防火牆。由於工作在網路層,不需要把資料傳送到使用者空間,在系統核心空間中進行了資料過濾處理,因此可以保證資料處理效率。與此同時也會帶來一個壞處,既然是工作於核心空間,那麼它要麼整合到核心內部要麼被核心呼叫,且使用者是無法直接與核心互動,那我們怎麼定義iptables規則。因為以上原因iptables分為兩部分,一部分是工作於核心中真正實現訪問管控功能的netfileter,與此同時還要有與核心通訊提供過濾規則的使用者空間元件iptables。其實iptables的官方網站就是
iptables一個執行在使用者空間的應用軟體,通過控制Linux核心netfilter模組,來管理網路資料包的流動與轉送。在大部分的Linux系統上面,iptables是使用/usr/sbin/iptables來操作。
通常iptables都需要核心層級的模組來配合運作,Xtables是主要在核心層級裡面iptables API運作功能的模組。因相關動作上的需要,iptables的操作需要用到超級使用者的許可權。
iptables之前世今生
目前iptables系在2.4、2.6及3.0的核心底下運作,舊版的Linux核心(2.2)使用ipchains及ipwadm(Linux 2.0)來達成類似的功能,2014年1月19日起發行的新版Linux核心(3.13後)則使用nftables取而代之。
iptables之歸宿
iptables不可能永遠獨佔linux世界,他也有發展的盡頭。在linux核心3.13中就由nftables取代了iptables。作為應用層的iptables,也在被拋棄,RHEL7/CentOS7中放棄了iptables,而選擇firewalld作為防火牆的配置工具。firewalld相對於iptables主要的優點有:
1. firewalld可以動態修改單條規則,而不需要像iptables那樣,在修改了規則後必須得全部重新整理才可以生效;
2. firewalld在使用上要比iptables人性化很多,即使不明白“五張表五條鏈”而且對TCP/IP協議也不理解也可以實現大部分功能。另外同樣基於linux核心的ubuntu,使用的防火牆配置工具是ufw。
nftables是取代 iptables、ip6tables、arptables 和ebtables 的新的包過濾框架。nftables 旨在解決現有 {ip/ip6}tables 工具存在的諸多限制。相對於舊的 iptables,nftables 最引人注目的功能包括改進效能如支援查詢表;事務型規則更新,所有規則自動應用;等等。
nftables誕生於2008年,2013年底合併到Linux核心,從 Linux 3.13起開始作為 iptables的替代提供給使用者。 nftables實現了一組被稱為表示式的指令,可通過在暫存器中儲存和載入來交換資料。也就是說, nftables的核心可視為一個虛擬機器, nftables的前端工具nft可以利用核心提供的表示式去模擬舊的iptables匹配,維持相容性的同時獲得更大的靈活性。