資料:
網絡運維相關 - iptables 【Main】
https://www.zsythink.net/archives/tag/iptables/
netfilter 在 Linux 內核 TCP/IP協議棧中的位置 【框架】【Aulaxiry】
https://zhuanlan.zhihu.com/p/93630586
1 概念詳解
● 防火墻概念
○ 主機防火墻 + 網絡防火墻
○ 硬件防火墻 + 軟件防火墻
○ iptables 客戶端代理 + netfilter 安全框架(真正的防火墻,位于內核空間)
○ 作用:封包過濾、數據內容修改、網絡地址轉換(NAT)
● iptables基礎
○ 按規則執行指定動作
■ 源地址、目的地址、傳輸協議、服務類型;
■ 放行、拒絕、丟棄
● 鏈的概念
○ prerouting + input + output + forward + postrouting
● 表的概念
○ filter表:負責過濾功能,防火墻;內核模塊:iptables_filter
○ nat表:network address translation,網絡地址轉換功能;內核模塊:iptable_nat
○ mangle表:拆解報文,做出修改,并重新封裝 的功能;iptable_mangle
○ raw表:關閉nat表上啟用的連接追蹤機制;iptable_raw
● 表鏈關系
○ 不同鏈上表的類型不同 , 表是功能,鏈是鉤子
■ raw : PREROUTING,OUTPUT
■ mangle :PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
■ nat :PREROUTING,OUTPUT,POSTROUTING(centos7中還有INPUT,centos6中沒有)
■ filter:INPUT,FORWARD,OUTPUT
○ 每個鏈上規則的匹配次序:raw –> mangle –> nat –> filter
○ 自定義鏈: 針對特定的應用程序,可以當做動作鏈入到默認的鏈
● 數據包經過防火墻的流程:
● 規則的概念
○ 匹配條件 + 處理動作組成
○ 匹配條件: 基本匹配條件 (src ip , dst ip 等)+ 擴展匹配條件 ( src port ,dst port 等)
○ 處理動作: ACCEPT DROP REJECT SNAT MASQUERADE DNAT REDIRECT LOG
2 iptables操作-規則查詢
● 表查詢操作
○ iptables -t raw -L
○ iptables -t mangle -L
○ iptables -t nat -L
○ iptables -t filter -L 查看 filter表中的內容:
■ 不同應用場景操作filter中的鏈不一樣,禁止IP的訪問需要在Iput鏈中設置。
■ 不指定 -t 默認 filter , iptables -L INPUT ;
■ iptables -vL INPUT 可以查看更多信息 -v■ iptables -vnL 不對名稱反解 -n
○ iptables常用命令:
■ iptables -t 表名 -L
■ iptables -t 表名 -L 鏈名
■ iptables -t 表名 -v -L
■ iptables -t 表名 -n -L
■ -x 選項表示顯示計數器的精確 ; –line 顯示規則的序號
3 iptables操作-規則管理
對iptables進行”增、刪、改”操作
演示:
● 清空某個鏈的規則:iptables -F INPUT , 默認全部放行
● 增加規則
○ iptables -t fileter -I INPUT -s 192.168.1.146 -j DROP ( -I 首部插入 -j匹配 )
○ iptables -t fileter -A INPUT -s 192.168.1.146 -j ACEEPT ( -A 末尾追加 )
○ 規則增加有順序之分:
■ iptables -t fileter -I INPUT 2 -s 192.168.1.146 -j ACEEPT (-I INPUT 2:編號2)
● 刪除規則
○ 根據規則的編號去刪除規則
■ iptables -t filter -D INPUT 3
○ 根據具體的匹配條件與動作刪除規則
■ iptables -D INPUT -s 192.168.1.146 -j ACEEPT
○ 清空鏈上所有規則/清空
■ iptables -t tablename -F / chainName
● 修改規則
○ 可以先刪除某條規則,再進行增加這么操作,直接修改可能會有操作上的風險,不建議。
○ 主要使用-R即可
■ iptables -t filter -R INPUT 1 -s 192.168.1.146 -j REJECT (-s 必須帶,無論指定1)
● 保存規則
○ centos6中 :
■ service iptables save 保存在 /etc/sysconfig/iptables
■ iptables-save > /etc/sysconfig/iptables
■ iptables-restore < /etc/sysconfig/iptables (載入規則)
○ ubuntu中:
■ sudo netfilter-persistent save /save6 (需要安裝iptables-persistant)
■ /etc/iptables/rules.v4 # IPv4規則 / v6
4 iptables匹配條件
基本匹配條件:
● 源IP
○ -s ip ; -s ip,ip; -s ip/16 設置單IP 多個IP 網段
○ ! -s ip ; 相當于取反
○
● 目標IP
● 協議類型
● 網卡接口
○ -i選項用于匹配報文從哪個網卡流入
○ -o選項用于匹配報文將從哪個網卡流出
擴展匹配條件:
● tcp擴展模塊
iptables -t filter -I OUTPUT -d 192.168.1.146 -p tcp -m tcp --sport 22 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport 22:25 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport :22 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport 80: -j REJECT
iptables -t filter -I OUTPUT -d 192.168.1.146 -p tcp -m tcp ! --sport 22 -j ACCEPT
● multiport擴展模塊
iptables -t filter -I OUTPUT -d 192.168.1.146 -p udp -m multiport --sports 137,138 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 22,80 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport ! --dports 22,80 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 80:88 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 22,80:88 -j REJECT
5 iptables黑白名單
當鏈的默認策略為ACCEPT時,鏈中的規則對應的動作應該為DROP或者REJECT,表示只有匹配到規則的報文才會被拒絕,沒有被規則匹配到的報文都會被默認接受,這就是”黑名單”機制。
當鏈的默認策略為DROP時,鏈中的規則對應的動作應該為ACCEPT,表示只有匹配到規則的報文才會被放行,沒有被規則匹配到的報文都會被默認拒絕,這就是”白名單”機制。
白名單機制似乎更加安全一些,黑名單機制似乎更加靈活一些。
6 iptables防火墻
iptables往往作為主機防火墻,此處講解為 如何作為網絡防火墻