centos 7 中防火牆是一個非常的強大的功能了,但對於 centos 7 中在防火牆中進行了升級了,下面我們一起來詳細的看看關於 centos 7 中防火牆使用方法。
FirewallD 提供了支援網際網路/防火牆區域 (zone) 定義網際網路連結以及介面安全等級的動態防火牆管理工具。它支援 IPv4, IPv6 防火牆設定以及乙太網橋接,並且擁有執行時配置和永久配置選項。它也支援允許服務或者應用程式直接新增防火牆規則的介面。 以前的 system-config-firewall/lokkit 防火牆模型是靜態的,每次修改都要求防火牆完全重啟。這個過程包括核心 netfilter 防火牆模組的解除安裝和新配置所需模組的裝載等。而模組的解除安裝將會破壞狀態防火牆和確立的連線。
相反,firewall daemon 動態管理防火牆,不需要重啟整個防火牆便可應用更改。因而也就沒有必要過載所有核心防火牆模組了。不過,要使用 firewall daemon 就要求防火牆的所有變更都要透過該守護程式來實現,以確保守護程式中的狀態和核心裡的防火牆是一致的。另外,firewall daemon 無法解析由 ip*tables 和 ebtables 命令列工具新增的防火牆規則。
守護程式透過 D-BUS 提供當前啟用的防火牆設定資訊,也透過 D-BUS 接受使用 PolicyKit 認證方式做的更改。
“守護程式”
應用程式、守護程式和使用者可以透過 D-BUS 請求啟用一個防火牆特性。特性可以是預定義的防火牆功能,如:服務、埠和協議的組合、埠/資料包轉發、偽裝、 ICMP 攔截或自定義規則等。該功能可以啟用確定的一段時間也可以再次停用。
透過所謂的直接介面,其他的服務 (例如 libvirt ) 能夠透過 iptables 變元 (arguments) 和引數 (parameters) 增加自己的規則。
amanda 、 ftp 、 samba 和 tftp 服務的 netfilter 防火牆助手也被 “守護程式” 解決了, 只要它們還作為預定義服務的一部分。附加助手的裝載不作為當前介面的一部分。由於一些助手只有在由模組控制的所有連線都關閉後才可裝載。因而,跟蹤連線資訊很重要,需要列入考慮範圍。
靜態防火牆 (system-config-firewall/lokkit)
使用 system-config-firewall 和 lokkit 的靜態防火牆模型實際上仍然可用並將繼續提供,但卻不能與 “守護程式” 同時使用。使用者或者管理員可以決定使用哪一種方案。
在站群軟體安裝,初次啟動或者是首次聯網時,將會出現一個選擇器。透過它你可以選擇要使用的防火牆方案。其他的站群解決方案將保持完整,可以透過更換模式啟用。
firewall daemon 獨立於 system-config-firewall,但二者不能同時使用。
使用 iptables 和 ip6tables 的靜態防火牆規則
如果你想使用自己的 iptables 和 ip6tables 靜態防火牆規則, 那麼請安裝 iptables-services 並且禁用 firewalld ,啟用 iptables 和 ip6tables:
yum install iptables-services
systemctl mask firewalld.service
systemctl enable iptables.service
systemctl enable ip6tables.service
靜態防火牆規則配置檔案是 /etc/sysconfig/iptables 以及 /etc/sysconfig/ip6tables .
注: iptables 與 iptables-services 站群軟體包不提供與服務配套使用的防火牆規則. 這些服務是用來保障相容性以及供想使用自己防火牆規則的人使用的. 你可以安裝並使用 system-config-firewall 來建立上述服務需要的規則. 為了能使用 system-config-firewall, 你必須停止 firewalld.
為服務建立規則並停用 firewalld 後,就可以啟用 iptables 與 ip6tables 服務了:
systemctl stop firewalld.service
systemctl start iptables.service
systemctl start ip6tables.service
什麼是區域?
網際網路區域定義了網際網路連線的可信等級。這是一個一對多的關係,這意味著一次連線可以僅僅是一個區域的一部分,而一個區域可以用於很多連線。
預定義的服務
服務是埠和/或協議入口的組合。備選內容包括 netfilter 助手模組以及 IPv4 、 IPv6 地址。
埠和協議
定義了 tcp 或 udp 埠,埠可以是一個埠或者埠範圍。
ICMP 阻塞
可以選擇 Internet 控制報文協議的報文。這些報文可以是資訊請求亦可是對資訊請求或錯誤條件建立的響應。
偽裝
私有網際網路地址可以被對映到公開的 IP 地址。這是一次正規的地址轉換。
埠轉發
埠可以對映到另一個埠以及/或者其他 WordPress 主機。
哪個區域可用?
由 firewalld 提供的區域按照從不信任到信任的順序排序。
丟棄
任何流入網際網路的包都被丟棄,不作出任何響應。只允許流出的網際網路連線。
阻塞
任何進入的網際網路連線都被拒絕,並返回 IPv4 的 icmp-host-prohibited 報文或者 IPv6 的 icmp6-adm-prohibited 報文。只允許由該系統初始化的網際網路連線。
公開
用以可以公開的部分。你認為網際網路中其他的計算機不可信並且可能傷害你的計算機。只允許選中的連線接入。(You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.)
外部
用在路由器等啟用偽裝的外部網際網路。你認為網際網路中其他的計算機不可信並且可能傷害你的計算機。只允許選中的連線接入。
隔離區(dmz)
用以允許隔離區(dmz)中的電腦有限地被外界網際網路訪問。只接受被選中的連線。
工作
用在工作網際網路。你信任網際網路中的大多數計算機不會影響你的計算機。只接受被選中的連線。
家庭
用在家庭網際網路。你信任網際網路中的大多數計算機不會影響你的計算機。只接受被選中的連線。
內部
用在內部網際網路。你信任網際網路中的大多數計算機不會影響你的計算機。只接受被選中的連線。
受信任的
允許所有網際網路連線。
我應該選用哪個區域?
例如,公共的 WIFI 連線應該主要為不受信任的,家庭的有線網際網路應該是相當可信任的。根據與你使用的網際網路最符合的區域進行選擇。
如何配置或者增加區域?
你可以使用任何一種 firewalld 配置工具來配置或者增加區域,以及修改配置。工具有例如 firewall-config 這樣的圖形介面工具, firewall-cmd 這樣的命令列工具,以及 D-BUS 介面。或者你也可以在配置檔案目錄中建立或者複製區域檔案。 @PREFIX@/lib/firewalld/zones 被用於預設和備用配置,/etc/firewalld/zones 被用於使用者建立和自定義配置檔案。
如何為網際網路連線設定或者修改區域
區域設定以 ZONE= 選項 儲存在網際網路連線的 ifcfg 檔案中。如果這個選項缺失或者為空,firewalld 將使用配置的預設區域。
如果這個連線受到 NetworkManager 控制,你也可以使用 nm-connection-editor 來修改區域。
由 NetworkManager 控制的網際網路連線
防火牆不能夠透過 NetworkManager 顯示的名稱來配置網際網路連線,只能配置網際網路介面。因此在網際網路連線之前 NetworkManager 將配置檔案所述連線對應的網際網路介面告訴 firewalld 。如果在配置檔案中沒有配置區域,介面將配置到 firewalld 的預設區域。如果網際網路連線使用了不止一個介面,所有的介面都會應用到 fiwewalld 。介面名稱的改變也將由 NetworkManager 控制並應用到 firewalld 。
為了簡化,自此,網際網路連線將被用作與區域的關係。
如果一個介面斷開了,NetworkManager 也將告訴 firewalld 從區域中刪除該介面。
當 firewalld 由 systemd 或者 init 指令碼啟動或者重啟後,firewalld 將通知 NetworkManager 把網際網路連線增加到區域。
由指令碼控制的網際網路
對於由網際網路指令碼控制的連線有一條限制:沒有守護程式通知 firewalld 將連線增加到區域。這項工作僅在 ifcfg-post 指令碼進行。因此,此後對網際網路連線的重新命名將不能被應用到 firewalld 。同樣,在連線活動時重啟 firewalld 將導致與其失去關聯。現在有意修復此情況。最簡單的是將全部未配置連線加入預設區域。
區域定義了本區域中防火牆的特性:
使用 firewalld
你可以透過圖形介面工具 firewall-config 或者命令列客戶端 firewall-cmd 啟用或者關閉防火牆特性。
使用 firewall-cmd
命令列工具 firewall-cmd 支援全部防火牆特性。對於狀態和查詢模式,命令只返回狀態,沒有其他輸出。
一般應用
獲取 firewalld 狀態
firewall-cmd –state
此舉返回 firewalld 的狀態,沒有任何輸出。可以使用以下方式獲得狀態輸出:
firewall-cmd –state && echo “Running” || echo “Not running”
在 Fedora 19 中, 狀態輸出比此前直觀:
# rpm -qf $( which firewall-cmd )
firewalld-0.3.3-2.fc19.noarch# firewall-cmd –state
not running
在不改變狀態的條件下重新載入防火牆:
firewall-cmd –reload
如果你使用–complete-reload,狀態資訊將會丟失。這個選項應當僅用於處理防火牆問題時,例如,狀態資訊和防火牆規則都正常,但是不能建立任何連線的情況。
獲取支援的區域列表
firewall-cmd –get-zones
這條命令輸出用空格分隔的列表。
獲取所有支援的服務
firewall-cmd –get-services
這條命令輸出用空格分隔的列表。
獲取所有支援的 ICMP 型別
firewall-cmd –get-icmptypes
這條命令輸出用空格分隔的列表。
列出全部啟用的區域的特性
firewall-cmd –list-all-zones
輸出格式是:
interfaces:
services:
ports:
forward-ports:
icmp-blocks:
輸出區域
firewall-cmd [–zone=
獲取預設區域的網際網路設定
firewall-cmd –get-default-zone
設定預設區域
firewall-cmd –set-default-zone=
流入預設區域中配置的介面的新訪問請求將被置入新的預設區域。當前活動的連線將不受影響。
獲取活動的區域
firewall-cmd –get-active-zones
這條命令將用以下格式輸出每個區域所含介面:
根據介面獲取區域
firewall-cmd –get-zone-of-interface=
這條命令將輸出介面所屬的區域名稱。
將介面增加到區域
firewall-cmd [–zone=
如果介面不屬於區域,介面將被增加到區域。如果區域被省略了,將使用預設區域。介面在重新載入後將重新應用。
修改介面所屬區域
firewall-cmd [–zone=
這個選項與 –add-interface 選項相似,但是當介面已經存在於另一個區域的時候,該介面將被新增到新的區域。
從區域中刪除一個介面
firewall-cmd [–zone=
查詢區域中是否包含某介面
firewall-cmd [–zone=
返回介面是否存在於該區域。沒有輸出。
列舉區域中啟用的服務
firewall-cmd [ –zone=
啟用應急模式阻斷所有網際網路連線,以防出現緊急狀況
firewall-cmd –panic-on
禁用應急模式
firewall-cmd –panic-off
程式碼如下
複製程式碼
應急模式在 0.3.0 版本中發生了變化
在 0.3.0 之前的 FirewallD 版本中, panic 選項是 –enable-panic 與 –disable-panic.
查詢應急模式
firewall-cmd –query-panic
此命令返回應急模式的狀態,沒有輸出。可以使用以下方式獲得狀態輸出:
firewall-cmd –query-panic && echo “On” || echo “Off”
處理執行時區域
執行時模式下對區域進行的修改不是永久有效的。重新載入或者重啟後修改將失效。
啟用區域中的一種服務
firewall-cmd [–zone=
此舉啟用區域中的一種服務。如果未指定區域,將使用預設區域。如果設定了超時時間,服務將只啟用特定秒數。如果服務已經活躍,將不會有任何警告資訊。
例: 使區域中的 ipp-client 服務生效 60 秒:
firewall-cmd –zone=home –add-service=ipp-client –timeout=60
例: 啟用預設區域中的 http 服務:
firewall-cmd –add-service=http
禁用區域中的某種服務
firewall-cmd [–zone=
此舉禁用區域中的某種服務。如果未指定區域,將使用預設區域。
例: 禁止 home 區域中的 http 服務:
firewall-cmd –zone=home –remove-service=http
區域種的服務將被禁用。如果服務沒有啟用,將不會有任何警告資訊。
查詢區域中是否啟用了特定服務
firewall-cmd [–zone=
如果服務啟用,將返回 1, 否則返回 0 。沒有輸出資訊。
啟用區域埠和協議組合
firewall-cmd [–zone=
此舉將啟用埠和協議的組合。埠可以是一個單獨的埠
禁用埠和協議組合
firewall-cmd [–zone=
firewall-cmd [–zone=
啟用區域中的 IP 偽裝功能
firewall-cmd [–zone=
此舉啟用區域的偽裝功能。私有網際網路的地址將被隱藏並對映到一個公有 IP 。這是地址轉換的一種形式,常用於路由。由於核心的限制,偽裝功能僅可用於 IPv4 。
禁用區域中的 IP 偽裝
firewall-cmd [–zone=
查詢區域的偽裝狀態
firewall-cmd [–zone=
如果啟用,此命令將有返回值。沒有輸出資訊。
啟用區域的 ICMP 阻塞功能
firewall-cmd [–zone=
此舉將啟用選中的 Internet 控制報文協議(ICMP)報文進行阻塞。 ICMP 報文可以是請求資訊或者建立的應答報文,以及錯誤應答。
禁止區域的 ICMP 阻塞功能
firewall-cmd [–zone=
查詢區域的 ICMP 阻塞功能
firewall-cmd [–zone=
如果啟用,此命令將有返回值。沒有輸出資訊。
例: 阻塞區域的響應應答報文:
firewall-cmd –zone=public –add-icmp-block=echo-reply
在區域中啟用埠轉發或對映
firewall-cmd [–zone=
埠可以對映到另一臺 WordPress 主機的同一埠,也可以是同一 WordPress 主機或另一 WordPress 主機的不同埠。埠號可以是一個單獨的埠
禁止區域的埠轉發或者埠對映
firewall-cmd [–zone=
查詢區域的埠轉發或者埠對映
firewall-cmd [–zone=
如果啟用,此命令將有返回值。沒有輸出資訊。
例: 將區域 home 的 ssh 轉發到 127.0.0.2
firewall-cmd –zone=home –add-forward-port=port=22:proto=tcp:toaddr=127.0.0.2
處理永久區域
永久選項不直接影響執行時的狀態。這些選項僅在過載或者重啟服務時可用。為了使用執行時和永久設定,需要分別設定兩者。 選項 –permanent 需要是永久設定的第一個引數。
獲取永久選項所支援的服務
firewall-cmd –permanent –get-services
獲取永久選項所支援的 ICMP 型別列表
firewall-cmd –permanent –get-icmptypes
獲取支援的永久區域
firewall-cmd –permanent –get-zones
啟用區域中的服務
firewall-cmd –permanent [–zone=
此舉將永久啟用區域中的服務。如果未指定區域,將使用預設區域。
禁用區域中的一種服務
firewall-cmd –permanent [–zone=
查詢區域中的服務是否啟用
firewall-cmd –permanent [–zone=
如果服務啟用,此命令將有返回值。此命令沒有輸出資訊。
例: 永久啟用 home 區域中的 ipp-client 服務
firewall-cmd –permanent –zone=home –add-service=ipp-client
永久啟用區域中的一個埠-協議組合
firewall-cmd –permanent [–zone=
firewall-cmd –permanent [–zone=
firewall-cmd –permanent [–zone=
例: 永久啟用 home 區域中的 https (tcp 443) 埠
firewall-cmd –permanent –zone=home –add-port=443/tcp
永久啟用區域中的偽裝
firewall-cmd –permanent [–zone=
此舉啟用區域的偽裝功能。私有網際網路的地址將被隱藏並對映到一個公有 IP 。這是地址轉換的一種形式,常用於路由。由於核心的限制,偽裝功能僅可用於 IPv4 。
永久禁用區域中的偽裝
firewall-cmd –permanent [–zone=
查詢區域中的偽裝的永久狀態
firewall-cmd –permanent [–zone=
如果服務啟用,此命令將有返回值。此命令沒有輸出資訊。
永久啟用區域中的 ICMP 阻塞
firewall-cmd –permanent [–zone=
此舉將啟用選中的 Internet 控制報文協議(ICMP)報文進行阻塞。 ICMP 報文可以是請求資訊或者建立的應答報文或錯誤應答報文。
永久禁用區域中的 ICMP 阻塞
firewall-cmd –permanent [–zone=
查詢區域中的 ICMP 永久狀態
firewall-cmd –permanent [–zone=
如果服務啟用,此命令將有返回值。此命令沒有輸出資訊。
例: 阻塞公共區域中的響應應答報文:
firewall-cmd –permanent –zone=public –add-icmp-block=echo-reply
在區域中永久啟用埠轉發或對映
firewall-cmd –permanent [–zone=
埠可以對映到另一臺 WordPress 主機的同一埠,也可以是同一 WordPress 主機或另一 WordPress 主機的不同埠。埠號可以是一個單獨的埠
永久禁止區域的埠轉發或者埠對映
firewall-cmd –permanent [–zone=
查詢區域的埠轉發或者埠對映狀態
firewall-cmd –permanent [–zone=
如果服務啟用,此命令將有返回值。此命令沒有輸出資訊。
例: 將 home 區域的 ssh 服務轉發到 127.0.0.2
firewall-cmd –permanent –zone=home –add-forward-port=port=22:proto=tcp:toaddr=127.0.0.2
直接選項
直接選項主要用於使服務和應用程式能夠增加規則。 規則不會被儲存,在重新載入或者重啟之後必須再次提交。傳遞的引數
選項–direct 需要是直接選項的第一個引數。
將命令傳遞給防火牆。引數
firewall-cmd –direct –passthrough { ipv4 | ipv6 | eb }
為表