二章——firewalld防火墙(一)(应用——linux防护与群集)
三期总目录链接
目录
一、Linux防火墙基础
(一)firewalld概述
(二)firewalld防火墙的配置方法
1、 firewall-config图形工具
2、firewall-cmd命令
防火墙配置了很多规则如何清空规则呢?
二、firewalld防火墙配置应用
步骤
复习题
一、Linux防火墙基础
1. 防火墙是设置在不同网络与网络安全域之间的一系列部件的组合,也是信息的唯一出口
2.防火墙技术分为三类:包过滤(Packet Filtering)、应用代理(Application Proxy)、状态检测(Stateful Inspection);防火墙都是在这三种技术的基础上进行扩展的
3.Linux的防火墙主要工作在网络层,针对TCP/IP数据包实时过滤和限制,属于包过滤防火墙(或称为网络层防火墙)
4.在CentOS7系统中几种防火墙共存:firewalld、iptables、ebtables默认使用firewalld来管理netfilter子系统
(一)firewalld概述
1、firewalld简介
1)firewalld的作用:为包过滤机制提供匹配规则(或称为策略),通过不同的规则,告诉netfilter对来自指定源、前往指定目的或具有某些协议特征的数据包采取何种处理方式
2)firewalld 支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具
3)支持IPv4、IPv6 防火墙设置以及以太网桥
源地址关联到特定的区域,则执行该区域所制定的规则
源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所制定的规则
网络接口未关联到特定的区域,则使用默认区域并执行该区域所制定的规则
| 两种配置模式 | |
| 运行时模式(Runtime mode) | 表示临时设置防火墙,在系统或firewalld服务重启、停止时配置将失效 |
| 永久模式(Permanent mode) | 表示重启防火墙或重新加载防火墙时的规则配置,是永久生效 |
2、网络区域的说明
| 区域 | 作用 |
| trusted(信任区域) | 接收所有的网络连接 |
| public(公共区域) | 除非与传出流量相关,或ssh、dhepv6-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预定义服务匹配,否则拒绝流量传入。通过此区域转发的IPv4传出流量将进行地址伪装,用于路由器启用了伪装功能的外网 |
| dmz(隔离区域也称为非军事区域) | 除非与传出的流量相关,或与ssh预定义服务匹配,否则拒绝流量传入 |
| block(限制区域) | 除非与传出流量相关,否则拒绝所有传入流量 |
| drop(丢弃区域) | 除非与传出流量相关,否则丢弃所有传入流量,并且不产生包含ICMP(Intermet Control Message Protocol,互联网控制报文协议)的错误响应 |
(二)firewalld防火墙的配置方法
在CentOS 7系统中,有三种方式配置firewalld防火墙:①firewall-config图形工具 ②firewall-cmd命令行工具 ③/etc/firewalld/中的配置文件
1、 firewall-config图形工具
!!!!打开防火墙前先启动防火墙

或者在终端输入firewall-config命令同样可以打开

