1.1:关于iptables的知识
IP 数据包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则
是在做数据包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的数据包过滤 表中,而这些表集成在 Linux内核中。在数据包过滤表中,规则被分组放在我们所谓的链 (chain) 中。
虽然 netfilter/iptables IP 数据包过滤系统被称为单个实体,但它实际上由两个组件 netfilter 和 iptables 组成。
(1).netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些数据包过滤 表组成,这些表包含内核用来控制数据包过滤处理的规则集。
(2).iptables 组件是一种工具,也称为用户空间 (userspace), 它使插入、修改和除去数 据包过滤表中的规则变得容易。
iptables包含4个表,5个链。其中表是按照对数据包的操作区分的,链是按照不同的 Hook(挂钩)点来区分的,表和链实际上是 netfilter 的两个维度。
1.2:firewalld 中理解直接规则
将 iptables的规则插入到firewalld的管理区域中,这种方式写的规则叫直接规则。
将某个IP范围列入黑名单
在这个例子中首先自定义了一个叫blacklist的链,然后将所有来自192.168.10.0/24的数据包 都指向了这个链,最后定义了这个链的规则:首先进行记录,然后drop, 记录的方法是使 用“blacklisted:” 前缀并且限制1分钟记录一次。
(1)创建一个黑名单,并为这个黑名单创建一个链,链名为 blacklist
[root@localhost ~]#firewall-cmd --direct --permanent --add-chain ipv4 raw blacklist
(2)将来自192.168.10.0/24的数据包指向这个链
[root@localhost ~]#firewall-cmd --direct -permanent --add-rule ipv4 raw PREROUTING 0-s 192.168.10.0/24-jblacklist
(3)每分钟记录一次日志(-m limit --limit 1/min 每分钟记录一次日志)
[root@localhost ~]#firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist O-m limit --limit 1/min -jLOG --log-prefix "blacklisted"
(4)设置这个链的规则为 DROP
[root@localhost~]#firewall-cmd--direct--permanent --add-rule ipv4 raw blacklist 1-jDROP
(5)重启 firewalld(重启或重载后生效)
[root@localhost~]#systemctl restart firewalld
(6)查看直接规则
[root@localhost ~]#cat /etc/firewalld/direct.xml
<?xml version="1.0"encoding="utf-8"?>
<direct>
<chain table="raw"ipv="ipv4"chain="blacklist"/>
<rule priority="0"table="raw"ipv="ipv4"chain="PREROUTING">-s 192.168.10.0/24 -j
blacklist</rule>
<rule priority="1"table="raw"ipv="ipv4"chain="blacklist">-j DROP</rule>
</direct>
注释:
>Ipv4: 这个属性非常简单,表示 ip 的版本
table:chain 和 rule 节点中的table 属性就是iptables/ip6tables中 的table
>chain:chain 中的 chain属性用于指定一个自定义链的名字,注意,不可与已有链重名; rule中的 chain属性既可以是内建的(也就是iptables/ip6tables中的五条链),也可以
是在direct中自定义的chain
priority: 优