我们可以从nginx日志中看到有一个IP地址在做一些讨厌的事情。
我们如何使用pf
命令阻止它,然后使用/etc/pf.log
? 我们如何阻止x.x.x.x/24
该 IP 的 a?例如:1.2.3.4
更新:不,看起来 OpenBSD 在 /etc 中没有允许/拒绝文件。AFAIK 阻止滥用 IP 地址的最佳建议是使用 pf。
# cd /etc
# ls -la|egrep -i 'deny|allow'
# uname -a
OpenBSD foo.com 5.4 GENERIC.MP#0 amd64
#
Run Code Online (Sandbox Code Playgroud)
Zé *_*off 14
最好的方法是定义一个表并创建一个规则来阻止主机,在pf.conf
:
table <badhosts> persist
block on fxp0 from <badhosts> to any
Run Code Online (Sandbox Code Playgroud)
然后从中动态添加/删除 IP 地址:
$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T delete 1.2.3.4
Run Code Online (Sandbox Code Playgroud)
其他“表格”命令包括flush
(全部删除)replace
和show
. 查看man pfctl
更多。
如果您想要一个更永久的列表,您可以将其保存在一个(或多个)文件中。在pf.conf
:
table <badhosts> persist file "/etc/badguys1" file "/etc/badguys2"
block on fxp0 from <badhosts> to any
Run Code Online (Sandbox Code Playgroud)
您还可以添加主机名而不是 IP 地址。见的“表”部分man pf.conf
和man pfctl
。
注意:以上示例假设面向互联网的界面是fxp0
,请根据您的设置进行更改。另外,请记住,in 中的规则pf.conf
是按顺序评估的,并且 forblock
或pass
rules 是最后一个适用的匹配规则。有了这个规则集
table <badhosts> persist
block on fxp0 from <badhosts> to any
pass inet tcp from 192.168.0.0/24 to any port 80
Run Code Online (Sandbox Code Playgroud)
并在badhosts
表中添加 1.2.3.4 和 192.168.0.10 后
$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T add 192.168.0.10
Run Code Online (Sandbox Code Playgroud)
来自 1.2.3.4 和 192.168.0.10 的所有流量都将被阻止,但第二台主机将能够连接到其他机器的端口 80,因为该pass
规则匹配并覆盖该block
规则。
我从网站上获得了此信息,请原谅我对 的了解不够OpenBSD
,但就这样了。看看这个网址。根据它的说法,要阻止 IP,您需要:
echo '123.123.123.123' >> /etc/pf.blocked.ip.conf
然后您将重新启动防火墙:
pfctl -d
pfctl -e -f /etc/pf.conf
Run Code Online (Sandbox Code Playgroud)
或者,在不重新启动防火墙的情况下添加:
pfctl -t blockedips -T add 111.222.333.444
现在检查是否已添加:
pfctl -t blockedips -T show
更新:也许这会有所帮助。
在 vi 中打开以下文件:
vi /etc/pf.conf
添加以下代码行:
table <blockedips> persist file "/etc/pf.blocked.ip.conf"
ext_if="bge0" # interface connected to internet
之后,我会尝试重新启动防火墙并通过输入以下内容确认 IP 已被阻止:
pfctl -d
pfctl -e -f /etc/pf.conf
pfctl -t blockedips -T show
Run Code Online (Sandbox Code Playgroud)