又快又脏

又快又脏

我的/etc/rc.firewall文件包含我创建的以下附加行,目的是禁止攻击者的 DDoSers IP:

${fwcmd} add deny ip from 122.228.19.80/24,\
                          185.234.219.65/24,\
                          92.118.38.57/24,\
                          185.36.81.143/24,\
                          141.98.10.137/24,\
                          45.125.66.144/24,\
                          185.100.87.190/24,\
                          45.142.195.6/24,\
                          45.143.223.52/24,\
                          103.7.10.131/24,\
                          52.178.192.68/24,\
                          80.82.77.33/24,\
                          164.68.112.178/24,\
                          81.95.5.34/24 to any

该列表每周都在急剧增长。我如何创建一个文本文件以便ipfw会直接从那里获取这些IP吗?最简单的方法是什么?

PS:我找不到理由隐藏/mask 上面的那些 IP,因为它们是真正随机填充的日志文件,根本不是普通用户!对于其他人来说,了解它们并阻止它们也会很有用:)

操作系统:FreeBSD 12.1

答案1

又快又脏

所有的配置ipfw都是通过发出命令来完成的ipfw。在你的情况下,它被包裹在${fwcmd}并且是一个参数替换(看嘘(0)段落Parameter Expansion)。/etc/rc.firewall然后可以将其视为shshell 脚本(带有一些附加的辅助函数)。

那么就很简单了:

cat list.txt | xargs -I BANIP ${fwcmd} add deny ip from BANIP to any

该文件list.txt通过管道传输到参数它构造了命令。list.txt每行应包含一个 IP 地址或子网。

例子:

122.228.19.80
185.234.219.65
92.118.38.57/24
185.36.81.143/24

安静

从你的问题我们看不到${fwcmd}扩展到什么。它可能像这样简单ipfw。对于在脚本中使用,最好使用ipfw -q(请参阅ipfw(8)) 使其更加稳健。添加时它会为您创建一个表,并优雅地处理添加相同地址两次。

表格

如上所述添加一大堆deny规则有点混乱。如果你把它们放到一个表中,然后根据表制定规则,那就干净多了。

首先我们创建表 #1 并填充它:

ipfw -q table 1 add 122.228.19.80
ipfw -q table 1 add 185.234.219.65
ipfw -q table 1 add 92.118.38.57/24
ipfw -q table 1 add 185.36.81.143/24

然后我们在规则中使用该表:

ipfw add deny ip from 'table(1)' to any

然后我们使用list.txt和以前一样的方法。然后我们可以随时刷新并重新加载表:

ipfw table 1 flush
cat list.txt | xargs ipfw -q table 1 add

上面的内容可以在玩的时候在命令行上执行。

在您的配置脚本的上下文中,它会类似于:

cat list.txt | xargs ${fwcmd} table 1 add
${fwcmd} add deny ip from 'table(1)' to any

周围的“标记”table(1)是为了确保 shell 不会尝试()以任何方式进行解释。你可以选择逃脱他们也是。结果相同,但人类阅读起来有点困难。

${fwcmd} add deny ip from table\(1\) to any

相关内容