天天看点

Firewalld防火墙基础Firewalld概述

Firewalld概述

Firewalld

支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具

支持IPv、IPv6防火墙设置以及以太网桥

支持服务或应用程序直接添加防火墙规则接口

拥有两种配置模式

运行时配置 :即时生效,直至重启或关闭防火墙

永久配置:重启生效 一直有效

Firewalld和iptables的关系

netfilter

位于Linux内核中的包过滤功能体系

称为Linux防火墙的“内核态”

Firewalld/iptables

CentOS 7默认的管理防火墙规则的工具(Firewalld)

称为Linux防火墙的“用户态”

Firewalld防火墙基础Firewalld概述

Firewalld和iptables的区别

Firewalld防火墙基础Firewalld概述

Firewalld网络区域

区域介绍(重点)

区域如同进入主机的安全门,每个区域都具有不同限制程度的规则

可以使用一个或多个区域,但是任何一个活跃区域至少需要关联源地址或接口

默认情况下,public区域(放行ssh)是默认区域,包含所有接口(网卡)

Firewalld防火墙基础Firewalld概述

FireWalld数据处理流程

检查数据来源的源地址

若源地址关联到特定的区域,则执行该区域所指定的规则

若源地址未关联到特定的区域,则使用传入网络接口的区域,并执行该区域所指定的规则

若网络接口未关联到特定的区域,则使用默认区域并执行该区域所指定的规则

firewalld 将网卡对应到不同的区域(zone),zone默认共有9个,

block dmz drep external home internal public trusted work.
drep(丢弃)
任何接收的网络数据包都会被丢弃,没有任何回复。仅能有发送出去的网络连接。
block(限制)
任何接收的网络连接都被IPv4的icmp-host-prohibited信息和icmp6-adm-prohibited信息所拒绝
public(公共)
在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收选取过的连接。
external(外部)
特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能通过选择的连接。
dmz(非军事区)
用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。
work(工作)
用于工作区。您可以基本相信网络内其他电脑不会危害您的电脑。仅仅接收经过选择的连接。
home(家庭)
用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过的连接。
internal(内部)
用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接。
tructed(信任)
可接受所有的网络连接。
指定其中一个区域为默认区域是可行的。当接口连接加入了NetworkManager,它们就被分配为默认区域。
           

不同的区域之间的差异是其对待数据包的默认行为不同,在CentOS 7系统中,默认区域被设置为public.

Firewalld防火墙的配置方法

运行时配置
实时生效,并持续至Firewalld重新启动或重新加载配置
不中断现有连接
不能修改服务配置
永久配置
不立即生效,除非Firewalld重新启动或重新加载配置
中断现有连接
可以修改服务配置
           

Firewalld-config图形工具

Freewalld-cmd命令行工具
/etc/firewalld/中的配置文件
Firewalld会优先使用/erc/firewalld/中的配置,如果不存在配置文件,则使用/usr/lib/firewallld/中的配置
/etc/firewalld/:用户自定义配置文件,需要时可通过从/usr/lib/firewalld/中拷贝
/usr/lib/firewalld/:默认配置文件,不建议修改,若恢复至默认配置,可直接删除/etc/firewalld/中的配置
           

Firewalld-config图形工具

运行时配置/永久配置

Firewalld防火墙基础Firewalld概述

重新加载防火墙

更改永久配置并生效

Firewalld防火墙基础Firewalld概述

关联网卡到指定区域

Firewalld防火墙基础Firewalld概述

修改默认区域

Firewalld防火墙基础Firewalld概述

连接状态

Firewalld防火墙基础Firewalld概述

开启防火墙时要先输入开启防火墙的命令

应用程序 杂项 防火墙

[[email protected] ~]# systemctl start firewalld
[[email protected] ~]# setenforce 0
[[email protected] ~]# systemctl status firewalld
           

“区域”选项卡

“服务”子选项卡

“端口”子选项卡

“协议”子选项卡

“源端口”子选项卡

“伪装”子选项卡

