iptables和firewalld基礎

1、四表五鏈概念:

filter表  過濾數據包
Nat表    用於網絡地址轉換(IP、端口)
Mangle表  修改數據包的服務類型、TTL、並且可以配置路由實現QOS
Raw表    決定數據包是否被狀態跟蹤機制處理
INPUT鏈     進來的數據包應用此規則鏈中的策略 OUTPUT鏈     外出的數據包應用此規則鏈中的策略 FORWARD鏈    轉發數據包時應用此規則鏈中的策略 PREROUTING鏈  對數據包作路由選擇前應用此鏈中的規則(所有的數據包進來的時侯都先由這個鏈處理) POSTROUTING鏈  對數據包作路由選擇後應用此鏈中的規則(所有的數據包出來的時侯都先由這個鏈處理)

2、數據報文流程

數據報文從進入服務器到出來會經過5道關卡,分別為Preouting(路由前),input(輸入),outing(輸出),Forward(轉發),Postrouting(路由後)

 iptables服務策略

  • ACCEPT(允許流量通過)
  • REJECT(拒絕流量通過)
  • LOG(記錄日誌信息)
  • DROP(拒絕流量通過)

 3、iptables 與 firewalld 區別

相同點:都是用來定義防火牆策略的防火牆管理工具
區別:
  iptables服務會把配置好的防火牆策略,交由內核層面的 netfilter 網絡過濾器來處理   firewalld服務則是把配置好的防火牆策略,交由內核層面的 nftables 包過濾框架來處理

4、DROP 和 REJECT策略的區別:

防火牆策略:
  設置為REJECT拒絕動作後,流量發送方會看到端口不可達的響應   修改成DROP拒絕動作後,流量發送方會看到響應超時的提醒

5、iptables命令參數

-t<表>   指定要操縱的表 
--line-numbers  顯示規則的序號
-n    以數字格式顯示地址和端口號
-P   設置默認策略 -F   清空規則鏈 -L   查看規則鏈 -A    在規則鏈的末尾加入新規則 -I num 在規則鏈的頭部加入新規則 -D num 刪除某一條規則
-s   匹配來源地址IP/MASK,加嘆號「!」表示除這個IP外 -d   區配目標地址
-i 網卡名稱  匹配從這塊網卡流入的數據 -o 網卡名稱  匹配從這塊網卡流出的數據 -p       匹配協議,如TCP、UDP、ICMP

--sport num    匹配來源端口號
--dport num   匹配目標端口號

6、iptables基本的命令使用

1.查看防火牆規則
  iptables -nvL --line-numbers

2.清空防火牆規則
  iptables -F 清空所有的防火牆規則
  iptables -X 刪除用戶自定義的空鏈
  iptables -Z 清空計數   
3.把INPUT規則鏈的默認策略設置為拒絕/允許
  iptables -P INPUT REJECT/ACCEPT

4.刪除INPUT規則鏈中剛剛加入的那條策略
  iptables -D INPUT 1

5.保存當前的數據包計算器和位元組計數器的值
  iptables-save -c > /etc/sysconfig/iptables
 指定要保存的表的名稱
  iptables-save -t filter > filter.bak
6.還原防火牆規則
  iptables-restore

7.將INPUT規則鏈設置為只允許指定網段的主機訪問本機的22端口,拒絕來自其他所有主機的流量:
  iptables -I INPUT -s 0.0.0.0/0 -p tcp --dport 22 -j REJECT

8.向INPUT規則鏈中添加拒絕所有人訪問本機12345端口的策略規則:
  iptables -I INPUT -p tcp --dport 12345 -j REJECT  
  iptables -I INPUT -p utp --dport 12345 -j REJECT
9.向INPUT規則鏈中添加拒絕192.168.8.105主機訪問本機80端口(Web服務)的策略規則:
  iptables -I INPUT -s 192.168.8.105 -p tcp --dport 80 -j REJECT 

10.向INPUT規則鏈中添加拒絕所有主機訪問本機1000~1024端口的策略規則:
  iptables -I INPUT -p all --dport 1000:1024 -j REJECT

11.配置允許ssh端口連接
  iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT

12.允許本地迴環地址可以正常使用
  iptables -A INPUT -i lo -j ACCEPT
  iptables -A OUTPUT -o lo -j ACCEPT

13.允許已建立的或相關連的通行
  iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
***14.啟動網絡轉發規則,公網 210.14.67.7 讓內網 192.168.188.0/24 上網
  iptables -t nat -A POSTROUTING -s 192.168.188.0/24 -j SNAT --to-source 210.14.67.7
