目录
一 Firewalld概述
1.1Firewalld
●支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具
●支持IPv4,IPv6防火墙设置以及以太网桥
●支持服务或应用程序直接添加防火墙规则接口
●拥有两种配置模式:运行时配置;永久配置
二 Firewalld和iptables的关系
2.1 netfilter
●位于Linux内核中的包过滤功能体系
●称为Linux防火墙的“内核态”
2.2 Firewalld/iptables
●CentOS7默认的管理防火墙规则的工具(Firewalld)
●称为Linux防火墙的“用户态”
2.3 Firewalld和iptables的区别
三 Firewalld网络区域
3.1 区域介绍
●区域如同进入主机的安全门,每个区域都具有不同限制程度的规则
●可以使用一个或多个区域,但是任何一个活跃区域至少需要关联源地址或接口
●默认情况下,public区域是默认区域,包含所有接口(网卡)
3.2 Firewalld数据处理流程
检查数据来源的源地址
◆若源地址关联到特定的区域,则执行该区域所指定的规则
◆若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所指定的规则
◆若网络接口未关联到特定的区域,则使用默认区域并执行该区域所指定的规则
四 Firewalld防火墙的配置方法
4.1 运行时配置
●实时生效,并持续至Firewalld重新启动或重新加载配置
●不中断现有连接
●不能修改服务配置
4.2 永久配置
●不立即生效,除非Firewalld重新启动或重新加载配置
●中断现有连接
●可以修改服务配置
4.3 Firewall-config图形工具
4.4 Firewall-cmd命令行工具
●firewalld-cmd命令
♦支持全部防火墙特性
♦对于状态和查询模式,命令只返回状态,没有其他输出
♦–permanent(永久的)参数:携带该参数表示永久配置,否则表示运行时配置
♦[–zone=]选项:不懈怠此选项表示针对默认区域操作,否则针对指定区域操作
4.5 /etc/firewalld/中的配置文件
●Firewalld会优先使用/etc/firewalld/中的配置,如果不存在配置文件,则使用/usr/lib/firewalld/中的配置
♦/etc/firewalld/:用户自定义配置文件,需要时可通过从/usr/lib/firewalld/中拷贝
♦/usr/lib/firewalld/:默认配置文件,不建议修改,若恢复默认配置,可直接删除/etc/firewalld/中的配置
五 Firewalld防火墙案例
5.1 实验环境
5.2 需求描述
●禁止主机ping服务器
●只允许20.0.0.21主机访问SSH服务
●允许所有主机访问Apache服务
5.3 实验步骤
20.0.0.27 :
[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 20.0.0.27 netmask 255.255.255.0 broadcast 20.0.0.255
inet6 fe80::1feb:60f0:f9e2:753d prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:12:33:6a txqueuelen 1000 (Ethernet)
RX packets 10415 bytes 14166863 (13.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2706 bytes 191480 (186.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]# yum -y install httpd > 安装并启用httpd服务
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl start firewalld > 开启并开机自启防火墙
[root@localhost ~]# systemctl enable firewalld
[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 三 2020-08-05 00:32:26 CST; 47min ago
......
20.0.0.21:
[root@localhost ~]# ping 20.0.0.27 > 验证无法ping通主机
PING 20.0.0.27 (20.0.0.27) 56(84) bytes of data.
From 20.0.0.27 icmp_seq=1 Destination Host Prohibited
From 20.0.0.27 icmp_seq=2 Destination Host Prohibited
[root@localhost ~]# ssh 20.0.0.27 > 验证20.0.0.21访问ssh服务
The authenticity of host '20.0.0.27 (20.0.0.27)' can't be established.
ECDSA key fingerprint is SHA256:qvn8ylJKy4iAJRzMNTKyuXsWSjJbTJOQUIw7AtjtlEc.
ECDSA key fingerprint is MD5:66:02:43:0f:c0:69:56:01:5b:91:4f:70:7a:45:fa:83.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
Warning: Permanently added '20.0.0.27' (ECDSA) to the list of known hosts.
root@20.0.0.27's password:
Last login: Wed Aug 5 01:13:43 2020 from 20.0.0.1
[root@localhost ~]# who
root :0 2020-08-05 00:35 (:0)
root pts/0 2020-08-05 00:36 (:0)
root pts/1 2020-08-05 01:13 (20.0.0.1)
root pts/2 2020-08-05 02:29 (20.0.0.21)
验证所有主机能访问Apache服务