一、Linux防火墻的基礎(chǔ)Linux的防火墻體系主要工作在網(wǎng)絡(luò)層,針對(duì)TCP/IP數(shù)據(jù)包實(shí)時(shí)過(guò)濾和限制,屬于典型的包過(guò)濾防火墻(或稱為網(wǎng)絡(luò)層防火墻)。Linux系統(tǒng)的防火墻體系基于內(nèi)核共存:firewalld、iptables、ebtables,默認(rèn)使用firewalld來(lái)管理netfilter子系統(tǒng)。
1、firewalld概述 firewalld的作用是為包過(guò)濾機(jī)制提供匹配規(guī)則(或稱為策略),通過(guò)各種不同的規(guī)則,告訴netfilter對(duì)來(lái)自指定源,前往指定目的或具有某些協(xié)議特征的數(shù)據(jù)包采取何種處理方式。為了更加方便地組織和管理防火墻,firewalld提供了支持網(wǎng)絡(luò)區(qū)域所定義的網(wǎng)絡(luò)鏈接以及接口安全等級(jí)的動(dòng)態(tài)防火墻管理工具。支持IPv4、IPv6防火墻設(shè)置以及以太網(wǎng)橋,并且擁有兩種配置模式:
2、firewalld網(wǎng)絡(luò)區(qū)域 firewalld將所有的網(wǎng)絡(luò)數(shù)據(jù)流量劃分為多個(gè)區(qū)域,從而簡(jiǎn)化防火墻管理。根據(jù)數(shù)據(jù)包的源IP地址或傳入網(wǎng)絡(luò)接口等條件,將數(shù)據(jù)流量轉(zhuǎn)入相應(yīng)區(qū)域的防火墻規(guī)則。
3、firewalld預(yù)定義區(qū)域說(shuō)明
二、firewalld防火墻的配置方法在Centos 7系統(tǒng)中,可以使用三種方式配置firewalld防火墻:
1、firewalld-cmd的基礎(chǔ)命令 [root@centos01 ~]# systemctl start firewalld <!--啟動(dòng)firewalld-->[root@centos01 ~]# systemctl enable firewalld<!--設(shè)置開(kāi)機(jī)自動(dòng)啟動(dòng)firewalld-->[root@centos01 ~]# systemctl status firewalld <!--查看防火墻運(yùn)行狀態(tài)-->[root@localhost ~]# firewall-cmd --state <!--查看防火墻允許狀態(tài)-->running[root@centos01 ~]# systemctl stop firewalld<!--停止firewalld-->[root@centos01 ~]# systemctl disable firewalld<!--設(shè)置開(kāi)機(jī)不自動(dòng)啟動(dòng)firewalld-->[root@centos01 ~]# firewall-cmd --get-zones <!--查看防火墻預(yù)定義的區(qū)域-->[root@centos01 ~]# firewall-cmd --get-service <!--查看防火墻支持的預(yù)定義服務(wù)類(lèi)型-->[root@centos01 ~]# firewall-cmd --get-default-zone <!--查看系統(tǒng)的默認(rèn)區(qū)域 -->[root@localhost /]# firewall-cmd --reload <!--重載防火墻-->[root@centos01 ~]# firewall-cmd --get-active-zones <!--查看激活的區(qū)域-->[root@centos01 ~]# firewall-cmd --get-icmptypes <!--顯示預(yù)定義的ICMP類(lèi)型-->address-unreachable bad-header communication-prohibited destination-unreachable echo-reply echo-request fragmentation-needed host-precedence-violation host-prohibitedhost-redirect host-unknown host-unreachable ip-header-bad neighbour-advertisementneighbour-solicitation network-prohibited network-redirect network-unknown network-unreachable no-route packet-too-big parameter-problem port-unreachableprecedence-cutoff protocol-unreachable redirect required-option-missingrouter-advertisement router-solicitation source-quench source-route-failed time-exceededtimestamp-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命令執(zhí)行結(jié)果中部分阻塞類(lèi)型的含義如下:
2、firewalld區(qū)域管理選項(xiàng)
區(qū)域管理示例如下: [root@centos01 ~]# firewall-cmd --get-default-zone <!--顯示當(dāng)前系統(tǒng)中的默認(rèn)區(qū)域-->[root@centos01 ~]# firewall-cmd --list-all<!--顯示默認(rèn)區(qū)域的所有規(guī)則-->[root@centos01 ~]# firewall-cmd --get-zone-of-interface=ens32 <!--查看ens32接口所在的區(qū)域-->internal[root@centos01 ~]# firewall-cmd --zone=internal --change-interface=ens32 <!--修改ens32接口對(duì)應(yīng)的區(qū)域更改到internal區(qū)域--> The interface is under control of NetworkManager, setting zone to 'internal'.success[root@centos01 ~]# firewall-cmd --zone=internal --list-interface <!--查看internal區(qū)域的接口列表-->ens32[root@centos01 ~]# firewall-cmd --get-active-zones <!--顯示所有激活區(qū)域-->internal interfaces: ens32 3、firewalld服務(wù)管理 為了方便管理,firewalld預(yù)先定義了很多服務(wù),存放在/usr/lib/firewalld/services/目錄中,服務(wù)通過(guò)單個(gè)的XML配置文件來(lái)指定。這些配置文件則按以下格式命名:service-name.xml,每個(gè)文件對(duì)應(yīng)一項(xiàng)具體的網(wǎng)絡(luò)服務(wù),如ssh服務(wù)等。我們需要將service配置文件放置在/etc/firewalld/services/目錄中。service配置具有以下優(yōu)點(diǎn):
1)firewalld-cmd命令區(qū)域中服務(wù)管理的常用選項(xiàng)說(shuō)明:
2)firewalld服務(wù)管理示例如下(為默認(rèn)區(qū)域設(shè)置允許訪問(wèn)的服務(wù)): [root@centos01 ~]# firewall-cmd --list-services <!--顯示默認(rèn)區(qū)域內(nèi)允許訪問(wèn)的所有服務(wù)-->dhcpv6-client ssh [root@centos01 ~]# firewall-cmd --add-service=http <!--設(shè)置默認(rèn)區(qū)域允許訪問(wèn)http服務(wù)-->success[root@centos01 ~]# firewall-cmd --add-service=https <!--設(shè)置默認(rèn)區(qū)域允許訪問(wèn)https服務(wù)-->success[root@centos01 ~]# firewall-cmd --list-services <!--顯示默認(rèn)區(qū)域內(nèi)允許訪問(wèn)的所有服務(wù)-->dhcpv6-client ssh https http 3)firewalld服務(wù)管理示例如下(為internal區(qū)域設(shè)置允許訪問(wèn)的服務(wù)): [root@centos01 ~]# firewall-cmd --zone=internal --add-service=mysql <!--設(shè)置internal區(qū)域允許訪問(wèn)mysql服務(wù)-->success[root@centos01 ~]# firewall-cmd --zone=internal --remove-service=samba-client <!--設(shè)置internal區(qū)域不允許訪問(wèn)Samba-client服務(wù)-->success[root@centos01 ~]# firewall-cmd --zone=internal --list-services <!--顯示internal區(qū)域內(nèi)允許訪問(wèn)的所有服務(wù)-->ssh mdns dhcpv6-client mysql 4、端口管理 在進(jìn)行服務(wù)配置時(shí),預(yù)定義的網(wǎng)絡(luò)服務(wù)可以使用服務(wù)名配置,服務(wù)所涉及的端口就會(huì)自動(dòng)打開(kāi)。但是,對(duì)于非預(yù)定義的服務(wù)只能手動(dòng)為指定的區(qū)域添加端口。例如,執(zhí)行以下操作即可實(shí)現(xiàn)在internal區(qū)域打開(kāi)443/TCP端口。示例如下: [root@centos01 ~]# firewall-cmd --zone=internal --add-port=443/tcp <!--在internal區(qū)域打開(kāi)443/tcp端口-->success 若想實(shí)現(xiàn)在internal區(qū)域禁止443/TCP端口訪問(wèn),可執(zhí)行以下命令: [root@centos01 ~]# firewall-cmd --zone=internal --remove-port=443/tcp <!--在internal區(qū)域禁止443/tcp端口訪問(wèn)-->success 以上配置都為臨時(shí)配置,若想將當(dāng)前配置保存為永久配置,可以使用下面命令: [root@centos01 ~]# firewall-cmd --runtime-to-permanentsuccess 直接配置為永久性規(guī)則,須帶--permanent選項(xiàng),如下: [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區(qū)域禁止ping-->success 三、firewalld兩種配置模式前面提到firewall-cmd命令工具有兩種配置模式:運(yùn)行時(shí)模式(Runtime mode)表示當(dāng)前內(nèi)存中運(yùn)行的防火墻配置,在系統(tǒng)或firewalld服務(wù)重啟、停止時(shí)配置將失效;永久模式(Permanent mode)表示重啟防火墻或重新加載防火墻時(shí)的規(guī)則配置,是永久存儲(chǔ)在配置文件中的。
|
|
來(lái)自: 書(shū)房1974 > 《工程》