“端口转发”子选项卡

“ICMP过滤器”子选项卡

“服务”选项卡

“模块”子选项卡

“目标地址”子选项卡

Firewalld防火墙案例

实验环境

Firewalld防火墙基础Firewalld概述

需求描述

禁止主机ping服务器

只允许20.0.0.12主机访问SSH服务

允许所有主机访问Apache服务

需求详解图:

Firewalld防火墙基础Firewalld概述

IP:20.0.0.12 客户端(server2)

IP:20.0.0.11 服务器(server1)

[[email protected] ~]# firewall-config

修改防火墙work的来源

Firewalld防火墙基础Firewalld概述
Firewalld防火墙基础Firewalld概述

服务选择:开启ssh httpd 关闭dhcpv6-client

修改public公共区域的编辑

服务选择:关闭ssh、dhcpv6-client服务 开启http服务

Firewalld防火墙基础Firewalld概述

那么如何阻止别人ping通我

对work配置:

ICMP过滤器(里面打钩,表示阻止)

Firewalld防火墙基础Firewalld概述

对public进行配置:

Firewalld防火墙基础Firewalld概述

echo-request(开启,能ping通)(work:单独设置的IP地址)(public:公共的ip地址)

安装apache服务:

[[email protected] ~]# yum -y install httpd
启动apache服务:systemctl start httpd
           

查看ssh服务是否打开

[[email protected] ~]# netstat -anpt | grep 22

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1005/sshd

查看发现是可以访问服务端的Apache页面

Firewalld防火墙基础Firewalld概述

通过ssh登录验证:

[roo[email protected] ~]# ssh [email protected](可以登录)
The authenticity of host '20.0.0.11 (20.0.0.11)' can't be established.
ECDSA key fingerprint is SHA256:oyGJ3iDy2VmJEvrJc2fPhoMY4moIq1XM/XU3A2YIKmI.
ECDSA key fingerprint is MD5:16:9d:43:43:fb:45:a2:6e:a7:a7:8a:0f:d8:67:93:32.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '20.0.0.11' (ECDSA) to the list of known hosts.
[email protected]'s password: 
Last login: Wed Dec 30 22:12:30 2020 from 20.0.0.1
[[email protected] ~]# exit
登出
Connection to 20.0.0.11 closed.
           
[[email protected] ~]#  ssh [email protected](不能登录)
ssh: connect to host 20.0.0.11 port 22: No route to host
           
Firewalld防火墙基础Firewalld概述

附加:定义配置永久时重启服务器,做的配置依旧生效(之后还要进行重载防火墙的操作)

配置Firewalld防火墙

实验拓扑图:

Firewalld防火墙基础Firewalld概述

1.网关:192.168.81.10(ens33)-external,

192.168.100.1(ens37)-trusted,

192.168.216.1(ens38)-dmz

网页服务器地址:192.168.216.10

企业内网测试机(用户):192.168.100.1

互联网用户:192.168.81.20

2.网站服务器和网关服务器均通过SSH来远程管理,为了安全,将SSH的端口号改为12345。

3.网站服务器开启https,关闭http。

4.网站服务器拒绝ping,网关服务器拒绝来自互联网上的ping.

5.公司内网用户需要通过网关服务器共享上网。

6.互联网用户需要访问网站服务器。

网络服务器,Internet测试用机(安装httpd服务)

[[email protected] ~]# yum -y install httpd
           

网关服务器添加三张网卡:

(VM1:内部区域(信任区域))(VM2: DMZ区域)(VM3:外部区域)

Firewalld防火墙基础Firewalld概述
Firewalld防火墙基础Firewalld概述

对三块网卡的配置文件进行设置

ens33连接的是web服务器
ens37连接的是信任区域(内部区域)
ens38连接的是DMZ区域
cd /etc/sysconfig/network-scripts/
[[email protected] ~]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# vim ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.81.10
NETMASK=255.255.255.0
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=90b2920e-8304-4317-8df9-df5bcf7c1210
DEVICE=ens33
ONBOOT=yes

