目前,我正在通过基于 IP 地址原产国阻止对 Dovecot 和 SSHD 的访问来减少日志中失败的身份验证垃圾邮件。这两项服务都需要身份验证,并且在少数几个国家/地区之外,我没有需要访问的用户或自动化。
这是使用 tcpwrappers'aclcheck
和传递的 shell 脚本%a
并调用geoiplookup
(或geoiplookup6
)我碰巧安装在我的系统上的二进制文件来完成的。全部设置为/etc/hosts.allow
, /etc/hosts.deny
。
这足以摆脱大多数失败的登录。
尽管 Postfix 与 tcpwrappers 是由同一个人创作的,但它并不使用 tcpwrappers——至少在 Debian 中,它的各种二进制文件没有链接到libwrap.so
.
iptables
据我所知,不适用;我不相信它可以要求用户空间二进制文件来确定是否应该接受或拒绝 IP 数据包(例如 TCP SYN)。
有没有一种方便的方法可以让 Postfix 的守护进程监听 TCP 连接,例如master
使用hosts.allow
/ hosts.deny
?是tcpd
答案吗?如何正确使用它?
我有兴趣仅根据原产国阻止smtps
和submission
端口 - 那些允许身份验证(并因此允许身份验证后中继)的端口。
实际上,您可以使用 netfilter (
iptables
) NFQUEUE 让外部程序评估数据包/连接。我通常在 RHEL 和 CentOS 上下载 CIDR 格式的 ip-ranges,然后用于
ipset
在iptables
.但是,当您使用例如 Debian/Ubuntu 时,您可以轻松地
xt_geoip
从包 xtables-addons-dkms 安装该模块,以获得您的 netfilter iptables 防火墙的 GeoIP 功能:安装包:
下载 Geo IP 源数据并构建二进制数据库:
然后根据需要添加国家/地区感知 geoip 防火墙规则:
如果您愿意: