如何创建显示通过防火墙(iptables)的出站数据的摘要报告

如何创建显示通过防火墙(iptables)的出站数据的摘要报告

我已经安装了 fwlogwatch 并生成如下每日报告:

fwlogwatch -b -l 1d -N -n -M 20 -w -T [email protected] /var/log/kern.log /var/log/syslog

它似乎与我的 nginx 访问日志没有关联,并且似乎报告的流量(以字节为单位)要少得多。所以我不确定我是否真的信任它。

但我真正想要的是两份报告:第一份显示传入流量,第二份显示传出流量的数量。

请注意,我以 docker 容器的形式运行许多服务,因此将传出的流量按这些容器的源 ip 地址分组会很酷。

我如何创建这样的报告?

答案1

一个选择是

iptables -xvn -L OUPUT

选择 2 ipset 和 iptables

甚至可以实现更复杂的情况,包括使用此方法记录源和目标 IP 地址,只是这里没有显示。

ipset create output hash:net counters
iptables -I OUTPUT 1 -j SET  --add-set output dst
iptables -I OUTPUT 1 -m set --match-set output dst

你可以替代源码为了夏令时如果您想要的是源数据。

或者监控输入:

ipset create INPUT hash:net counters
iptables -I INPUT 1 -j SET  --add-set INPUT src
iptables -I INPUT 1 -m set --match-set INPUT src

有些数据包可能实际上使用 FORWARD 组

ipset create FORWARD hash:net counters
iptables -I FORWARD 1 -j SET  --add-set FORWARD src
iptables -I FORWARD 1 -m set --match-set FORWARD src

然后使用

ipset save

查看结果。

另外,如果您只能了解某些 IP 地址,则可以删除“--add-set”。然后手动填充列表。

ipset add input 192.168.0.1/24
ipset add input 192.168.1.1/24
ipset add input 192.168.2.1/24

ipset add output 192.168.0.1/24

如果您确实手动填充列表,那么您将需要使用:

ipset save >ipset.txt

然后

ipset restore <ipset.txt

除非您另行配置,否则所有设置和配置选项(包括计数器)都将一次性保存和恢复。

此外,您还可以

ipset save >daily.txt
ipset flush

刷新后,您可以恢复 IP 地址主列表,并将主列表中的计数器全部设置为 0。

ipset restore <all-sets-at-zero.txt

这将刷新 IP 地址,而不是组。因此将所有计数器重置为 0。您可以创建一个 cron 作业来节省进而冲洗每日设置一次以进行每日报告。

选择 3 iptables 与 ULOG

iptables -I OUTPUT 1 ULOG 选项

然后,您可以修改 ulogd.conf 文件以在任何地方甚至数据库中进行记录。

相关内容