定期收集和发布iptables的统计信息
iptables-stats的Python项目详细描述
概述
定期收集iptables规则的统计信息,并将其发送到不同的接收器(而当前只支持mqtt)。可以对链中的规则进行计数,对规则处理的数据包/字节数进行计数,并对ipset中的唯一ip进行计数。
用法
启动iptables_stat
,它将持续运行,定期生成读数并将其发布到配置的接收器。
配置
程序使用yaml格式的配置文件进行配置。默认位置是/etc/iptable_stats.yml
,但是可以使用命令行参数--config
配置不同的位置。
配置文件由部分general
和用于输入模块和输出接收器的配置部分的可变数目组成。
示例:
general:
interval: 120
mqtt:
host: myHost
topic_root: home/myHost/iptables_stats
iptables_pkg_count:
firehol_level1:
chain: FIREHOL_BLACKLIST
rule_regex: .*match-set.firehol_level3.src.*
firehol_level2:
chain: FIREHOL_BLACKLIST
rule_regex: .*match-set.firehol_level2.src.*
firehol_level3:
chain: FIREHOL_BLACKLIST
rule_regex: .*match-set.firehol_level3.src.*
ipset_count:
firehol_level1:
setname: firehol_level1
firehol_level2:
setname: firehol_level2
firehol_level3:
setname: firehol_level3
iptables_rule_count:
f2b-traefik-auth:
chain: f2b-traefik-auth
offset: -1
f2b-traefik-botsearch:
chain: f2b-traefik-botsearch
offset: -1
此配置包含三个iptables_pkg_count
对象,这些对象将为与给定正则表达式匹配的规则报告iptables计数器。还有三个ipset_count
对象,它们计算ipset firehol_level1
、firehol_level2
和firehol_level3
中唯一ip的数量。
最后但不少于两个iptables_rule_count
对象,它们计算链f2b-traefik-auth
和f2b-traefik-botsearch
中的规则。fail2ban
在IP禁止的情况下向这些链中注入规则。每个规则代表一个IP。两个对象都使用offset
的-1
,因为两个链都包含不应计算的固定DROP
规则。
输出接收器
当前仅实现一个接收器
mqtt
示例:
mqtt:
host: myHost
port: 1883
topic_root: home/myhost/iptables_stats
- 主机
- port(可选)-默认为1883
- topic_root-定义用于发布读数的根主题的字符串
阅读模块
每个模块在配置中都有一个部分。在这些部分中,可以使用用户定义的对象名称定义对象配置。每个对象配置都可以重写gobalinterval
参数,这样就可以分别为对象配置interval
。
iptable包数
从iptables
读取给定规则和链的计数器统计信息,并生成读数packet_count
和byte_count
。它们表示被阻塞的数据包和字节数。
配置:
- chain-链的名称
- rule\u regex-与所讨论的规则匹配的regex。当规则出现在
iptables-save
的输出中时,它与字符串匹配。不允许regex匹配多个规则。
iptables规则计数
计算给定链中的规则数并生成读取rule_count
。
配置:
- chain-链的名称
- offset(可选)-发布前添加到值的整数。这对于解释应该忽略的规则很有用。可能有一个不应计入价值的跌价规则。将
offset
设置为-1
以调整到该值。