[[email protected] network-scripts]# cp -p ifcfg-ens33 ifcfg-ens37
[[email protected] network-scripts]# vim ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.100.1
NETMASK=255.255.255.0
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37
DEVICE=ens37
ONBOOT=yes

[[email protected] network-scripts]# cp -p ifcfg-ens33 ifcfg-ens38
[[email protected] network-scripts]# vim ifcfg-ens38
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.216.10
NETMASK=255.255.255.0
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens38
DEVICE=ens38
ONBOOT=yes

重启网卡,并查看网卡信息
[[email protected] network-scripts]# systemctl restart network
[[email protected] network-scripts]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.81.10

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.1 

ens38: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.216.1 


开启路由转发功能:[[email protected] network-scripts]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1(最后一行添加)
[[email protected] network-scripts]# sysctl -p(开启路由转发功能,使其生效)(这样就可以作为路由器去使用)
net.ipv4.ip_forward = 1
           

企业内网服务器:

修改网卡信息

Firewalld防火墙基础Firewalld概述
[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.100.10
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=852c7a86-986a-4cce-9e41-a2009022cb9c
DEVICE=ens33
ONBOOT=yes

[[email protected] ~]# systemctl restart network
[[email protected] ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.10

测试是否能ping通网关
[[email protected] ~]# ping 192.168.100.1
PING 192.168.100.1 (192.168.100.1) 56(84) bytes of data.
64 bytes from 192.168.100.1: icmp_seq=1 ttl=128 time=0.573 ms
           

DMZ网络服务器:

修改网卡信息

Firewalld防火墙基础Firewalld概述
[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.216.10
NETMASK=255.255.255.0
GATEWAY=192.168.216.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=29301975-17cd-45af-93cf-e9226cfde05e
DEVICE=ens33
ONBOOT=yes
[[email protected] ~]# systemctl restart network
[[email protected] ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.216.10 
[[email protected] ~]# ping 192.168.216.1
PING 192.168.216.1 (192.168.216.1) 56(84) bytes of data.
64 bytes from 192.168.216.1: icmp_seq=1 ttl=128 time=0.558 ms
           

附加:

什么是DMZ区域,DMZ区域的作用与原理
一. 概念:
DMZ是为了解决安装防火墙后外部网络的访问用户不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间的缓冲区。该缓冲区位于企业内部网络和外部网络之间的小网络区域内。在这个小网络区域内可以放置一些必须公开的服务器(如企业Web服务器、FTP服务器和论坛等);另一方面,通过这样一个DMZ区域,更加有效地保护了内部网络。因为这种网络部署,比起一般的防火墙方案,对来自外网的攻击者来说又多了一道关卡。
DMZ区域可以理解为一个不同于外网和内网的特殊网络区域
在一个用路由器连接的局域网中,我们可以将网络划分为三个区域:
安全级别最高的LAN Area(内网);
安全级别中等的DMZ区域;
安全级别最低的Internet区域(外网)。
三个区域因担负不同的任务而拥有不同的访问策略。

二. DMZ原理:
将部分用于提供对外服务的服务器主机划分到一个特定的子网——DMZ内,在DMZ的主机能与同处DMZ内的主机和外部网络的主机通信,而同内部网络主机的通信会被受到限制。这使DMZ的主机能被内部网络和外部网络所访问,而内部网络又能避免外部网络所得知。

三. 两个防火墙之间的空间被称为DMZ:
我们在配置一个拥有DMZ区的网络的时候,通常定义以下的访问控制策略以实现DMZ区的屏蔽功能:
1)内网可以访问外网
内网的用户显然需要自由地访问外网。在这一策略中,防火墙需要进行源地址转换。
2)内网可以访问DMZ
此策略是为了方便内网用户使用和管理DMZ中的服务器。
3)外网不能访问内网
很显然,内网中存放的是公司内部数据,这些数据不允许外网的用户进行访问。
4)外网可以访问DMZ
DMZ中的服务器本身就是要给外界提供服务的,所以外网必须可以访问DMZ。同时,外网访问DMZ需要由防火墙完成对外地址到服务器实际地址的转换。
5)DMZ不能访问内网
很明显,如果违背此策略,则当入侵者攻陷DMZ时,就可以进一步进攻到内网的重要数据。
6)DMZ不能访问外网
此条策略也有例外,比如DMZ中放置邮件服务器时,就需要访问外网,否则将不能正常工作。在网络中,非军事区(DMZ)是指为不信任系统提供服务的孤立网段,其目的是把敏感的内部网络和其他提供访问服务的网络分开,阻止内网和外网直接通信,以保证内网安全。