选项卡中服务、端口、协议、IP伪装、 ICMP过滤等可以组合使用也可以绑定接口使用
2、firewall-cmd命令
firewalld状态设置和查看
[root@C7--01 ~]# systemctl start firewalld #启动防火墙[root@C7--01 ~]# systemctl enable firewalld #设置防火墙为开机自启
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
[root@C7--01 ~]# systemctl status firewalld #查看frewalld防火墙状态
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: active (running) since 五 2021-08-20 17:48:02 CST; 1h 5min agoDocs: man:firewalld(1)Main PID: 44029 (firewalld)CGroup: /system.slice/firewalld.service└─44029 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid8月 20 17:48:02 C7--01.1 systemd[1]: Starting firewalld - dynamic firewall daemon...
8月 20 17:48:02 C7--01.1 systemd[1]: Started firewalld - dynamic firewall daemon.
8月 20 17:48:02 C7--01.1 firewalld[44029]: WARNING: ICMP type 'beyond-scope' is not supported by the ke...pv6.
8月 20 17:48:02 C7--01.1 firewalld[44029]: WARNING: beyond-scope: INVALID_ICMPTYPE: No supported ICMP t...ime.
8月 20 17:48:02 C7--01.1 firewalld[44029]: WARNING: ICMP type 'failed-policy' is not supported by the k...pv6.
8月 20 17:48:02 C7--01.1 firewalld[44029]: WARNING: failed-policy: INVALID_ICMPTYPE: No supported ICMP ...ime.
8月 20 17:48:02 C7--01.1 firewalld[44029]: WARNING: ICMP type 'reject-route' is not supported by the ke...pv6.
8月 20 17:48:02 C7--01.1 firewalld[44029]: WARNING: reject-route: INVALID_ICMPTYPE: No supported ICMP t...ime.
Hint: Some lines were ellipsized, use -l to show in full.——————————或
[root@C7--01 ~]# firewall-cmd --state
running
[root@C7--01 ~]# systemctl stop firewalld #关闭防火墙[root@C7--01 ~]# systemctl disable firewalld #设置为开机自关闭
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
firewall-cmd预定义信息主要包括三种:区域、服务、ICMP阻塞类型
[root@C7--01 ~]# firewall-cmd --get-zones #预定义区域
block dmz drop external home internal public trusted work[root@C7--01 ~]# firewall-cmd --get-service #预定义服务
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@C7--01 ~]# 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 | 应答回应(pong) |
| parameter-problem | 参数问题 |
| redirect | 重新定向 |
| router-advertisement | 路由器通告 |
| router-solicitation | 路由器征寻 |
| source-quench | 源端抑制 |
| time-exceeded | 超时 |
| timestamp-reply | 时间戳应答回应 |
| timestamp-request | 时间戳请求 |
zone=区域 interface=接口
| firewall-cmd命令的区域管理选项说明 | |
| --get-default-zone | 显示网络连接或接口的默认区域 |
| --set-default-zone= | 设置网络连接或接口的默认区域 |
| --get-active-zones | 显示已激活的所有区域 |
| --get-zone-of-interface= | 显示指定接口绑定的区域 |
| --zone=<区域名> --add-interface= | 为指定接口绑定区域 |
| --zone=<区域名> --change-interface= | 为指定的区域更改绑定的网络接口 |
| --zone=<区域名> --remove-interface= | 为指定的区域删除绑定的网络接口 |
| --list-all-zones | 显示所有区域及其规则 |
| [--zone= | 显示所有指定区域的所有规则;省略[--zone= |
例:
[root@C7--01 ~]# firewall-cmd --get-default-zone #网络连接或接口的默认区域
public[root@C7--01 ~]# firewall-cmd --list-all-zones #所有区域及其规则public (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources: services: ssh dhcpv6-clientports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: blocktarget: %%REJECT%%icmp-block-inversion: nointerfaces: sources: services: ports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: dmztarget: defaulticmp-block-inversion: nointerfaces: sources: services: sshports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: droptarget: DROPicmp-block-inversion: nointerfaces: sources: services: ports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
.......
....
| public (active) | |
| target: default | 表示 public 区域是默认区域(当接口启动时会自动默认),并且它是活动的,因为,它至少有一个接口或源分配给它 |
| icmp-block-inversion: no | ICMP协议类型黑白名单开关(yes/no) |
| interfaces: ens33 | 列出了这个区域上关联的接口 |
| sources: | 列出了这个区域的源 |
| services: ssh dhcpv6-client | 列出了允许通过这个防火墙的服务 |
| ports: | 列出了一个允许通过这个防火墙的目标端口。它是用于你需要去允许一个没有在 firewalld 中定义的服务的情况下 |
| protocols: | 允许通过的协议 |
| masquerade: no | 表示这个区域是否允许 IP 伪装。如果允许,它将允许 IP 转发,它可以让你的计算机作为一个路由器 |
| forward-ports: | 允许转发的端口 |
| source-ports: | 列出来源端口信息 |
| icmp-blocks: | 阻塞的 icmp 流量的黑名单 |
| rich rules: | 在一个区域中优先处理的高级配置 |
default 是目标区域,它决定了与该区域匹配而没有由上面设置中显式处理的包的动作
target的作用:当一个区域处理它的源或接口上的一个包时,但是,没有处理该包的显式规则时,这时区域的目标target决定了该行为:
1、ACCEPT:通过这个包
2、%%REJECT%%:拒绝这个包,并返回一个拒绝的回复
3、DROP:丢弃这个包,不回复任何信息
4、default:不做任何事情。该区域不再管它,把它踢到“楼上
| firewall-cmd命令的服务管理 | |
| [--zone= | 显示指定区域内允许访问的所有服务 |
| [--zone= | 为指定区域设置允许访问的某项服务 |
| [--zone= | 删除指定区域已设置的允许访问的某项服务 |
| [--zone= | 显示指定区域内允许访问的所有端口号 |
| [--zone= | 为指定区域设置允许访问的某个/某段端口号(包括协议名) |
| [--zone= | 删除指定区域已设置的允许访问的端口号(包括协议名) |
| [--zone= | 显示指定区域内拒绝访问的所有ICMP类型 |
| [--zone= | 为指定区域设置拒绝访问的某项ICMP类型 |
| [--zone= | 删除指定区域已设置的拒绝访问的某项ICMP类型,省略--zone= |
——显示指定区域内允许访问的所有服务
[root@C7--01 ~]# firewall-cmd --zone=public --list-services
ssh dhcpv6-client
——指定区域设置允许访问http服务
[root@C7--01 ~]# firewall-cmd --zone=public --add-service=http
success[root@C7--01 ~]# firewall-cmd --zone=public --list-services
ssh dhcpv6-client http
——设置internal区域允许访问MySQL服务
[root@C7--01 ~]# firewall-cmd --zone=internal --add-service=mysql
success
—— 设置internal区域不允许访问samba-client服务
[root@C7--01 ~]# firewall-cmd --zone=internal --remove-service=samba-client
success[root@C7--01 ~]# firewall-cmd --zone=internal --list-services #查看internal区域全部服务
ssh mdns dhcpv6-client mysql
| firewall-cmd命令工具相关选项 | |
| --reload | 重新加载防火墙,将永久配置应用为运行时配置 |
| --permanent | 设置永久性规则。服务重启或重新加载时生效 |
| --runtime-to-permanent | 将当前的运行时配置写入规则,成为永久性配置 |
危险命令:[立即生效]
如:服务器受到攻击可以使用配置完在取消,必须在本机
如:远程的机器执行会立刻断开网络连接,必须紧记不能随便执行
如:只是虚拟机或者物理机器登陆就可以执行来调试firewall-cmd --panic-on 拒绝所有包!!!!
firewall-cmd --panic-off 取消拒绝状态!
firewall-cmd --query-panic 查看是否拒绝!
防火墙配置了很多规则如何清空规则呢?
默认是没有命令清空规则的,可以通过编辑配置文件来清除规则。
/etc/firewalld/zones/:为配置生效后保存的配置文件,建议修改前先备
[root@C7--01 ~]# cd /etc/firewalld/zones
[root@C7--01 zones]# ll
总用量 8
-rw-r--r--. 1 root root 315 1月 26 2021 public.xml
-rw-r--r--. 1 root root 315 1月 26 2021 public.xml.old[root@C7--01 zones]# mkdir /tmp/firewall.bak #创建备份文件夹
[root@C7--01 zones]# cp /etc/firewalld/zones/* /tmp/firewall.bak #复制一份到备份文件夹里面
二、firewalld防火墙配置应用
了解firewall的防火墙的基本配置案例
先关闭所有机器firewall:systmectl stop firewalld

需要开启本机 vm1、vm2、vm3、网卡
在c-1机器上配置地址
[root@c-1 ~]# cd /etc/sysconfig/network-scripts/ #进入网卡配置文件夹
[root@c-1 network-scripts]# cp ifcfg-ens33 ifcfg-ens37 #复制ens33重命名为ens37
[root@c-1 network-scripts]# cp ifcfg-ens33 ifcfg-ens38 #复制ens33重命名为ens38[root@c-1 network-scripts]# vim ifcfg-ens33TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
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=fce4936b-1ad4-4641-8bd8-138a6492c47a
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.1 #配置ip地址
PREFIX=24
GATEWAY=192.168.1.254
IPV6_PRIVACY=no
[root@c-1 network-scripts]# vim ifcfg-ens37 #ens37TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
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 #修改网卡名:删除UUID以免有冲突
DEVICE=ens37 #修改网卡名
ONBOOT=yes
IPADDR=192.168.2.1 #修改ip地址
PREFIX=24
GATEWAY=192.168.2.254 #修改网关
IPV6_PRIVACY=no
~
[root@c-1 network-scripts]# vim ifcfg-ens38 #ens38TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
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 #修改网卡名:删除UUID以免有冲突
DEVICE=ens38 #修改网卡名
ONBOOT=yes
IPADDR=192.168.3.1 #修改ip地址
PREFIX=24
GATEWAY=192.168.3.254 #修改网关
IPV6_PRIVACY=no
[root@c-1 network-scripts]# systemctl restart network #重启网卡
[root@c-1 network-scripts]# ip a #查看网卡信息
1: lo: mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:6d:c2:f2 brd ff:ff:ff:ff:ff:ffinet 192.168.1.1/24 brd 192.168.1.255 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::b0bb:e9c5:dd17:b85d/64 scope link valid_lft forever preferred_lft forever
3: ens37: mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:6d:c2:fc brd ff:ff:ff:ff:ff:ffinet 192.168.2.1/24 brd 192.168.2.255 scope global ens37valid_lft forever preferred_lft foreverinet6 fe80::287e:3ecb:5281:89f4/64 scope link valid_lft forever preferred_lft forever
4: ens38: mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:6d:c2:06 brd ff:ff:ff:ff:ff:ffinet 192.168.3.1/24 brd 192.168.3.255 scope global ens38valid_lft forever preferred_lft forever
c-2网卡设置
[root@c-2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
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="82e0a41f-8234-4e32-9988-238c6442ed5c"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.3.10" #修改ip
PREFIX="24"
GATEWAY="192.168.3.1" #修改网关
IPV6_PRIVACY="no"
c-3网卡设置
[root@c-3 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
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="7db8452e-ec58-4410-be22-425f68870d9f"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.2.10" #修改ip
PREFIX="24"
GATEWAY="192.168.2.1" #修改网关
IPV6_PRIVACY="no"
c-4网卡设置
[root@c-4 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
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="d7fc8a73-0f56-48e7-b064-3dd721d8205f"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.1.10" #修改ip
PREFIX="24"
GATEWAY="192.168.1.1" #修改网关
IPV6_PRIVACY="no"
主要尝试外网测试机访问内网web服务器
步骤
c-1机器上 : 开启路由转发功能
[root@c-1 ~]# vim /etc/sysctl.conf #进入sysctl文件# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward = 1 #添加[root@c-1 ~]# sysctl -p
net.ipv4.ip_forward = 1
c-2机器上:安装httpd和mod_ssl软件
[root@c-2 ~]# yum -y install httpd mod_ssl #yum安装 http服务和https协议服务
.......
...
已安装:httpd.x86_64 0:2.4.6-67.el7.centos mod_ssl.x86_64 1:2.4.6-67.el7.centos 作为依赖被安装:httpd-tools.x86_64 0:2.4.6-67.el7.centos mailcap.noarch 0:2.1.41-2.el7 完毕![root@c-2 ~]# systemctl start httpd #启动http服务
[root@c-2 ~]# systemctl enable httpd #开机自启http服务
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.[root@c-2 ~]# cd /var/www/html
[root@c-2 html]# vim index.html #编辑测试站点首页今天天气不错保存退出
验证
1.全网ping通测试 (全网互通)
[root@c-1 ~]# ping 192.168.1.10 #ctrl + c 停止ping
PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data.
64 bytes from 192.168.1.10: icmp_seq=1 ttl=64 time=0.719 ms
[root@c-1 ~]# ping 192.168.2.10
PING 192.168.2.10 (192.168.2.10) 56(84) bytes of data.
64 bytes from 192.168.2.10: icmp_seq=1 ttl=64 time=3.51 ms
[root@c-1 ~]# ping 192.168.3.10
PING 192.168.3.10 (192.168.3.10) 56(84) bytes of data.
64 bytes from 192.168.3.10: icmp_seq=1 ttl=64 time=1.12 ms[root@c-4 ~]# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.500 ms
[root@c-4 ~]# ping 192.168.2.10
PING 192.168.2.10 (192.168.2.10) 56(84) bytes of data.
64 bytes from 192.168.2.10: icmp_seq=1 ttl=63 time=1.12 ms
[root@c-4 ~]# ping 192.168.3.10
PING 192.168.3.10 (192.168.3.10) 56(84) bytes of data.
64 bytes from 192.168.3.10: icmp_seq=1 ttl=63 time=2.53 ms
2.在c-3和c-4分别访问网站进行验证(都能访问网站)
[root@c-3 ~]# curl http://192.168.3.10
今天天气不错[root@c-4 ~]# curl http://192.168.3.10
今天天气不错
3. 在c-3和c-4分别使用ssh进行访问验证
[root@c-4 ~]# ssh root@192.168.3.10
The authenticity of host '192.168.3.10 (192.168.3.10)' can't be established.
ECDSA key fingerprint is SHA256:GZY7t7+rmT5sHjMJahYET0g/OvRSBdjaVwzp6k1t1Fs.
ECDSA key fingerprint is MD5:06:8d:74:30:71:c8:cc:8b:e3:3f:e5:c3:62:4d:7c:2c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.3.10' (ECDSA) to the list of known hosts.
root@192.168.3.10's password: #输入c-2的root密码
Last login: Sun Aug 22 19:52:23 2021 from 192.168.3.254
[root@c-2 ~]# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:ef:44:d1 brd ff:ff:ff:ff:ff:ffinet 192.168.3.10/24 brd 192.168.3.255 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::8078:75ae:9de3:989d/64 scope link valid_lft forever preferred_lft forever
[root@c-3 ~]# ssh root@192.168.3.10
The authenticity of host '192.168.3.10 (192.168.3.10)' can't be established.
ECDSA key fingerprint is SHA256:GZY7t7+rmT5sHjMJahYET0g/OvRSBdjaVwzp6k1t1Fs.
ECDSA key fingerprint is MD5:06:8d:74:30:71:c8:cc:8b:e3:3f:e5:c3:62:4d:7c:2c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.3.10' (ECDSA) to the list of known hosts.
root@192.168.3.10's password:
Last login: Sun Aug 22 20:15:52 2021 from 192.168.1.10
[root@c-2 ~]#
结论: 都能进行SSH 远程连接 (没有开启任何防火墙的配置下)
在c-2网站服务器上继续配置
注意selinux要关闭
[root@c-2 ~]# vim /etc/ssh/sshd_config.....
..
#Port 22 #在17行
port 12345 #添加ssh的侦听地址保存[root@c-2 ~]# systemctl restart sshd #重启sshd服务
验证:可以正常使用12345 端口进行连接 (没有开防火墙)
[root@c-3 ~]# ssh root@192.168.3.10
ssh: connect to host 192.168.3.10 port 22: Connection refused
[root@c-3 ~]# ssh -p 12345 root@192.168.3.10
root@192.168.3.10's password:
Last login: Sun Aug 22 20:19:49 2021 from 192.168.2.10
在c-2机器上继续配置防火墙
[root@c-2 ~]# systemctl start firewalld #启动防火墙
[root@c-2 ~]# systemctl enable firewalld #开机自启
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
[root@c-2 ~]# firewall-cmd --state #查看防火墙状态
running
配置防火墙
[root@c-2 ~]# firewall-cmd --set-default-zone=dmz #设置默认区域为dmz区域
success
[root@c-2 ~]# firewall-cmd --zone=dmz --add-service=https --permanent #dmz区域打开https服务
success
[root@c-2 ~]# firewall-cmd --zone=dmz --add-service=http --permanent #dmz区域打开http服务
success
dmz区域添加ssh服务的22、12345端口
[root@c-2 ~]# firewall-cmd --zone=dmz --add-port=22/tcp --permanent
success
[root@c-2 ~]# firewall-cmd --zone=dmz --add-port=12345/tcp --permanent
success
禁止ping测试,c-2主机可以ping其他主机,反之不允许
[root@c-2 ~]# firewall-cmd --add-icmp-block=echo-request --zone=dmz --permanent
success[root@c-2 ~]# firewall-cmd --reload #重新加载防火墙生效
success
[root@c-2 ~]# firewall-cmd --zone=dmz --list-all #查看dmz区域配置
dmz (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources: services: ssh https httpports: 22/tcp 12345/tcpprotocols: masquerade: noforward-ports: source-ports: icmp-blocks: echo-requestrich rules:
验证
在c-3和c-4分别访问网站进行验证
[root@c-3 ~]# curl http://192.168.3.10
今天天气不错[root@c-4 ~]# curl http://192.168.3.10
今天天气不错
c-2主机ping 可以ping通
[root@c-2 ~]# ping 192.168.1.10
PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data.
64 bytes from 192.168.1.10: icmp_seq=1 ttl=63 time=1.58 ms
[root@c-2 ~]# ping 192.168.3.10
PING 192.168.3.10 (192.168.3.10) 56(84) bytes of data.
64 bytes from 192.168.3.10: icmp_seq=1 ttl=64 time=0.023 ms
[root@c-2 ~]# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.32 ms
其他主机ping不通c-2主机
[root@c-4 ~]# ping 192.168.3.10
PING 192.168.3.10 (192.168.3.10) 56(84) bytes of data.
From 192.168.3.10 icmp_seq=1 Destination Host Prohibited[root@c-3 ~]# ping 192.168.3.10
PING 192.168.3.10 (192.168.3.10) 56(84) bytes of data.
From 192.168.3.10 icmp_seq=1 Destination Host Prohibited[root@c-1 ~]# ping 192.168.3.10
PING 192.168.3.10 (192.168.3.10) 56(84) bytes of data.
From 192.168.3.10 icmp_seq=1 Destination Host Prohibited
在c-3和c-4分别使用ssh进行访问验证 (可以远程SSH 访问)
[root@c-3 ~]# ssh -p 12345 root@192.168.3.10
root@192.168.3.10's password:
Last login: Sun Aug 22 21:02:59 2021 from 192.168.3.10[root@c-4 ~]# ssh -p 12345 root@192.168.3.10
root@192.168.3.10's password:
Last login: Sun Aug 22 21:04:05 2021 from 192.168.1.10
[root@c-2 ~]#
c-2网站服务器上的防火墙全部配置完毕
c-1网关服务器
[root@C7--01 ~]# systemctl start firewalld #启动防火墙
[root@C7--01 ~]# systemctl enable firewalld #开机自启
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
把网卡配置到不同区域
[root@C7--01 ~]# firewall-cmd --change-interface=ens33 --zone=external
The interface is under control of NetworkManager, setting zone to 'external'.
success
[root@C7--01 ~]# firewall-cmd --change-interface=ens37 --zone=trusted
The interface is under control of NetworkManager, setting zone to 'trusted'.
success
[root@C7--01 ~]# firewall-cmd --change-interface=ens38 --zone=dmz
The interface is under control of NetworkManager, setting zone to 'dmz'.
success[root@C7--01 ~]# firewall-cmd --get-active-zones #查询活跃区域
dmzinterfaces: ens38
externalinterfaces: ens33
trustedinterfaces: ens37
[root@C7--01 ~]# vim /etc/ssh/sshd_config
.......
....
Port 22 #删除前面的#号
port 54321 #添加端口号54321保存退出[root@C7--01 ~]# systemctl restart sshd #重启服务
验证
c-3内网机器
[root@c-3 ~]# curl http://192.168.3.10
今天天气不错[root@c-3 ~]# ssh -p 12345 root@192.168.3.10
root@192.168.3.10's password:
Last login: Sun Aug 22 22:38:39 2021 from 192.168.3.254[root@c-3 ~]# ssh -p 54321 root@192.168.1.1
The authenticity of host '[192.168.1.1]:54321 ([192.168.1.1]:54321)' can't be established.
ECDSA key fingerprint is SHA256:sxZ2ZtVioQyyS9nSTwcP0RhK44zLQSEGFSi4ILDYNzk.
ECDSA key fingerprint is MD5:a7:af:94:71:6e:5f:60:d6:ee:c1:59:67:8e:76:d6:bf.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.1.1]:54321' (ECDSA) to the list of known hosts.
root@192.168.1.1's password:
Last login: Sun Aug 22 22:34:24 2021 from 192.168.1.254
[root@C7--01 ~]#
可以正常访问
c-4外网机器
[root@c-4 ~]# curl http://192.168.3.10
curl: (7) Failed connect to 192.168.3.10:80; 没有到主机的路由[root@c-4 ~]# ssh -p 12345 root@192.168.3.10
ssh: connect to host 192.168.3.10 port 12345: No route to host[root@c-4 ~]# ssh -p 54321 root@192.168.1.1
ssh: connect to host 192.168.1.1 port 54321: No route to host[root@c-4 ~]# ssh root@192.168.1.1 #默认允许ssh服务可以访问
root@192.168.1.1's password:
Last login: Sun Aug 22 22:59:53 2021 from 192.168.1.10
[root@C7--01 ~]#
除ssh默认可以访问其他都不可以访问
在网关服务器c-1机器上继续添加规则
允许external区域访问54321端口
[root@C7--01 ~]# firewall-cmd --zone=external --add-port=54321/tcp --permanent
success
允许从external区域进入的tcp 80请求转发到192.168.3.10 (注意:如果不添加443 端口的请求转发,则客户机无法使用https 访问)
[root@C7--01 ~]# firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=192.168.3.10 --permanent
success
允许从external区域进入的tcp12345请求转发到192.168.3.10
[root@C7--01 ~]# firewall-cmd --zone=external --add-forward-port=port=12345:proto=tcp:toaddr=192.168.3.10 --permanent
success
允许dmz区域访问54321端口
[root@C7--01 ~]# firewall-cmd --zone=dmz --add-port=54321/tcp --permanent
success
重新加载防火墙
[root@C7--01 ~]# firewall-cmd --reload
success
验证 c-4机器
[root@c-4 ~]# curl http://192.168.3.10
今天天气不错[root@c-4 ~]# ssh -p 54321 root@192.168.1.1
root@192.168.1.1's password:
Last login: Sun Aug 22 23:01:29 2021 from 192.168.1.1
[root@C7--01 ~]# [root@c-4 ~]# ssh -p 12345 root@192.168.3.10
root@192.168.3.10's password:
Last login: Sun Aug 22 22:50:24 2021 from 192.168.2.10
[root@c-2 ~]#
访问成功
复习题
1. 防火墙技术分为哪三类?其中firewalld属于哪一类?
防火墙技术分为:包过滤(Packet Filtering)、应用代理(Application Proxy)、状态检测(Stateful Inspection)
firewalld属于:包过滤
2. 写出主机接收到数据请求后,firewalld判断源地址属于哪个zone的三种方法
1)源地址关联到特定的区域,则执行该区域所制定的规则
2)源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所制定的规则
3)网络接口未关联到特定的区域,则使用默认区域并执行该区域所制定的规则
3. 写出firewalld所包含的work区域、dmz区域、drop区域的作用
work:除非与传出流量相关,或与ssh、ipp-client、dhcpv6-client预定义服务匹配,否则拒绝流量 传入,用于工作区。相信网内的其他计算机不会危害计算机,仅接收经过选择的连接
dmz:除非与传出的流量相关,或与ssh预定义服务匹配,否则拒绝流量传入
drop:除非与传出流量相关,否则丢弃所有传入流量,并且不产生包含ICMP(Intermet Control Message Protocol,互联网控制报文协议)的错误响应
4. 在CentOS 7可以使用哪几种方式配置firewalld防火墙?
有三种配置firewalld防火墙:①firewall-config图形工具②firewall-cmd命令行工具③/etc/firewalld/中的配置文件
5. 通过firewall-config图形化工具配置”服务”选项卡时,必须在哪个配置模式下?
需要在"运行时"才能配置"服务"选项卡
6. 在CentOS 7中执行什么命令可以显示所有区域及其规则?
firewall-cmd --list-all-zones
7. 执行firewall-cmd --zone=internal --add-port=443/tcp命令的作用是什么?
在internal区域打开443/TCP服务
8. 执行firewall-cmd --runtime-to-permanent命令的作用是什么?
将当前的运行时配置保存到规则配置文件中,设置成永久性配置
9. 执行firewall-cmd --zone=external --remove-service=ssh命令的作用是什么?
在external区域中删除SSH服务
10. 在CentOS 7中配置外部区域禁止ping的命令是什么?
firewall-cmd --zone=external --add-icmp-block=echo-request
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
