1. 程式人生 > >firewall防火墻

firewall防火墻

reject pre 關閉 fix 自主 ice ace 中一 相同

firewall防火墻

1 防火墻簡介

在基於RHEL7的服務器,提供了一個firewall的動態管理的防火墻,其支持IPv4和IPv6,還支持以太網橋,並有分離運行時間和永久性配置選擇。它還具備一個通向服務或者應用程序以直接增加防火墻規則的接口。

2 簡單介紹

firewall的配置文件:/etc/lib/firewalld//etc/firewalld/下的XML文件。配置firewall可以直接編輯配置文件,也可以使用firewall-cmd命令行工具。

3 防火墻使用

  1. 查看firewalld的狀態
    firewall-cmd --state
  2. 查看活動分區類別
    firewall-cmd --get-active-zones
  3. 查看當前分配的接口
    firewall-cmd --get-zone-of-interface=ens33
  4. 查看分配的區域的所有接口:
    firewall-cmd --zone=public --list-interfaces
  5. 找出公共區域的所有設置
    firewall-cmd --zone=public --list-all
    firewall-cmd --list-all
  6. 關閉|開啟所有的輸入和輸出的數據包(禁用)
    # 關閉所有輸入輸出的數據包
    firewall-cmd --panic-on
    # 開啟再次輸入輸出的數據包
    firewall-cmd --panic-off
    # 查看panic模式的狀態(yes啟用 no退出)
    firewall-cmd --query-panic
  7. 重新加載防火墻
    # 重新加載防火墻,不中斷用戶連接(不丟失狀態信息)
    firewall-cmd --reload
    # 重新加載防火墻並中斷用戶連接(丟失狀態信息),防火墻出現嚴重問題才執行
    firewall-cmd --complete-reload
  8. 為分區增加接口
    # 把em1增加到公共分區,增加--permanent選擇並重新加載防火墻,是之永久生效
    firewall-cmd --zone=public --add-interface=em1
  9. 設置分區(將一個端口加入分區)
    # 設置默認分區,立即生效,不需要重新加載防火墻
    firewall-cmd --set-default-zone=public
    # 將一個端口加入分區
    firewall-cmd --zone=public --permanent --add-port=8080/tcp
    firewall-cmd --reload
    # 查看開發的端口
    firewall-cmd --zone=public --list-ports
    # 刪除
    firewll-cmd --zone=pubic --remove --remove-port=8080/tcp
  10. 將一個服務(http)加入到分區
    # 加入
    firewall-cmd --permanent --zone=work --add-service=http
    firewall-cmd --reload
    # 移除
    firewall-cmd --permanent  --zone=work --remove-service=http
    firewall-cmd --reload
    # 註意,這並不會中斷已經建立的連接。如果您打算中斷,您可以使用 --complete-reload 選項,但這不僅僅中斷您已經移除的服務,還會中斷所有已經建立的連接。
  11. 配置偽裝 IP 地址
    # 查詢是否可用
    firewall-cmd --zone=external --query-masquerade
    # 允許偽裝IP
    firewall-cmd --zone=external --add-masquerade
    # 禁用偽裝IP
    firewall-cmd --zone=external --remove-masquerade
  12. 配置端口轉發,地址轉發
    # 將22端口轉發到3753端口,使用tcp協議
    firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=3753
    # 原本發往22端口的程序包現在被轉發到地址是192.0.2.55下相同的端口
    firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=192.0.2.55
    # 將22端口的數據包轉發到192.0.2.55下的2055端口
    firewall-cmd --zone=external /
      --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.0.2.55
  13. 使用直接接口增加一個自定義規則
    # 增加一個自定義規則到 “IN_public_allow” 鏈裏:
    firewall-cmd --direct --add-rule ipv4 filter IN_public_allow   0 -m tcp -p tcp --dport 666 -j ACCEPT
    # 從 “IN_public_allow” 鏈移除一個自定義規則:
    firewall-cmd --direct --remove-rule ipv4 filter IN_public_allow   0 -m tcp -p tcp --dport 666 -j ACCEPT
    # 列出 “IN_public_allow” 鏈中的規則:
    firewall-cmd --direct --get-rules ipv4 filter IN_public_allow
  14. 配置rich language語法:
    格式:
    
    # 添加
    firewall-cmd [--zone=zone] --add-rich-rule=‘rule‘ [--timeout 9=seconds]
    # 移除
    firewall-cmd [--zone=zone] --remove-rich-rule=‘rule‘
    # 檢查是否存在
    firewall-cmd [--zone=zone] --query-rich-rule=‘rule‘
多規則結構:
```shell
rule [family="<rule family>"]
    [ source address="<address>" [invert="True"] ]
    [ destination address="<address>" [invert="True"] ]
    [ <element> ]
    [ log [prefix="<prefix text>"] [level="<log level>"] [limit value="rate/duration"] ]
    [ audit ]
    [ accept|reject|drop ]

多規則命令:

source:指定源地址,不支持使用主機名。可以通過增加 invert="true" 或 invert="yes" 來顛倒源地址命令的意思。所有提供的地址都匹配。
destination:通過制定目的地址,目標可以被限制在目的地址中。
service:服務名稱是 firewalld 提供的其中一種服務。可以通過 firewall-cmd --get-services查看。格式: service name=service_name
port: 端口,可為範圍或者獨立數字 格式:port port=number_or_range protocol=protocol
protocol:協議
icmp-block:用這個命令阻絕一個或多個 ICMP 類型,查看支持的icmp類型列表:firewall-cmd --get-icmptypes,格式: icmp-block name=icmptype_name
masquerade:打開規則裏的 IP 偽裝。用源地址而不是目的地址來把偽裝限制在這個區域內。在此,指定一個動作是不被允許的。
forward-port:從一個帶有指定為 tcp 或 udp 協議的本地端口轉發數據包到另一個本地端口,或另一臺機器,或另一臺機器上的另一個端口.格式:forward-port port=number_or_range protocol=protocol /
            to-port=number_or_range to-addr=address

運行來自主機192.168.1.3的所有IPv4流量

firewall-cmd --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=192.168.1.3 accept" 

拒絕來自主機192.168.1.4到22端口的tcp流量

firewall-cmd --zone=public --add-rich-rule ‘rule family="ipv4" source address=192.168.1.4 port port=22 protocol=tcp reject‘

允許主機10.1.0.3到80端口的IPv4的TCP流量,並轉發到65530端口上

firewall-cmd --zone=public --add-rich-rule ‘rule family=ipv4 source address=10.1.0.3 forward-port port=80 protocol=tcp to-port=65530‘

firewall防火墻