$ sudo ufw status
Status: active
To Action From
-- ------ ----
Nginx Full ALLOW Anywhere
22/tcp ALLOW Anywhere
Nginx Full (v6) ALLOW Anywhere (v6)
22/tcp (v6) ALLOW Anywhere (v6)
我如何才能仅允许来自特定地区、国家或大陆的 SSH(22/tcp)请求?
例如,这个问题与仅允许来自 localhost 的请求无关,因为 locahost 的 IP 是已知的。我想要类似这样的功能:将某个国家/地区的所有 IP 范围放在一个文本文件中,并将其嵌入到 ufw 允许规则中。
要将 IP 阻止列表添加到简单防火墙 (UFW),请使用此 Gihub 脚本中的以下说明,其内容如下所示。
衷心感谢poddmo,他是 UFW-blocklist 的作者,UFW-blocklist 是 Ubuntu ufw 的 IP 黑名单扩展。
安装
安装 ipset 包
sudo apt install ipset
备份原始 ufw after.init 示例脚本
sudo cp /etc/ufw/after.init /etc/ufw/after.init.orig
安装 ufw-blocklist 文件
从 IPsum 下载初始 IP 阻止列表
启动 ufw-blocklist
注意:将阻止列表条目加载到 ipset 需要一些时间。使用以下命令查看进度:
用法
ufw 使用启用、禁用和重新加载选项自动启动和停止阻止列表。Ubuntu UFW wiki 页面
还有 2 个可用的 after.init 命令:status 和 flush-all
sudo /etc/ufw/after.init flush-all
从此状态,您可以手动将 IP 地址添加到列表中,如下所示:
sudo ipset add ufw-blocklist-ipsum a.b.c.d
这对于测试很有用。用于
/etc/cron.daily/ufw-blocklist-ipsum
下载最新列表并完全恢复阻止列表。地位
使用状态选项调用
after.init
会显示阻止列表中条目的当前计数、防火墙规则的命中计数(第 1 列为命中数,第 2 列为字节数)以及最后 10 条日志消息。可以在链接的 Github 扩展帖子中看到示例输出。更多参考:
地理封锁
封锁国家/地区
按国家/地区划分的 IP 地址范围