netfilter 與 iptables
上章講述了Linux防火墻的分類,本章將講述netfilter與iptables的關(guān)系氮凝。
Linux系統(tǒng)中的包過濾防火墻由netfilter和包過濾管理工具(iptables/firewalld)組成厕吉。
netfilter是集成于Linux內(nèi)核中的一個安全框架隘擎,也被稱為網(wǎng)絡數(shù)據(jù)包過濾器蹄葱。
netfilter實現(xiàn)包過濾防火墻的內(nèi)部結(jié)構(gòu)萨脑、不以程序或文件形式存在筝蚕,屬于“內(nèi)核態(tài)”卦碾。
iptables/firewalld指用來管理linux防火墻的程序铺坞,屬于“用戶態(tài)”。
需要注意的是:從Linux內(nèi)核2.4開始洲胖,Linux系統(tǒng)提供了包過慮管理工具--iptables济榨,而之后,從Centos7發(fā)行版開始使用新的包過濾管理工具——firewalld绿映。
iptables只支持命令行方式進行管理防火墻擒滑。
firewalld是centos7版本開始提供的新工具,除了支持命令行管理外叉弦,另支持圖形化管理丐一。
netfilter
netfilter安全框架由四表五鏈組成,新版本增添一個表淹冰,稱為五表五鏈库车。
netfilter在內(nèi)核中選取五個位置放了五個hook function(INPUT、OUTPUT樱拴、FORWARD柠衍、PREROUTING、POSTROUTING)晶乔,而這五個hook function向用戶開放拧略,也稱之為五鏈(chain);用戶可以通過iptables/firewalld兩個包過濾管理工具向五個鏈中寫入規(guī)則(rule)瘪弓。
用戶設置的規(guī)則垫蛆,可以按類型分成五個表(table)。
filter表:過濾規(guī)則表腺怯,根據(jù)預定義的規(guī)則過濾符合條件的數(shù)據(jù)包袱饭,確定是否放行該數(shù)據(jù)包。
nat表:地址轉(zhuǎn)換規(guī)則表呛占,英文全稱network address translation的縮寫虑乖,修個數(shù)據(jù)包中的源、目標ip地址或端口晾虑。
mangle:為數(shù)據(jù)包設置標記疹味。
raw:確定是否對該數(shù)據(jù)包進行狀態(tài)跟蹤,可以關(guān)閉NAT表上啟用的連接跟蹤機制帜篇,加快封包穿越防火墻速度糙捺。
security(新加表):是否定義強制訪問控制規(guī)則(MAC),由Linux安全模塊(如SELinux)實現(xiàn)笙隙。
規(guī)則表的優(yōu)先級順序為:security -->raw-->mangle-->nat-->filter
三種報文流向:
流入本機:PREROUTING --> INPUT-->用戶空間進程
流出本機:用戶空間進程 -->OUTPUT--> POSTROUTING
轉(zhuǎn)發(fā):PREROUTING --> FORWARD --> POSTROUTING