四. 服务配置:
1)DMZ提供的服务是经过了网络地址转换(NAT)和受安全规则限制的,以达到隐蔽真实地址、控制访问的功能。首先要根据将要提供的服务和安全策略建立一个清晰的网络拓扑,确定DMZ区应用服务器的IP和端口号以及数据流向。通常网络通信流向为禁止外网区与内网区直接通信,DMZ区既可与外网区进行通信,也可以与内网区进行通信,受安全规则限制。
地址转换
2)DMZ区服务器与内网区、外网区的通信是经过网络地址转换(NAT)实现的。网络地址转换用于将一个地址域(如专用Internet)映射到另一个地址域(如Internet),以达到隐藏专用网络的目的。DMZ区服务器对内服务时映射成内网地址,对外服务时映射成外网地址。采用静态映射配置网络地址转换时,服务用IP和真实IP要一一映射,源地址转换和目的地址转换都必须要有。

           

外部区域服务器:

修改网卡信息:

Firewalld防火墙基础Firewalld概述
[[email protected] ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.81.20
NETMASK=255.255.255.0
GATEWAY=192.168.81.10
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
ONBOOT=yes
[[email protected] ~]# systemctl restart network
[[email protected] ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.81.20 
[[email protected] ~]# ping 192.168.81.10
PING 192.168.81.10 (192.168.81.10) 56(84) bytes of data.
64 bytes from 192.168.81.10: icmp_seq=1 ttl=64 time=0.455 ms
           

修改DMZ网络服务器主机名:

[root@server3 ~]# hostnamectl set-hostname dmz 
[[email protected] ~]# su
           

修改外部区域服务器主机名:

[[email protected] ~]# hostnamectl set-hostname external
[[email protected] ~]# su
           

修改内部局域网测试机主机名:

[[email protected] ~]# hostnamectl set-hostname inside
[[email protected] ~]# su
           

修改网关服务器主机名:

[[email protected] network-scripts]# hostnamectl set-hostname fw
[[email protected] network-scripts]# su
           

dmz服务器上开启服务:

[[email protected] ~]# systemctl start httpd.service 

修改站点目录:
[[email protected] ~]# cd /var/www/html/
[[email protected] html]# vim index.html
<h1>wangtong</h1>

开启防火墙,并检查
[[email protected] html]# sudo systemctl start firewalld.service 
[[email protected] html]# systemctl status firewalld.service 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) 
[[email protected] html]# firewall-cmd --set-default-zone=dmz(zone变为dmz)
success
[[email protected] html]# firewall-cmd --add-service=http --zone=dmz --permanent (允许访问的服雾添加到dmz区域,永久性的设置)
success

(不允许对方ssh的访问)
[[email protected] html]# firewall-cmd --remove-service=ssh --zone=dmz --permanent
success

(禁用ICMP协议)
[[email protected] html]# firewall-cmd --add-icmp-block=echo-request --zone=dmz --permanent
success

(重载防火墙)
[[email protected] html]# firewall-cmd --reload 
success
           

本地查看网页

Firewalld防火墙基础Firewalld概述

外部服务器:

开启服务,关闭防火墙,核心防护
[[email protected] ~]# systemctl start httpd.service 
[[email protected] ~]# systemctl stop firewalld.service 
[[email protected] ~]# setenforce 0

修改网站:
[[email protected] ~]# vim /var/www/html/index.html
<h1>xuwenyu</h1>

           

本地查看网页:

Firewalld防火墙基础Firewalld概述

用内部服务器测试,验证

此时发现两个网页都无法访问(说明防火墙上面没有做设置)

需要在网关服务器上面做设置:

默认区域设置为外部区域(非限制区域)
[[email protected] network-scripts]# firewall-cmd --set-default-zone=external 
success
将ens37 ens38改为信任区域和dmz区域(ens37信任区域)(ens38dmz区域)
[[email protected] network-scripts]# firewall-cmd --change-interface=ens37 --zone=trusted --permanent
The interface is under control of NetworkManager, setting zone to 'trusted'.
success
[[email protected] network-scripts]# firewall-cmd --change-interface=ens38 --zone=dmz --permanent 
The interface is under control of NetworkManager, setting zone to 'dmz'.
success

dmz区域进行设置:(删除ssh)
[[email protected] network-scripts]# firewall-cmd --zone=dmz --remove-service=ssh --permanent 
success

添加http服务:
[[email protected] network-scripts]# firewall-cmd --zone=dmz --add-service=http --permanent 
success

添加icmp服务:
[[email protected] network-scripts]# firewall-cmd --zone=dmz --add-icmp-block=echo-request --permanent 
success



外部区域进行设置:(添加http服务)
[[email protected] network-scripts]# firewall-cmd --zone=external --add-service=http --permanent 
success


重载防火墙:
[[email protected] network-scripts]# firewall-cmd --reload 
succed
           

此时外部服务器访问不到dmz服务器,此时需要做端口转发

需要在防火墙(网关服务器)添加端口映射(端口转发)的命令

[[email protected] network-scripts]# firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=192.168.81.20 --permanent 
success
[[email protected] network-scripts]# firewall-cmd --reload (重载)

           

附加:

了解firewall两种工具

一:图形化界面工具(已经介绍过)

[[email protected] ~]# firewall-config 
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
           
Firewalld防火墙基础Firewalld概述

如果想查看各个服务的端口号可以在上图服务中查看

二:字符界面(命令)

firewall-cmd命令
1)启动、停止、查看firewalld服务
在安装CentOS7系统时,会自动安装firewalld和图形化工具firewall.config。执行以下命令可以启动firewalld并设置为开机自启动状态。
[email protected]~]# systemctl start firewalld //启动firewalld
[[email protected]~]#systemctl enable firewalld//设置firewalld为开机白启动
Created symlink from /et/systemd/system/dbus.org. fedoraproject.FirewallD1.
scrvice to /usr/lib/systcmd/systcm/firewalld.service.
Created symlink from /etc/systend/ system/basic.target.wants/firewalld.service
to /usx/lib/systemd/system/firewalld.service.
如果firewalld正在运行,通过systemctl status firewalld或firewall--cmd命令
可以查看其运行状态。
[[email protected]]# systcmctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (usx/lib/ systemd/system/ firewalld. service; enabled; vendor
preset: enabled)
Active: active (running) since 三 2017-09-20 08:08:14 CST: 46s ago
Docs: man:firewalld(1)
Main PID:3556 (firewalld)
CGx9up:/system.slice/firswalld.service
—3556 /usr/bin/python -Es /usr/sbin/tirewalld--nofork --nopid
9月20 08:08:11 localhost. localdomainsystemd[1]: Starting firewalld - dynamic
firewall daemon.. .
9月20 08:08:14 localhost.localdomainaxstmd[1]: Started fircwalld- dynamic
firewall daemon.
或
[[email protected]~]# firewall-cmd --state
running
如果想要禁用firewalld,执行以下命令即可实现。
[email protected]~]#systemctl stop firewalld //停止firewalld
[email protected],~]#systemctl disable firewalld //设置firewalld开机不自启动
Removed symlink /etc/systemd/system/ basic.target.wants/firewalld.service.
Rcmoved syslink /etc/sygtemd/ system/ dbus.9rg.iedgrapx9iect.FirewallDl.service.

