首頁 > 軟體

CentOS 7下firewall防火牆使用入門基礎

2020-06-16 16:43:05

1 防火牆簡介

在基於RHEL7的伺服器,提供了一個firewall的動態管理的防火牆,其支援IPv4和IPv6,還支援乙太網橋,並有分離執行時間和永久性設定選擇。它還具備一個通向服務或者應用程式以直接增加防火牆規則的介面。

2 簡單介紹

firewall的組態檔:/etc/lib/firewalld/和/etc/firewalld/下的XML檔案。設定firewall可以直接編輯組態檔,也可以使用firewall-cmd命令列工具。

3 防火牆使用
檢視firewalld的狀態
firewall-cmd --state

檢視活動分割區類別
firewall-cmd --get-active-zones

檢視當前分配的介面
firewall-cmd --get-zone-of-interface=ens33

檢視分配的區域的所有介面:
firewall-cmd --zone=public --list-interfaces

找出公共區域的所有設定
firewall-cmd --zone=public --list-all
firewall-cmd --list-all

以上命令如下圖:

關閉|開啟所有的輸入和輸出的封包(禁用)
# 關閉所有輸入輸出的封包
firewall-cmd --panic-on
# 開啟再次輸入輸出的封包
firewall-cmd --panic-off
# 檢視panic模式的狀態(yes啟用 no退出)
firewall-cmd --query-panic

重新載入防火牆
# 重新載入防火牆,不中斷使用者連線(不丟失狀態資訊)
firewall-cmd --reload
# 重新載入防火牆並中斷使用者連線(丟失狀態資訊),防火牆出現嚴重問題才執行
firewall-cmd --complete-reload

為分割區增加介面
# 把em1增加到公共分割區,增加--permanent選擇並重新載入防火牆,是之永久生效
firewall-cmd --zone=public --add-interface=em1

設定分割區(將一個埠加入分割區)
# 設定預設分割區,立即生效,不需要重新載入防火牆
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

將一個服務(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 選項,但這不僅僅中斷您已經移除的服務,還會中斷所有已經建立的連線。

設定偽裝 IP 地址
# 查詢是否可用
firewall-cmd --zone=external --query-masquerade
# 允許偽裝IP
firewall-cmd --zone=external --add-masquerade
# 禁用偽裝IP
firewall-cmd --zone=external --remove-masquerade

設定埠轉發,地址轉發
# 將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

使用直接介面增加一個自定義規則
# 增加一個自定義規則到 “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

設定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'

多規則結構:
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'


IT145.com E-mail:sddin#qq.com