15.端口映射:本機的 2222 端口映射到內網 虛擬機的22 端口
  iptables -t nat -A PREROUTING -d 210.14.67.127 -p tcp --dport 2222 -j DNAT --to-dest 192.168.188.115:22

16.阻止Windows蠕蟲的攻擊
  iptables -I INPUT -j DROP -p tcp -s 0.0.0.0/0 -m string --algo kmp --string "cmd.exe"
17.防止SYN洪水攻擊
  iptables -A INPUT -p tcp --syn -m limit --limit 5/second -j ACCEPT

18. 參考://blog.csdn.net/szb521/article/details/126415217

7.firewalld:基於CLI(命令行界面)和基於GUI(圖形用戶界面)的兩種管理方式。

firewalld中常用的區域名稱及策略規則:

    trusted 允許所有的數據包
    home 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh、mdns、ipp-client、amba-client與dhcpv6-client服務相關,則允許流量
    internal 等同於home區域
    work 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh、ipp-client與dhcpv6-client服務相關,則允許流量
    public 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh、dhcpv6-client服務相關,則允許流量
    external 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh服務相關,則允許流量
    dmz 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh服務相關,則允許流量
    block 拒絕流入的流量,除非與流出的流量相關
    drop 拒絕流入的流量,除非與流出的流量相關

firewall-cmdfirewalld防火牆配置管理工具的CLI
   firewall-cmd命令正常設置防火牆策略時添加--permanent參數,這樣配置的防火牆策略就可以永久生效

    參數|作用
    –get-default-zone|查詢默認的區域名稱
    –set-default-zone=<區域名稱>|設置默認的區域,使其永久生效
    –get-zones|顯示可用的區域
    –get-services|顯示預先定義的服務
    –get-active-zones|顯示當前正在使用的區域與網卡名稱
    –add-source=|將源自此IP或子網的流量導向指定的區域
    –remove-source=|不再將源自此IP或子網的流量導向某個指定區域
    –add-interface=<網卡名稱>|將源自該網卡的所有流量都導向某個指定區域
    –change-interface=<網卡名稱>|將某個網卡與區域進行關聯
    –list-all|顯示當前區域的網卡配置參數、資源、端口以及服務等信息
    –list-all-zones|顯示所有區域的網卡配置參數、資源、端口以及服務等信息
    –add-service=<服務名>|設置默認區域允許該服務的流量
    –add-port=<端口號/協議>|設置默認區域允許該端口的流量
    –remove-service=<服務名>|設置默認區域不再允許該服務的流量
    –remove-port=<端口號/協議>|設置默認區域不再允許該端口的流量
    –reload|讓「永久生效」的配置規則立即生效,並覆蓋當前的配置規則
    –panic-on|開啟應急狀況模式
    –panic-off|關閉應急狀況模式

 8、firewalld命令示例:

1.查看firewalld服務當前所使用的區域:
  firewall-cmd --get-default-zone

2.查詢eth0網卡在firewalld服務中的區域:
  firewall-cmd --get-zone-of-interface=eth0

3.讓「永久生效」的配置規則立即生效,並覆蓋當前的配置規則
  firewall-cmd --reload

4.把firewalld服務的當前默認區域設置為public
  firewall-cmd --set-default-zone=public

5.啟動/關閉firewalld防火牆服務的應急狀況模式,阻斷一切網絡連接(當遠程控制服務器時請慎用):
  firewall-cmd --panic-on/off

6.查詢public區域是否允許請求SSHHTTPS協議的流量
  firewall-cmd --zone=public --query-service=ssh
  firewall-cmd --zone=public --query-service=https

7.把firewalld服務中請求HTTPS協議的流量設置為永久允許,並立即生效:
  firewall-cmd --permanent --zone=public --add-service=https
  firewall-cmd --reload
firewalld服務中請求HTTP協議的流量設置為永久拒絕,並立即生效:
  firewall-cmd --permanent --zone=public --remove-service=http

8.端口:把在firewalld服務中訪問8080和8081端口的流量策略設置為允許,但僅限當前生效:
  firewall-cmd --zone=public --add-port=8080-8081/tcp
  firewall-cmd --zone=public --list-port //查看當前的端口

9.把原本訪問本機888端口的流量轉發到22端口,要且求當前和長期均有效:
  firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10

10.參考://blog.csdn.net/herhan1/article/details/114461334