2)获取预定义信息
firewallzcmd预定义信息主要包括三种:可用的区域、可用的服务以及可用的ICMP阻
塞类型,具体的查看命令如下所示。
[[email protected]~]# firewall-cmd --get-zones//显示预定义的区域
work drop internal external trusted homc dmz public block
[email protected]~]# firewall-cmd--get-service //显示预定义的服务
RII-Satellite-6 amanda-client amanda-k5-client baculabacula-client cephceph
mondhcp. dhcpv6 dhcpv6-client dnsdockex美egistry.dropbox-lansyncfreeipa.ldap
frecipa-ldapsfrecioa-reolication fto high-availabilitv htto httos imapimaps

[[email protected] ~]# firewall-cmd --get-services 
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

[[email protected]~]# cirewall-cmd --get icmptypes //显示预定义的ICMP类型
destination-unreachable echo-reply echo-request parameter-problem redirect router
-advertisement router-solicitation source-quench time-exceeded timestampzreplx
timesta想preAuest
firewall.cnd --get-icmptypes命令的执行结果中各种阻塞类型的含义分别如下所示。
destination-unreachable:目的地址不可达。
echo-reply:应答回应(pong).
parameter-problem:参数问题。
redirect:重新定向。
router-advertisement:路由器通告。
router-solicitation:路由器征寻。
source-quench:源端抑制。
time-exceeded:超时。
timestamp-reply:时间戳应答回应。
timestamp-request:时间戳请求。
相当于图形化界面的ICMP过滤器


