簡介bash
防火牆(Firewall): 工做在主機或網絡邊緣,對進出的報文按事先定義的規則進行檢查,而且由匹配到的規則進行處理的一組硬件或軟件,甚至多是兩者的結合服務器
Firewall分類:主機防火牆(工做於主機邊緣);網絡防火牆(工做於網絡邊緣)網絡
iptables:只是防火牆規則的編寫工具,工做於用戶空間,編寫規則併發送到netfilter併發
netfilter:能使規則生效的防禦框架,工做於內核空間框架
Netfilter防禦原理ssh
在內核中的TCP/IP協議棧上選擇了5個點(又稱爲「卡哨」),這5個點是報文必定會流經的位置,並配置5個鉤子函數(hook_function);當有報文通過時,被鉤子函數鉤起,對規則進行檢查,並按照必定的機制(又可稱爲「功能」)完成處理ide
原理圖函數
說明:上圖顯示了Netfilter的實現原理,以及其主要的4大功能:raw,mangle,nat,filter工具
數據包經Netfilter的過濾匹配流程spa
圖1
圖2
說明1:圖1和圖2都是數據包流向的描述,我的感受圖2更加形象,能夠看出數據包經Netfilter的過濾匹配流程就是針對Netfilter的4大功能,在5個卡哨間停留匹配的過程
說明2:借用的網絡上的2張圖片,版權歸原做者全部
iptables的規則
表和鏈:
四表(對應4大功能):raw,mangle,nat,filter
五鏈(對應5個卡哨):PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
表和鏈的對應關係:
raw:PREROUTING,OUTPUT
mangle:5鏈中的任意位置
nat:PREROUTING,POSTROUTING,OUTPUT
filter:INPUT,FORWARD,OUTPUT
iptables的規則匹配原理
說明:iptables規則的添加需在指定表下的可用鏈上,即注意表和鏈的對應關係
iptables規則的保存與恢復
service iptables save # 規則默認會保存在/etc/sysconfig/iptables文件中 # iptables啓動時,也會讀取此文件中的內容以設置規則 iptables-save > /path/to/some_rulefile # 手動導出規則文件 iptables-restore < /path/from/some_rulefile # 手動導入規則文件
遠程修改iptables規則時的小技巧
在遠程服務器上修改iptables規則時,防範規則生效錯誤(尤爲是ssh對應端口)被意外斷開鏈接的方法是:在執行任何iptables規則或腳本時,後跟一個計劃任務,指定5分鐘後清空全部規則,如
# 實際需執行的iptables規則在iptables.sh文件中,若規則執行成功無錯誤,取消計劃任務便可 sh /tmp/iptables.sh ; at -f clean_up.at now+5min
at計劃任務可參考:
#!/bin/bash iptables -t raw -F iptables -t mangle -F iptables -t nat -F iptables -t filter -F iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT
下一篇:iptables規則基本用法