一.firewalld高级配置
1.关于iptables的知识
IP 数据包过滤系统是一个功能强大的工具,可用于添加、编辑和删除防火墙在做出数据包过滤决策时遵循和配置的规则。这些规则存储在集成到Linux 内核中的专用数据包过滤表中。在数据包过滤器表中,规则被分组为所谓的链。
netfilter/iptables 虽然IP 数据包过滤系统被称为单个实体,但它实际上由两个组件组成:netfilter 和iptables。
(1).netfilter组件是内核的一部分,由几个包过滤表组成,其中包含内核用来控制包过滤操作的一组规则。
(2). iptables 组件,也称为用户空间,是一个允许您轻松地从包过滤表中插入、修改和删除规则的工具。
iptables包含4个表和5个链。表根据数据包的行为来区分,链根据不同的钩子点来区分。表和链实际上是网络过滤器的两个维度。
2.firewalld中理解直接规则
以这种方式编写的规则称为直接规则。
将IP 范围列入黑名单
在这个例子中,首先定制了一条名为blacklist的链,然后将来自192.168.10.0/24的所有数据包都指向该链,最后定义了该链的规则。先记录,后丢弃,使用记录方式“blacklisted:”。前缀将录音限制为每分钟一次。
(1) 创建黑名单,并创建该黑名单的链。链名已列入黑名单。
[root@localhost ~]#firewall-cmd –direct –permanent –add-chain ipv4 原始黑名单
(2)将192.168.10.0/24的数据包直接发送到该链
[root@localhost ~]#firewall-cmd –direct –permanent –add-rule ipv4 raw PREROUTING 0 -s 192.168.10.0/24 -j 黑名单
(3)每分钟记录一次(-m limit –limit 1/min 每分钟记录一次日志)
[root@localhost ~]#firewall-cmd –direct –permanent –add-rule ipv4 raw blacklist 0 -m limit –limit 1/min -j LOG –log-prefix \’blacklisted\’
(4) 设置这条链的规则为DROP
[root@localhost ~]#firewall-cmd –direct –permanent –add-rule ipv4 原始黑名单1 -j DROP
(5)重启firewalld(重启或重载后生效)
[root@localhost ~]# systemctl 重新启动firewalld
(6)直接显示规则
[root@localhost ~]# cat /etc/firewalld/direct.xml
?xml 版本=\’1.0\’ 编码=\’utf-8\’?
直接地
链表=\’原始\’ ipv=\’ipv4\’ 链=\’黑名单\’/
规则优先级=\’0\’表=\’原始\’ipv=\’ipv4\’链=\’PREROUTING\’-s 192.168.10.0/24 -j黑名单/规则
规则优先级=\’1\’表=\’原始\’ipv=\’ipv4\’链=\’黑名单\’-j DROP/规则
/直接的
笔记:
Ipv4:这个属性很简单,代表IP版本。
table:链和规则节点的表属性是iptables/ip6tables中的表。
chain:chain 的chain 属性用于指定自定义链的名称。规则的链属性不能与现有链同名(即iptables 中的5 个链)。 /ip6tables) 直接定制链。
优先级:优先级。用于设置各种规则的优先级,类似于iptables中的规则顺序。数字越低,优先级越高。
args:rule 和passthrough args 是iptables/ip6tables 特定规则,但您可以使用自定义链。
注意:如果您ping 另一台主机并查看消息日志文件,您将看到相关的日志条目。
状态:
明确的直接规则
/etc/firewalld/direct.xml
3.使用富语言
1:什么是丰富语言?
虽然不必使用iptables 语法,但使用高级语言配置防火墙规则的机制是一种丰富的语言。
排序规则
测试与调试
3:了解丰富的规则命令
4:规则设置示例
(1)使用新的IPv4和IPv6连接进行认证头协议AH
[root@localhost ~]#firewall-cmd –add-rich-rule=\’规则协议值=ah接受\’
(2) 允许新的IPv4 和IPv6 连接到http,并使用审核每分钟记录一次
[root@localhost ~]#firewall-cmd –add-rich-rule=\’规则服务名称=http日志前缀=http访问限制=1/m审核受理\’
消息:
启用日志记录后
[root@localhost ~]# cat /var/log/messages
1 月14 日11:27:29 192 kernel: \’httpaccess\’IN=ens33 OUT=MAC=00:0c:29:85:a0:bd:00:0c:29:5e:d333 36 0 72:08:00 SRC=192.168.10.102 DST=192.168.10.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=60222 DF PROTO=TCP SPT=53168 DPT=80 窗口=29200 RES=0x00 SYN URGP=0
(3) 允许来自192.168.0.0/24 地址处的TFTP 协议的IPv4 连接,并使用系统日志记录每分钟记录一次。
[root@localhost ~]#firewall-cmd –add-rich=\’rule family=\’ipv4\’ 源地址=\’192.168.0.0/24\’ 服务名称=\’tftp\’ 日志前缀=\’tftp\’ Level=\’info \’极限值=\’1/m\’接受\’
(4) 对于RADIUS 协议,拒绝来自1:2:3:4:6: 的所有新IPv6 连接。日志以“dns”为前缀,级别为info,每分钟最多记录3次。接受来自其他源段的新IPv6 连接
[root@localhost ~]#firewall-cmd –add-rich-rule=\’rule family=\’ipv6\’ 源地址=\’1:2:3:6:\’ 服务名称=\’raduis\’ 日志前缀=\’dns\’ Level=\’info\’ 限制值=\’3/分钟\’ 拒绝\’
(5)将源地址192.168.2.2添加到白名单中,允许来自该源地址的所有连接
[root@localhost ~]#firewall-cmd –add-rich-rule=\’规则族=\’ipv4\’源地址=\’192.168.2.2\’接受\’
(6) 拒绝(删除)来自IP 地址为192.168.0.11 的公共区域的所有流量
[root@localhost ~]#firewall-cmd –zone=public –add-rich-rule=\’规则族=ipv4源地址=192.168.10.202/32拒绝\’
[root@localhost ~]#firewall-cmd –zone=public –remove-rich-rule=\’规则族=ipv4源地址=192.168.10.202/32拒绝\’
(7) 丢弃从默认区域内任何位置接收到的所有ipsec esp 协议数据包。
[root@localhost ~]#firewall-cmd –add-rich-rule=\’规则协议值=\’esp\’drop\’
(8)接收192.168.1.0/24子网DMZ区域内端口7900-1905的所有TCP数据包。
[root@localhost ~]#firewall-cmd –zone=dmz –add-rich-rule=\’规则族=ipv4源地址=192.168.1.0/24端口端口=7900-1905协议=tcp接受\’
(9) 接受从工作区到ssh 的新连接,并在通知级别将最多3 条消息记录到系统日志中。
[root@localhost ~]#firewall-cmd –zone=work –add-rich-rule=\’规则服务名称=ssh日志前缀=\’ssh\’ Level=\’通知\’ Limit=\’3/m\’接受\’
(10) 在接下来的5 分钟内,从默认区域子网192.168.2.0/24 到DNS 的新连接将被拒绝,被拒绝的连接将以每小时最多一条消息记录在审核系统中。
[root@localhost ~]#firewall-cmd –add-rich-rule=\’规则族=ipv4 源地址=192.168.2.0/24 服务名称=DNS审核限制=\’1/h\’拒绝\’ –timeout=300
二.配置firewalld防火墙的地址伪装和端口转发
实验室环境
实验说明
实验要求
ens33 分配给外部区域,ens37 分配给信任区域,ens38 分配给DMZ 区域。
网站服务器和网关服务器将通过SSH远程管理,端口号改为12345。
服务器开启https 并
Web 服务器拒绝ping,网关服务器拒绝来自Internet 的ping。
企业内网用户需要通过网关服务器共享互联网
互联网用户需要访问DMZ区域的Web服务
实验流程
1.基本配置
1:基本环境配置
根据实验TOP设置各服务器网卡的IP地址。
(1)设置网关服务器的主机名
[root@localhost ~]# 主机名网关服务器
[root@localhost ~]# vi /etc/主机名
网关服务器
(2)启用网关服务器的路由转发功能
[root@localhost ~]# vi /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@localhost ~]# sysctl -p
(3) 设置Web服务器主机名
[root@localhost ~]# vi /etc/主机名
网络
2:搭建网站服务器环境
(1) 检查网站服务器上firewalld是否启动并正常运行。
[root@web ~]# systemctl status firewalld
(2)安装httpd和mod_ssl包
[root@web ~]# yum install -y httpd mod_ssl
(3) 启用并启动httpd服务。
[root@web ~]# systemctl 启动httpd
[root@web ~]# 启用systemctl httpd
(4) 创建网站首页测试页面index.html。
[root@web ~]# vi /var/www/html/index.html
测试网
(5)更改ssh监听端口,重启服务,关闭SELinux
[root@web ~]# setenforce 0
[root@web ~]# vi /etc/ssh/sshd_config
端口12345
[root@web ~]# systemctl restart sshd
3:在您的网站服务器上配置firewalld防火墙
(1) 设置默认区域为DMZ区域
[root@web ~]#firewall-cmd –set-default-zone=dmz
(2)在DMZ区域开启https服务,添加TCP 12345端口
[root@web ~]#firewall-cmd –zone=dmz –add-service=https –permanent
[root@web ~]#firewall-cmd –zone=dmz –add-port=12345/tcp –permanent
(3)禁止ping
[root@web ~]#firewall-cmd –add-icmp-block=echo-request –zone=dmz –permanent
(4)端口被定时ssh服务改变,所以需要删除定时ssh服务。
[root@web ~]#firewall-cmd –zone=dmz –remove-service=ssh –permanent
(5) 重新加载firewalld配置。显示之前的设置
[root@web ~]#firewall-cmd –reload
[root@web ~]#firewall-cmd –list-all
DMZ(主动)
默认目标:
icmp-block-inversion: 否
接口: ens33
来源:
服务: https
端口: 12345/tcp
协议:
假面舞会: 否
转发端口:
源端口:
icmp-blocks: 回显请求
丰富规则:
4:在网关服务器上配置firewalld防火墙
(1) 验证firewalld 是否已启动并在网关服务器上运行。
[root@gatewayserver ~]# systemctl status firewalld
(2) 设置默认区域为外部区域并查看设置结果
[root@gatewayserver ~]#firewall-cmd –set-default-zone=external
[root@gatewayserver ~]#firewall-cmd –list-all
外部(主动)
默认目标:
icmp-block-inversion: 否
接口: ens33 ens37 ens38
来源:
服务: ssh
端口:
协议:
假面舞会: 是的
转发端口:
源端口:
icmp-块:
丰富规则:
(3) 将ens37网卡设置为信任区域,将ens38设置为DMZ区域。
[root@gateway-server ~]#firewall-cmd –change-interface=ens37 –zone=trusted –permanent
[root@gateway-server ~]#firewall-cmd –change-interface=ens38 –zone=dmz –permanent
(4) 检查配置
[root@gatewayserver ~]#firewall-cmd –get-active-zone
非军事区
接口: ens38
外部的
接口: ens33
可靠的
接口: ens37
(5)在公司内网的测试电脑上访问网站服务器。
https:192.168.2.10
(6)终止SELinux,更改ssh监听端口,重启服务。
[root@gatewayserver ~]# setenforce 0
[root@gatewayserver ~]# vi /etc/ssh/sshd_config
端口12345
[root@gatewayserver ~]# systemctl restart sshd
(7) 配置外部区域添加TCP端口12345。
[root@gateway server ~]#firewall-cmd –zone=external –add-port=12345/tcp –permanent
(8)设置外部区域删除ssh服务
[root@gateway-server ~]#firewall-cmd –zone=external –remove-service=ssh –permanent
(9)外部区域Ping禁止设置
[root@gateway-server ~]#firewall-cmd –zone=external –add-icmp-block=echo-request –permanent
(10) 重新加载防火墙设置
[root@gatewayserver ~]#firewall-cmd –reload
(11)在你的上网测试机上通过ssh登录网关,在没有接口地址的情况下打12345端口。
[root@localhost ~]# ssh -p 12345 100.1.1.10
(12)在公司内网的测试机上通过ssh登录Web服务器的12345端口。
[root@localhost ~]# ssh -p 12345 192.168.2.10
2.配置IP伪装与端口转发
1:内网用户通过网关服务器共享Internet
(1)利用外网测试机搭建网站服务并添加测试网页
[root@localhost ~]# 主机名internet
[root@localhost ~]# bash
[root@internet ~]# yum install -y httpd
[root@internet ~]# vi /var/www/html/index.html
互联网网络
[root@internet ~]# 启用systemctl httpd
[root@internet ~]# systemctl 启动httpd
[root@192 ~]#firewall-cmd –add-service=http –permanent
[root@192 ~]# 防火墙-cmd –reload
(2)在公司内网使用测试机访问外部网站结果是可以访问的。
http://100.1.1.20
(3) 在DMZ网站服务器上测试并可访问
http://100.1.1.20
(4)检查网关服务器外部区域是否启用地址欺骗
[root@internet ~]#firewall-cmd –list-all –zone=external
外部的
默认目标:
icmp-block-inversion: 否
接口:
来源:
服务: ssh
端口:
协议:
假面舞会: 是的
转发端口:
源端口:
icmp-块:
丰富规则:
(5) 源地址为192.168.1.0/24的网段启用IP伪装。
在网关服务器上关闭外部地址伪装,并添加丰富的规则,要求外部区域的源地址为192.168.1.0/24网段地址,才能启用地址IP伪装。
[root@gateway-server ~]#firewall-cmd –remove-masquerade –zone=external –permanent
[root@gateway-server ~]#firewall-cmd –zone=external –add-rich-rule=\’规则族=ipv4源地址=192.168.1.0/24 masquerade\’ –permanent
[root@192 ~]# 防火墙-cmd –reload
(6)在DMZ网站服务器上测试访问外网。外网应该不能访问,但是内网可以访问。
http://100.1.1.20
2:配置端口转发以允许互联网用户访问您的内部Web服务器。
(1)在网关服务器上设置端口转发
[root@gateway-server ~]#firewall-cmd –zone=external –add-forward-port=port=443:proto=tcp:toaddr=192.168.2.10 –permanent
(2) 当我在我的互联网测试机上访问内部Web服务器时,它工作正常。
https://100.1.1.10
3) 端口转发还允许更丰富的规则,使您可以更好地控制端口转发规则。例如,如果您为内网Web服务器申请新的公网IP地址100.1.1.15,则新的公网IP地址100.1.1.15将被配置为网关服务器的外网接口ens33上的第二个IP地址。
[root@gatewayserver ~]# vi /etc/sys
config/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR1=100.1.1.15
PREFIX1=24
IPADDR0=100.1.1.10
PREFIX=24
[root@gateway-server ~]# systemctl restart network
[root@gateway-server ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:ae:7f:64 brd ff:ff:ff:ff:ff:ff
inet 100.1.1.10/8 brd 100.255.255.255 scope global ens33
valid_lft forever preferred_lft forever
inet 100.1.1.15/24 brd 100.1.1.255 scope global ens33
valid_lft forever preferred_lft forever
使用富规则配置端口转发
[root@gateway-server ~]# firewall-cmd –zone=external –add-rich-rule=\’rule family=ipv4 destination address=100.1.1.15/32 forward-port port=443 protocol=tcp to-addr=192.168.2.10\’
在互联网测试机上访问,可以访问成功
https://100.1.1.15
#以上关于Firewalld防火墙(二)的相关内容来源网络仅供参考,相关信息请以官方公告为准!
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92801.html