3)区域管理
使用firewall-cmd命令可以实现获取和管理区域,为指定区域绑定网络接口等功能。
表1-2中列出了 firewall.cmd命令的区域管理选项说明。
表1-2 firewall-cmd命令的区域管理选项说明
选项说明
--get-default-zone 显示网络连接或按口的默识区域
--set-default-zone=<zone> 设置网络连接或接口的默认区域
-gct-active-zoncs 显示已微活的所有区域
--get-zone-of-interface=<interface>  显示指定接口绑定的区域
—-zone=<zone>--add-interface=<interface> 为指定接口绑定区域
--zone=<zone>
--change-interface-<interface>
为指定的区或更改绑定的网络接口
—-zone=<zone>
—-remove-interface=<interface>
为指定的区域除绑定的网络接口
--list-all-zones 显示所有区域及其规则
[--zonc=<zone>] --list-all显示所有指定区域的所有规则,省略--zonc=<zone>时表示仪
对默认区域操作:默认区域为public <interface:表示端口名称:网卡名称>
具体提作如下所示。
具体操作如下所示。
(1)显示当前系统中的默认区域。
[email protected]~]# firewall--cmd --get-default zone
public
(2)显示默认区域的所有规则:
[[email protected] ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
(3)显示网络接口 ens33对应区域。
[roo[email protected]]# firewall-cmd --get-zone-of-interface=cns33
public
(4)将网络接口 ens33对应区域更改为internal区域。
[[email protected]]# tirewall-cmd--zone-internal --change-interface=ens33
The interface is under control of Mew9实kMansg9r, setting zone to 'internal'.
success
[email protected]~]# firewall-cmd --zone=internal --list-interfaces
ens33
LrootBlocalboat~]# firewall-cmd --got zone=of-intcrface=cns33
intcrnal
C5)显示所有激活区域。
[rootClocalbost~]# firewall-cmd --get-actiwe-zones
internal
intcrfaces : ens33

