目录
直接法
例子
(1) 创建黑名单功能链
(2)将192.168.10.0/24的数据包直接发送到该链
(3)每分钟记录一次
(4) 将链式法则设置为DROP
(5)重新加载防火墙
明确的直接规则
丰富的语言
例子
(1)允许http连接并使用审计每分钟记录一次
(2) 测试
(3) 将192.168.10.202 地址添加到白名单中,以允许来自该主机的IPv4 连接。
其他丰富的语言示例
地址伪装
例子
(1)外部区域地址欺骗设置
关闭地址伪装和重新加载
仅对外部区域192.168.1.0/24网段内的数据包设置地址欺骗效果。
(2)端口转发
(3) 在网关服务器的外网接口上配置第二个IP地址,以便外网主机可以通过两个IP访问Web服务。
(4)使用丰富的规则配置端口转发
(5)最后测试一下外网的机器,使用curl命令测试两个IP是否可以访问web服务。
直接规则
将iptables 规则插入到firewalld防火墙策略中
示例
将IP 范围列入黑名单
防止DDOS攻击
(1)创建一个黑名单功能链
首先,使用firewall-cmd –direct –add-chain ipv4 raw blacklist 命令将名为blacklist 的新ipv4 原始防火墙链添加到规则中。
–direct:该选项告诉firewall-cmd命令直接对防火墙的底层规则进行操作,而不需要通过firewalld的标准配置界面。 –add-chain ipv4 raw blacklist:将名为blacklist 的新防火墙链添加到IPv4 协议原始表中。
原始表是Linux 防火墙的一部分,通常为某些高级网络配置或数据包过滤启用低级处理。
该命令还可以扩展其他功能
firewall-cmd –direct –remove-chain ipv4 raw blacklist:删除名为blacklist 的ipv4 原始防火墙链。
firewall-cmd –direct –add-chain ipv4 raw blacklist –permanent:将名为blacklist 的新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 黑名单
PREROUTING: 原始表中的PREROUTING 链。用于处理进入主机的数据包。
0: 规则编号。这里的0代表第一条规则,优先级最高,规则从0开始。
-s 192.168.10.0/24: 匹配源自该网段的源IP地址为192.168.10.0/24的数据包。
-j blacklist: 如果数据包满足上述条件,则跳转到名为blacklist的防火墙链进行进一步处理。
(3)每分钟记录一次日志
记录符合特定条件的流量
[root@localhost ~]#firewall-cmd –direct –permanent –add-rule ipv4 raw blacklist 0 -m limit –limit 1/min -j LOG –log-prefix \’blacklist\’
blacklist 0:将规则添加到黑名单链中。 0 是规则编号。
-m limit –limit 1/min:使用limit 模块将每分钟记录的日志消息数量限制为1。
-j LOG –log-prefix \’blacklist\’:指定使用前缀\’blacklist\’ 记录匹配的数据包。
(4)设置该链的规则为DROP
将规则1 添加到链中,该操作会删除匹配的数据包。
[root@localhost ~]#firewall-cmd –direct –permanent –add-rule ipv4 原始黑名单1 -j DROP
(5)重载firewalld
[root@localhost ~]# 防火墙-cmd –reload
目前,其他虚拟机无法ping 通已配置规则的主机。
如果您使用另一台机器ping,其IP 在规则中指定的范围内,因此您将在/var/log/message 日志文件中看到相关日志,并且您配置的前缀将被列入黑名单。
清空直接规则
cd 到/etc/firewalld 目录,删除direct.xml 文件,然后重新加载防火墙。
富语言
firewalld 丰富的语言提供了一种无需了解iptables 语法即可使用高级语言配置复杂IPv4 和IPv6 防火墙规则的机制,使您能够表达基本语法未涵盖的自定义防火墙规则为管理员提供表达性语言。
示例
要求:允许主机建立连接并每分钟检查一次
yum -y install httpd 安装Apache 软件包
(1)允许连接http,并使用审核每分钟记录一次
[root@localhost ~]#firewall-cmd –add-rich-rule=\’规则服务名称=http日志前缀=http访问限制=1/m审核受理\’
–add-rich-rule:用于添加丰富规则。
(2)测试
使用echo \’Test Web\’ /var/www/html/index.html 命令更改http 服务的主页。
在另一台主机上进行curl测试
201 主机猫/var/log/message
(3)将192.168.10.202地址加入白名单,允许该主机的ipv4连接
[root@localhostfirewalld]#firewall-cmd –add-rich-rule=\’规则族=\’ipv4\’源地址=\’192.168.10.202\’接受\’
–add-rich-rule:用于添加丰富规则。
family=\’ipv4\’:指定规则适用于IPv4 地址族。
source address=\’192.168.10.202\’:指定允许来自IP 地址192.168.10.202 的流量通过。
接受:如果规则匹配,则接受(允许)这些数据包。
其他富语言示例
允许192.168.10.0/24网段的主机访问TFTP服务并记录相关日志
[root@localhost ~]#firewall-cmd –add-rich-rule=\’规则族=\’ipv4\’源地址=\’192.168.10.0/24\’服务名称=\’tftp\’日志前缀=\’MyTFTPLOG:\’级别=\’ info\’极限值=\’1/m\’接受\’
允许同一网段的主机使用7000-8000范围内的TCP端口访问您的服务。
[root@localhost ~]#firewall-cmd –zone=dmz –add-rich-rule=\’规则族=\’ipv4\’源地址=\’192.168.10.0/24\’端口端口=\’7000-8000\’协议=\’接受\’tcp\’\’
地址伪装
源地址转换:内网访问外网
目的地址转换:外部网络访问内部服务器
示例
该示例基于上一章中的firewalld防火墙博客示例,并实现了地址欺骗功能。
上章firewalld 防火墙博客:http://t.csdnimg.cn/5yN7K
识别出外网主机正在访问内网Web服务器的DMZ区域中的Web服务
地址转换必须在网关服务器上完成
(1)设置external区域地址伪装
[root@网关服务器~]#firewall-cmd –list-all –zone=external
外部(主动)
默认目标:
icmp-block-inversion: 否
接口: ens33
来源:
服务:
端口: 12345/tcp
协议:
假面舞会: 是的
转发端口:
源端口:
icmp-blocks: 回显请求
丰富规则:
关闭地址伪装、重载
[root@gateway-server ~]#firewall-cmd –remove-masquerade –zone=external –permanent
[root@gatewayserver ~]#firewall-cmd –reload
此时内网主机和服务器无法访问(ping)外网。
设置external区域中只有192.168.1.0/24网段的数据包才有地址伪装效果
只有192.168.1.0/24网段内的数据包才具有地址欺骗效果(外网主机可以访问),但内网Web服务器(192.168.2.10)无法到达外网主机。
[root@gateway-server ~]#firewall-cmd –zone=external –add-rich-rule=\’规则族=\’ipv4\’源地址=\’192.168.1.0/24\’伪装\’–permanent
成功
[root@gatewayserver ~]#firewall-cmd –reload
成功
[root@网关服务器~]#firewall-cmd –list-all –zone=external
外部(主动)
默认目标:
icmp-block-inversion: 否
接口: ens33
来源:
服务:
端口: 12345/tcp
协议:
假面舞会: 否
转发端口:
源端口:
icmp-blocks: 回显请求
丰富规则:
规则族=\’ipv4\’源地址=\’192.168.1.0/24\’伪装
(2)端口转发
将所有进入防火墙外部区域80端口的TCP流量转发至内网192.168.2.10主机。
[root@gateway-server ~]#firewall-cmd –zone=external –add-forward-port=port=80:proto=tcp:proto=tcp:toaddr=192.168.2.10 –permanent
它从外网80端口接收TCP协议报文,转发到192.168.2.10的80端口,该端口也有TCP协议。
[root@gateway-server ~]#firewall-cmd –reload # 重启服务
port=80:proto=tcp:proto=tcp:toaddr=192.168.2.10 这部分指定了具体的转发规则
port=80: 表示转发的端口为80端口,这是HTTP服务的标准端口。 proto=tcp: 指定协议为TCP,这是HTTP 服务使用的协议。 toaddr=192.168.2.10: 指定转发地址。这意味着发送到防火墙上端口80 的所有TCP 流量都将转发到主机192.168.2.10。
现在可以看到内网测试机可以访问内网Web服务器的http服务,外网测试机也可以访问内网Web服务器的http服务。但没有进行外部网络测试。机器无法访问整个内网,但内网测试机无法访问外网测试机。
(3)将网关服务器的外网接口设置第二个ip地址,让外网主机能够通过两个IP访问Web服务
如果内网Web服务器申请了新的公网IP 100.1.1.15,则将新的公网IP配置为网关服务器外网卡ens33上的第二个IP地址。
vim /etc/sysconfig/network-scripts/ifcfg-ens33
使用ip a命令可以看到ens33接口上有两个IP。
(4)使用富规则配置端口转发
[root@gateway-server网络脚本]#firewall-cmd –zone=external –add-rich-rule=\’规则系列=ipv4目标地址=100.1.1.15/32转发端口端口=80协议=tcp到- addr=192.168.2.10\’ –永久
[root@gateway服务器网络脚本]#firewall-cmd –reload
(5)最后在外网测试机,使用curl命令测试两个ip能否访问Web服务
#firewalld 以上有关防火墙:直接规则、丰富语言、地址欺骗、综合示例相关内容来源网络的信息仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92898.html