Firewalld

1.firewalld概述
動態防火牆後臺程序 firewalld 提供了一個 動態管理的防火牆,用以支持網絡 “ zones” ,以分配對一個網絡及其相關鏈接和界面一定程度的信任。它具備對 IP v4 和 IP v6 防火牆設置的支持。它支持以太網橋,並有分離運行時間和永久性配置選擇。它還具備一個通向服務或者應用程序以直接增加防火牆規則的接口。
系統提供了圖像化的配置工具firewall-config、system-config-firewall, 提供命令行客戶端firewall-cmd, 用於配置 firewalld永久性或非永久性運行時間的改變:它依次用 iptables工具與執行數據包篩選的內核中的 Netfilter通信。
firewalld和iptables service 之間最本質的不同是:
1.iptables service 在 /etc/sysconfig/iptables 中儲存配置,而 firewalld將配置儲存在/usr/lib/firewalld/ 和 /etc/firewalld/ 中的各種XML文件裏.
2. 使用 iptables service每一個單獨更改意味着清除所有舊有的規則和從/etc/sysconfig/iptables裏讀取所有新的規則,然而使用 firewalld卻不會再創建任何新的規則;僅僅運行規則中的不同之處。因此,firewalld可以在運行時間內,改變設置而不丟失現行連接

2.工作方式
這裏寫圖片描述

3.網絡區
基於用戶對網絡中設備和交通所給與的信任程度,防火牆可以用來將網絡分割成不同的區域。
NetworkManager通知firewalld一個接口歸屬某個區域,新加入的接口被分配到默認區域。
分類
trusted( 信任 )可接受所有的網絡連接
home( 家庭 )用於家庭網絡,僅接受ssh、mdns、ipp-client、samba-client、或dhcpv6-client服務連接
internal( 內部 )用於內部網絡,僅接受ssh、mdns、ipp-client、samba-client、dhcpv6-client服務連接
work( 工作 )用於工作區,僅接受ssh、ipp-client或dhcpv6-client服務連接
public( 公共 )在公共區域內使用,僅接受ssh或dhcpv6-client服務連接, 爲 firewalld 的默認區域
external( 外部 )出去的ipv4網絡連接通過此區域僞裝和轉發,僅接受ssh服務連接
dmz( 非軍事區 )僅接受ssh服務接連
block( 限制 )拒絕所有網絡連接
drop( 丟棄 )任何接收的網絡數據包都被丟棄,沒有任何回覆

4.防火牆的配置
yum install -y firewalld firewall-config -y ##安裝防火牆軟件
systemctl start firewalld ##啓動和禁用防火牆
systemctl enable firewalld ##開機啓動

常用命令
firewall-cmd –state ##查看firewalld的狀態
firewall-cmd –get-active-zones ##查看當前活動的區域,並附帶一個目前分配給它們的接口列表
firewall-cmd –get-default-zone ##查看默認區域
firewall-cmd –get-zones ##查看所有可用區域

firewall-cmd –zone=public –list-all ##列出指定域的所有設置
輸出格式是:
<public>
interfaces: <interface1> ..
services: <service1> ..
ports: <port1> ..
forward-ports: <forward port1> ..
icmp-blocks: <icmp type1> ....

firewall-cmd –get-services ##列出所有預設服務
firewall-cmd –list-all-zones ##列出所有區域的設置
firewall-cmd –set-default-zone=public ##設置默認區域
firewall-cmd –permanent –zone=internal –add-source=172.25.0.0/24 ##設置網絡地址到指定的區域
(–permanent參數表示永久生效設置,如果沒有指定–zone參數,那麼會加入默認區域)
firewall-cmd –permanent –zone=internal –remove-source=172.25.0.0/24 ##刪除指定區域中的網路地址

firewall-cmd –permanent –zone=internal –add-interface=eth0 ##添加網絡接口
firewall-cmd –permanent –zone=internal –change-interface=eth0 ##改變網絡接口
firewall-cmd –permanent –zone=internal –remove-interface=eth0 ##刪除網絡接口

firewall-cmd –permanent –zone=public –add-service=http ##添加服務
firewall-cmd –permanent –zone=public –remove-service=http ##刪除服務

firewall-cmd –zone=public –list-ports ##列出端口
firewall-cmd –permanent –zone=public –add-port=8080/tcp ##添加端口
firewall-cmd –permanent –zone=public –remove-port=8080/tcp ##刪除端口

firewall-cmd –reload ##重載防火牆
(注意:這並不會中斷已經建立的連接,如果打算中斷,可以使用 –complete-reload選項)

firewalld的規則被保存在/etc/firewalld目錄下的文件中,你也可以直接編輯這些文件達到配置防火牆的目的。
例如編輯
/usr/lib/firewalld目錄下的內容是不可以被編輯的,但可以用做默認模板。

5.多語言命令
在這個部分,所有命令都必須以 root 用戶身份運行。
語法結構:
這裏寫圖片描述

source
指定源地址,可以是一個ipv4/ipv6的地址或網段,不支持使用主機名。
destination
指定目的地址,用法和source相同。
service
服務名稱是 f irewalld 提供的其中一種服務。要獲得被支持的服務的列表,輸入以下命令:
firewall-cmd –get-services 。命令爲以下形式:
service name= service_name
port
端口既可以是一個獨立端口數字,又或者端口範圍,例如,5060-5062。協議可以指定爲 tcp 或
udp 。命令爲以下形式:
port port= number_or_range protocol= protocol
protocol
協議值可以是一個協議 ID 數字,或者一個協議名。預知可用協議,請查閱 /etc/protocols。
命令形式:protocol value= protocol_name_or_ID
icmp-block
用這個命令阻絕一個或多個ICMP類型。IC MP 類型是 firewalld支持的ICMP類型之一。
(要獲得被支持的ICMP類型列表,輸入以下命令: firewall-cmd –get-icmptypes)
forward-port
從一個帶有指定爲 tcp 或 udp 協議的本地端口轉發數據包到另一個本地端口,或另一臺機器,或另一臺機器上的另一個端口。port 和 to-port 可以是一個單獨的端口數字,或一個端口範圍。而目的地址是一個簡單的 IP 地址。不允許指定動作
命令爲以下形式:
forward-port port= number_or_range protocol= protocol /
to-port= number_or_range to-addr= address
log
註冊含有內核記錄的新連接請求到規則中,比如系統記錄。

例1:
firewall-cmd –add-rich-rule=’rule family=”ipv4” source address=”172.25.254.137” accept’
##允許172.25.254.137主機所有連接。
例2:
firewall-cmd –permanent –add-rich-rule=’rule family=ipv4 source
address=172.25.254.0/24 service name=ftp accept’
##允許172.25.254.0/24網段中的主機訪問ftp服務

6.地址僞裝和端口轉發

地址僞裝:
firewall-cmd –permanent –zone=public –add-masquerade

firewall-cmd –permanent –zone=public –add-rich-rule=’rule family=ipv4 source address=172.25.254.137 masquerade’

端口轉發:
firewall-cmd –permanent –zone=public –add-forward-port=
port=80:proto=tcp:toport=8080:toaddr=172.25.254.137 ## 將公共區域172.25.254.137這個ip連接的80端口的流量轉發至192.168.0.1的8080端口

firewall-cmd –permanent –zone=public –add-rich-rule=’rule family=ipv4 source address=172.25.0.0/24 forward-port port=80 protocol=tcp to-port=8080’ ## 將公共區域172.25.0.0/24這個網段連接的80端口的數據轉發至8080

發佈了59 篇原創文章 · 獲贊 12 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章