您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關怎么在Centos7中使用命令設置Firewalld防火墻,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
一、Linux防火墻的基礎
Linux的防火墻體系主要工作在網絡層,針對TCP/IP數據包實時過濾和限制,屬于典型的包過濾防火墻(或稱為網絡層防火墻)。Linux系統的防火墻體系基于內核共存:firewalld、iptables、ebtables,默認使用firewalld來管理netfilter子系統。
netfilter:指的是Linux內核中實現包過濾防火墻的內部結構,不以程序或文件的形式存在,屬于“內核態”的防火墻功能體系;
firewalld:指用來管理Linux防護墻的命令程序,屬于“用戶態”的防火墻管理體系;
1、firewalld概述
firewalld的作用是為包過濾機制提供匹配規則(或稱為策略),通過各種不同的規則,告訴netfilter對來自指定源,前往指定目的或具有某些協議特征的數據包采取何種處理方式。為了更加方便地組織和管理防火墻,firewalld提供了支持網絡區域所定義的網絡鏈接以及接口安全等級的動態防火墻管理工具。支持IPv4、IPv6防火墻設置以及以太網橋,并且擁有兩種配置模式:
運行配置
永久配置
還支持服務或應用程序直接添加防火墻規則接口。
2、firewalld網絡區域
firewalld將所有的網絡數據流量劃分為多個區域,從而簡化防火墻管理。根據數據包的源IP地址或傳入網絡接口等條件,將數據流量轉入相應區域的防火墻規則。
對于進入系統的數據包,首先檢查的就是其源地址:
若源地址關聯到特定的區域,則執行該區域所制定的規則;
若源地址未關聯到特定的區域,則使用傳入網絡接口的區域并執行該區域所制定的規則;
若網絡接口未關聯到特定的區域,則使用默認區域并執行該區域所制定的規則;
默認區域不是單獨的區域,而是指向系統上定義的某個其他區域。默認情況下,默認區域是public,但是也可以更改默認區域。以上匹配規則,按照先后順序,第一個匹配的規則勝出。在每個區域中都可以配置其要打開或者關閉的一系列服務或端口,firewalld的每個預定義的區域都設置了默認打開的服務。
3、firewalld預定義區域說明
trusted(信任區域):可接收所有的網絡連接;
public:(公共區域):除非與傳出流量相關,或與ssh或dhcpv6-client預定義服務匹配,否則拒絕流量傳入;
work(工作區域):除非與傳出流量相關,或與ssh、ipp-client、dhcpv6-client預定義服務匹配,否則拒絕流量傳入,用于工作區;
home(家庭區域):除非與傳出流量相關,或與ssh、ipp-client、mdns、samba-client、dhcpv6-client預定義服務匹配,否則拒絕流量傳入,用于家庭網絡;
internal(內部區域):除非與傳出流量相關,或與ssh、ipp-client、mdns、samba-client、dhcpv6-client預定義服務匹配,否則拒絕流量傳入,用于內部網絡;
external(外部區域):除非與傳出流量相關,或與ssh預定義服務匹配,否則拒絕流量傳入;
dmz(隔離區域也稱為非軍事化區域):除非和傳出的流量相關 ,或與ssh預定義服務匹配,否則拒絕流量傳入;
blocak(限制區域):除非與傳出流量相關,否則拒絕所有傳入流量;
drop(丟棄區域):除非與傳出流量相關,否則丟棄所有傳入流量,并且不產生包含ICMP的錯誤響應;
二、firewalld防火墻的配置方法
在Centos 7系統中,可以使用三種方式配置firewalld防火墻:
firewalld-config圖形化工具;
firewalld-cmd命令行工具;
/etc/firewalld/中的配置文件;
一般情況下,不建議直接編輯配置文件;
1、firewalld-cmd的基礎命令
[root@centos01 ~]# systemctl start firewalld <!--啟動firewalld--> [root@centos01 ~]# systemctl enable firewalld<!--設置開機自動啟動firewalld--> [root@centos01 ~]# systemctl status firewalld <!--查看防火墻運行狀態--> [root@localhost ~]# firewall-cmd --state <!--查看防火墻允許狀態--> running [root@centos01 ~]# systemctl stop firewalld<!--停止firewalld--> [root@centos01 ~]# systemctl disable firewalld<!--設置開機不自動啟動firewalld--> [root@centos01 ~]# firewall-cmd --get-zones <!--查看防火墻預定義的區域--> [root@centos01 ~]# firewall-cmd --get-service <!--查看防火墻支持的預定義服務類型--> [root@centos01 ~]# firewall-cmd --get-default-zone <!--查看系統的默認區域 --> [root@localhost /]# firewall-cmd --reload <!--重載防火墻--> [root@centos01 ~]# firewall-cmd --get-active-zones <!--查看激活的區域--> [root@centos01 ~]# firewall-cmd --get-icmptypes <!--顯示預定義的ICMP類型--> address-unreachable bad-header communication-prohibited destination-unreachable echo-reply echo-request fragmentation-needed host-precedence-violation host-prohibited host-redirect host-unknown host-unreachable ip-header-bad neighbour-advertisement neighbour-solicitation network-prohibited network-redirect network-unknown network-unreachable no-route packet-too-big parameter-problem port-unreachable precedence-cutoff protocol-unreachable redirect required-option-missing router-advertisement router-solicitation source-quench source-route-failed time-exceeded timestamp-reply timestamp-request tos-host-redirect tos-host-unreachable tos-network-redirect tos-network-unreachable ttl-zero-during-reassembly ttl-zero-during-transit unknown-header-type unknown-option
firewall-cmd --get-icmptypes命令執行結果中部分阻塞類型的含義如下:
destination-unreachable:目的地址不可達;
echo-reply:應答回應;
parameter-problem:參數問題;
redirect:重新定向;
router-advertisement:路由器通告;
router-solicitation:路由器征尋;
source-quench:源端抑制;
time-exceeded:超時;
timestamp-reply:時間戳應答回應;
timestamp-request:時間戳請求;
2、firewalld區域管理選項
--get-default-zone:顯示網絡連接或接口的默認區域;
--set-default-zone=<zone>:設置網絡連接或接口的默認區域;
--get-active-zones:顯示已激活的所有區域;
--get-zone-of-interface=<interface>:顯示指定接口綁定的區域;
--zone=<zone> --add-interface=<interface>:為指定接口綁定的區域;
--zone=<zone> --change-interface=<interface>:為指定的區域更改綁定的網絡接口;
--zone=<zone> --remove-interface=<interface>:為指定的區域刪除綁定的網絡接口;
--list-all=zones:顯示所有區域及其規則;
[--zone=<zone>] --list-all:顯示所有指定區域的所有規則,省略--zone=<zone>時表示僅對默認區域操作;
區域管理示例如下:
[root@centos01 ~]# firewall-cmd --get-default-zone <!--顯示當前系統中的默認區域--> [root@centos01 ~]# firewall-cmd --list-all<!--顯示默認區域的所有規則--> [root@centos01 ~]# firewall-cmd --get-zone-of-interface=ens32 <!--查看ens32接口所在的區域--> internal [root@centos01 ~]# firewall-cmd --zone=internal --change-interface=ens32 <!--修改ens32接口對應的區域更改到internal區域--> The interface is under control of NetworkManager, setting zone to 'internal'. success [root@centos01 ~]# firewall-cmd --zone=internal --list-interface <!--查看internal區域的接口列表--> ens32 [root@centos01 ~]# firewall-cmd --get-active-zones <!--顯示所有激活區域--> internal interfaces: ens32
3、firewalld服務管理
為了方便管理,firewalld預先定義了很多服務,存放在/usr/lib/firewalld/services/目錄中,服務通過單個的XML配置文件來指定。這些配置文件則按以下格式命名:service-name.xml,每個文件對應一項具體的網絡服務,如ssh服務等。我們需要將service配置文件放置在/etc/firewalld/services/目錄中。service配置具有以下優點:
通過服務名字來管理規則更加人性化;
通過服務來組織端口分組的模式更加高效,如果一個服務使用了若干個網絡端口,則服務的配置文件就相當于提供了到這些端口的規則管理的批量操作快捷方式;
1)firewalld-cmd命令區域中服務管理的常用選項說明:
[--zone=<zone>] --list-services:顯示指定區域內允許訪問的所有服務;
[--zone=<zone>] --add-service=<service>:為指定區域設置允許訪問的某項服務;
[--zone=<zone>] --remove-service=<service>:刪除指定區域已設置的允許訪問的某項服務;
[--zone=<zone>] --list-ports:顯示指定區域內允許訪問的所有端口號;
[--zone=<zone>] --add-port=<portid>[-<portid>]/<protocol>:為指定區域設置允許訪問的某個/某段端口號(包括協議號);
[--zone=<zone>] --remove-port=<portid>[-<portid>]/<protocl>:刪除指定區域已設置的允許訪問的端口號(包括協議名);
[--zone=<zone>] --list-icmp-blocaks:顯示指定區域內拒絕訪問的所有ICMP類型;
[--zone=<zone>] --add-icmp-block=<icmptype>:為指定區域設置拒絕訪問的某項ICMP類型;
[--zone=<zone>] --remove-icmp-block=<icmptype>:刪除指定區域已設置的拒絕訪問的某項ICMP類型,省略--zone=<zone>時表示對默認區域操作;
2)firewalld服務管理示例如下(為默認區域設置允許訪問的服務):
[root@centos01 ~]# firewall-cmd --list-services <!--顯示默認區域內允許訪問的所有服務--> dhcpv6-client ssh [root@centos01 ~]# firewall-cmd --add-service=http <!--設置默認區域允許訪問http服務--> success [root@centos01 ~]# firewall-cmd --add-service=https <!--設置默認區域允許訪問https服務--> success [root@centos01 ~]# firewall-cmd --list-services <!--顯示默認區域內允許訪問的所有服務--> dhcpv6-client ssh https http
3)firewalld服務管理示例如下(為internal區域設置允許訪問的服務):
[root@centos01 ~]# firewall-cmd --zone=internal --add-service=mysql <!--設置internal區域允許訪問mysql服務--> success [root@centos01 ~]# firewall-cmd --zone=internal --remove-service=samba-client <!--設置internal區域不允許訪問Samba-client服務--> success [root@centos01 ~]# firewall-cmd --zone=internal --list-services <!--顯示internal區域內允許訪問的所有服務--> ssh mdns dhcpv6-client mysql
4、端口管理
在進行服務配置時,預定義的網絡服務可以使用服務名配置,服務所涉及的端口就會自動打開。但是,對于非預定義的服務只能手動為指定的區域添加端口。例如,執行以下操作即可實現在internal區域打開443/TCP端口。示例如下:
[root@centos01 ~]# firewall-cmd --zone=internal --add-port=443/tcp <!--在internal區域打開443/tcp端口--> success
若想實現在internal區域禁止443/TCP端口訪問,可執行以下命令:
[root@centos01 ~]# firewall-cmd --zone=internal --remove-port=443/tcp <!--在internal區域禁止443/tcp端口訪問--> success
以上配置都為臨時配置,若想將當前配置保存為永久配置,可以使用下面命令:
[root@centos01 ~]# firewall-cmd --runtime-to-permanent success
直接配置為永久性規則,須帶--permanent選項,如下:
[root@centos01 ~]# firewall-cmd --add-icmp-block=echo-request --permanent <!--禁止ping--> success [root@centos01 ~]# firewall-cmd --zone=external --add-icmp-block=echo-request --permanent <!--配置external區域禁止ping--> success
三、firewalld兩種配置模式
前面提到firewall-cmd命令工具有兩種配置模式:運行時模式(Runtime mode)表示當前內存中運行的防火墻配置,在系統或firewalld服務重啟、停止時配置將失效;永久模式(Permanent mode)表示重啟防火墻或重新加載防火墻時的規則配置,是永久存儲在配置文件中的。
firewall-cmd命令工具與配置模式相關的選項有三個:
--reload:重新加載防火墻規則并保持狀態信息,即將永久配置應用為運行時配置;
--permanent:帶有此選項的命令用于設置永久性規則,這些規則只有在重新啟動或重新加載防火墻規則時才會生效;若不帶此項,表示用于設置運行時規則;
--runtime-to-permanent:將當前運行時的配置寫入規則配置文件中,使當前內存中的規則稱為永久性配置;
以上就是怎么在Centos7中使用命令設置Firewalld防火墻,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。