4)服务管理
为了方便管理,firewalld预先定义了很多服务,存放在
/usr/lib/firewalld/services/ 目录中,服务通过单个的XML配置文件来指定。这些配置
文件则按以下格式命名: scrvice-namc.xml,每个文件对应一项具体的网络服务,如ssh 服
务等。与之对应的配置文件中记录了各项服务所使用的tcp/udp端口。在最新版本的
firewalld中默认已经定义了70多种服务供我们使用,对于每个网络区域,均可以配置允
许访问的服务。当默认提供的服务不适用或者需要自定义某项服务的端口时,我们需要将
service配置文件放置在/etc/fircwalld/ services/目录中。service 配置具有以下优
点。
通过服务名字来管理规则更加人性化。
通过服务来组织端口分组的模式更加高效,如果一个服务使用了若干个网络端口,则服
务的配置文件就相当于提供了到这些端口的规则管理的批量操作快捷方式.
表1-3列出了firewall cmd命令区域中服务管理的常用选项说明。
表1-3 fizewall-smd命令区域中服务管理的常用选项说明
近项说明
[--zone—<zone>] --list一services是示指定区城内允许动问的所首服务
[--zone=<zone>] --add-service=<service>为指定区域设置允许访问的某项服务
[--zone=<zone>]--remove-service=<service〉删除指定区域已改置的允许访问的某项服务
[—-zone=<zone>] --list-ports 显示指定区域内允许访问的所有端口号
[--zone=<zone>]
-add-port=<PQrtid>[-<Portid>]/<protocol>
为指定区域设置允许访问的某个/某段端口号
(包括协议名)
[—-zone=<zone>]
——renove-port=<portid>[-<portid>]/<protocol>
除指定区域己设置的允许访问的端口号〔包括
协议名)
[--zone=<zone>」--list-icmp-blocks 显示指定区域内拒绝访问的所有ICMP类型
[--zone=<zone>] --add-icmp-block-<icmptype>为指定区域设置指绝访问的某项ICMP类型
[—-zone=<zone>] --remove-icmp-block=<icmptype>删除指定区域己设置的拒绝访阿的某项ICMP类
型,省略--zone=<zone>时表示对默认区域操作
其体操作如下所示。
1)为默认区域设置允许访问的服务。
[[email protected]]# firewall-cmd--list-services
//显示默认区域内允许访问的所有服务
dhcpv6-clientssh
[[email protected]~# firewal1-cmd --add-service=http
设置默认区成允许访问http服务success
[email protected]~]firewall-cmd -add-service=https
//设置默认区域允许访问https服务
success
[[email protected]~l# firewall-cmd --list-services
dhcpv6-clientssh https http
2)为internal区域设置允许访问的服务。
[email protected]~]# firewall-cmd --zone-internal --add-service=mysql
//设置internal区域允许访问mysql服务
success
[[email protected].~]#firewall.cmd --zone=internal -remove-service=samba-client
//设置internal区域不允许访问sarmba-client服务
success
[[email protected]~]#firewall-cmd——zone internal --list-services
显示 internal区或内允许访问的所有服务

5)端口管理
在进行服务配置时,预定义的网络服务可以使用服务名配置,服务所涉及的端口就会自
动打开。但是,对于非预定义的服务只能手动为指定的区域添加端口。例如,执行以下操作
即可实现在internal区域打开443/TCP端口。
[[email protected]~]# firewall-cmd --zome=internal --add-port=443/tcp
success
若想实现在internal区域禁止443/TCP端口访问,可执行以下命令。
[[email protected]~]#firewall-cmd --zone=internal --remove-port=443/tcp
sccess

6)两种配置模式
前面提到firewall-cmd命令工具有两种配置模式:运行时模式(Runtime mode)表示
当前内存中运行的防火墙配置,在系统或firewalld服务重启、停止时配置将失效;永久
模式(Permanent mode)表示重启防火墙或重新加载防火墙时的规则配置,是永久存储在配置
文件中的。
firewallzsnd命令工具与配置模式相关的选项有三个。
--reload:重新加载防火墙规则并保持状态信息,即将永久配置应用为运行时配置。
--permanent:带有此选项的命令用于设置永久性规则,这些规则只有在重新启动
firewalld或重新加载防火墙规则时才会生效:若不带有此选项,表示用于设置运行时
规则。
--runtime-to-pernanent:将当前的运行时配置写入规则配置文件中,使之成为永久性

           

继续阅读