Firewalld概述
Firewalld
支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具
支持IPv、IPv6防火墙设置以及以太网桥
支持服务或应用程序直接添加防火墙规则接口
拥有两种配置模式
运行时配置 :即时生效,直至重启或关闭防火墙
永久配置:重启生效 一直有效
Firewalld和iptables的关系
netfilter
位于Linux内核中的包过滤功能体系
称为Linux防火墙的“内核态”
Firewalld/iptables
CentOS 7默认的管理防火墙规则的工具(Firewalld)
称为Linux防火墙的“用户态”
Firewalld和iptables的区别
Firewalld网络区域
区域介绍(重点)
区域如同进入主机的安全门,每个区域都具有不同限制程度的规则
可以使用一个或多个区域,但是任何一个活跃区域至少需要关联源地址或接口
默认情况下,public区域(放行ssh)是默认区域,包含所有接口(网卡)
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图形工具
运行时配置/永久配置
重新加载防火墙
更改永久配置并生效
关联网卡到指定区域
修改默认区域
连接状态
开启防火墙时要先输入开启防火墙的命令
应用程序 杂项 防火墙
[root@serverl ~]# systemctl start firewalld
[root@serverl ~]# setenforce 0
[root@serverl ~]# systemctl status firewalld
“区域”选项卡
“服务”子选项卡
“端口”子选项卡
“协议”子选项卡
“源端口”子选项卡
“伪装”子选项卡
“端口转发”子选项卡
“ICMP过滤器”子选项卡
“服务”选项卡
“模块”子选项卡
“目标地址”子选项卡
Firewalld防火墙案例
实验环境
需求描述
禁止主机ping服务器
只允许20.0.0.12主机访问SSH服务
允许所有主机访问Apache服务
需求详解图:
IP:20.0.0.12 客户端(server2)
IP:20.0.0.11 服务器(server1)
[root@server1 ~]# firewall-config
修改防火墙work的来源
服务选择:开启ssh httpd 关闭dhcpv6-client
修改public公共区域的编辑
服务选择:关闭ssh、dhcpv6-client服务 开启http服务
那么如何阻止别人ping通我
对work配置:
ICMP过滤器(里面打钩,表示阻止)
对public进行配置:
echo-request(开启,能ping通)(work:单独设置的IP地址)(public:公共的ip地址)
安装apache服务:
[root@server1 ~]# yum -y install httpd
启动apache服务:systemctl start httpd
查看ssh服务是否打开
[root@server1 ~]# netstat -anpt | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1005/sshd
查看发现是可以访问服务端的Apache页面
通过ssh登录验证:
[root@server2 ~]# ssh root@20.0.0.11(可以登录)
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.
root@20.0.0.11's password:
Last login: Wed Dec 30 22:12:30 2020 from 20.0.0.1
[root@server1 ~]# exit
登出
Connection to 20.0.0.11 closed.
[root@server3 ~]# ssh root@20.0.0.11(不能登录)
ssh: connect to host 20.0.0.11 port 22: No route to host
附加:定义配置永久时重启服务器,做的配置依旧生效(之后还要进行重载防火墙的操作)
配置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服务)
[root@localhost ~]# yum -y install httpd
网关服务器添加三张网卡:
(VM1:内部区域(信任区域))(VM2: DMZ区域)(VM3:外部区域)
对三块网卡的配置文件进行设置
ens33连接的是web服务器
ens37连接的是信任区域(内部区域)
ens38连接的是DMZ区域
cd /etc/sysconfig/network-scripts/
[root@server1 ~]# cd /etc/sysconfig/network-scripts/
[root@server1 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
[root@server1 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens37
[root@server1 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
[root@server1 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens38
[root@server1 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
重启网卡,并查看网卡信息
[root@server1 network-scripts]# systemctl restart network
[root@server1 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
开启路由转发功能:[root@server1 network-scripts]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1(最后一行添加)
[root@server1 network-scripts]# sysctl -p(开启路由转发功能,使其生效)(这样就可以作为路由器去使用)
net.ipv4.ip_forward = 1
企业内网服务器:
修改网卡信息
[root@server2 ~]# 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
[root@server1 ~]# systemctl restart network
[root@server1 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.10
测试是否能ping通网关
[root@server1 ~]# 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网络服务器:
修改网卡信息
[root@server3 ~]# 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
[root@server3 ~]# systemctl restart network
[root@server3 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.216.10
[root@server3 ~]# 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要一一映射,源地址转换和目的地址转换都必须要有。
外部区域服务器:
修改网卡信息:
[root@server4 ~]# 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
[root@server4 ~]# systemctl restart network
[root@server4 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.81.20
[root@server4 ~]# 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
[root@server3 ~]# su
修改外部区域服务器主机名:
[root@server4 ~]# hostnamectl set-hostname external
[root@server4 ~]# su
修改内部局域网测试机主机名:
[root@server2 ~]# hostnamectl set-hostname inside
[root@server2 ~]# su
修改网关服务器主机名:
[root@server1 network-scripts]# hostnamectl set-hostname fw
[root@server1 network-scripts]# su
dmz服务器上开启服务:
[root@dmz ~]# systemctl start httpd.service
修改站点目录:
[root@dmz ~]# cd /var/www/html/
[root@dmz html]# vim index.html
<h1>wangtong</h1>
开启防火墙,并检查
[root@dmz html]# sudo systemctl start firewalld.service
[root@dmz 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)
[root@dmz html]# firewall-cmd --set-default-zone=dmz(zone变为dmz)
success
[root@dmz html]# firewall-cmd --add-service=http --zone=dmz --permanent (允许访问的服雾添加到dmz区域,永久性的设置)
success
(不允许对方ssh的访问)
[root@dmz html]# firewall-cmd --remove-service=ssh --zone=dmz --permanent
success
(禁用ICMP协议)
[root@dmz html]# firewall-cmd --add-icmp-block=echo-request --zone=dmz --permanent
success
(重载防火墙)
[root@dmz html]# firewall-cmd --reload
success
本地查看网页
外部服务器:
开启服务,关闭防火墙,核心防护
[root@external ~]# systemctl start httpd.service
[root@external ~]# systemctl stop firewalld.service
[root@external ~]# setenforce 0
修改网站:
[root@external ~]# vim /var/www/html/index.html
<h1>xuwenyu</h1>
本地查看网页:
用内部服务器测试,验证
此时发现两个网页都无法访问(说明防火墙上面没有做设置)
需要在网关服务器上面做设置:
默认区域设置为外部区域(非限制区域)
[root@fw network-scripts]# firewall-cmd --set-default-zone=external
success
将ens37 ens38改为信任区域和dmz区域(ens37信任区域)(ens38dmz区域)
[root@fw network-scripts]# firewall-cmd --change-interface=ens37 --zone=trusted --permanent
The interface is under control of NetworkManager, setting zone to 'trusted'.
success
[root@fw network-scripts]# firewall-cmd --change-interface=ens38 --zone=dmz --permanent
The interface is under control of NetworkManager, setting zone to 'dmz'.
success
dmz区域进行设置:(删除ssh)
[root@fw network-scripts]# firewall-cmd --zone=dmz --remove-service=ssh --permanent
success
添加http服务:
[root@fw network-scripts]# firewall-cmd --zone=dmz --add-service=http --permanent
success
添加icmp服务:
[root@fw network-scripts]# firewall-cmd --zone=dmz --add-icmp-block=echo-request --permanent
success
外部区域进行设置:(添加http服务)
[root@fw network-scripts]# firewall-cmd --zone=external --add-service=http --permanent
success
重载防火墙:
[root@fw network-scripts]# firewall-cmd --reload
succed
此时外部服务器访问不到dmz服务器,此时需要做端口转发
需要在防火墙(网关服务器)添加端口映射(端口转发)的命令
[root@fw network-scripts]# firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=192.168.81.20 --permanent
success
[root@fw network-scripts]# firewall-cmd --reload (重载)
附加:
了解firewall两种工具
一:图形化界面工具(已经介绍过)
[root@server1 ~]# firewall-config
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
如果想查看各个服务的端口号可以在上图服务中查看
二:字符界面(命令)
firewall-cmd命令
1)启动、停止、查看firewalld服务
在安装CentOS7系统时,会自动安装firewalld和图形化工具firewall.config。执行以下命令可以启动firewalld并设置为开机自启动状态。
Lroot@localhost~]# systemctl start firewalld //启动firewalld
[root@localhost~]#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命令
可以查看其运行状态。
[root@localhost]# 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.
或
[root@localhost~]# firewall-cmd --state
running
如果想要禁用firewalld,执行以下命令即可实现。
Lroot@localhost~]#systemctl stop firewalld //停止firewalld
lroot@localhost,~]#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阻
塞类型,具体的查看命令如下所示。
[root@1ocalhost~]# firewall-cmd --get-zones//显示预定义的区域
work drop internal external trusted homc dmz public block
Lroot@localhost~]# 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
[root@server1 ~]# 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
[root@localhost~]# 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)显示当前系统中的默认区域。
Lroot@locslboat~]# firewall--cmd --get-default zone
public
(2)显示默认区域的所有规则:
[root@server1 ~]# 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对应区域。
[root@localhost]# firewall-cmd --get-zone-of-interface=cns33
public
(4)将网络接口 ens33对应区域更改为internal区域。
[root@localbost]# tirewall-cmd--zone-internal --change-interface=ens33
The interface is under control of Mew9实kMansg9r, setting zone to 'internal'.
success
Lroot@localhost~]# 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)为默认区域设置允许访问的服务。
[root@1ocslbost]# firewall-cmd--list-services
//显示默认区域内允许访问的所有服务
dhcpv6-clientssh
[root@localbost~# firewal1-cmd --add-service=http
设置默认区成允许访问http服务success
Lroct@localhost~]firewall-cmd -add-service=https
//设置默认区域允许访问https服务
success
[root@localhost~l# firewall-cmd --list-services
dhcpv6-clientssh https http
2)为internal区域设置允许访问的服务。
Lroot@localbost~]# firewall-cmd --zone-internal --add-service=mysql
//设置internal区域允许访问mysql服务
success
[root@locaJhoat.~]#firewall.cmd --zone=internal -remove-service=samba-client
//设置internal区域不允许访问sarmba-client服务
success
[root@localhost~]#firewall-cmd——zone internal --list-services
显示 internal区或内允许访问的所有服务
5)端口管理
在进行服务配置时,预定义的网络服务可以使用服务名配置,服务所涉及的端口就会自
动打开。但是,对于非预定义的服务只能手动为指定的区域添加端口。例如,执行以下操作
即可实现在internal区域打开443/TCP端口。
[root@localbost~]# firewall-cmd --zome=internal --add-port=443/tcp
success
若想实现在internal区域禁止443/TCP端口访问,可执行以下命令。
[root@localhost~]#firewall-cmd --zone=internal --remove-port=443/tcp
sccess
6)两种配置模式
前面提到firewall-cmd命令工具有两种配置模式:运行时模式(Runtime mode)表示
当前内存中运行的防火墙配置,在系统或firewalld服务重启、停止时配置将失效;永久
模式(Permanent mode)表示重启防火墙或重新加载防火墙时的规则配置,是永久存储在配置
文件中的。
firewallzsnd命令工具与配置模式相关的选项有三个。
--reload:重新加载防火墙规则并保持状态信息,即将永久配置应用为运行时配置。
--permanent:带有此选项的命令用于设置永久性规则,这些规则只有在重新启动
firewalld或重新加载防火墙规则时才会生效:若不带有此选项,表示用于设置运行时
规则。
--runtime-to-pernanent:将当前的运行时配置写入规则配置文件中,使之成为永久性
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)