Postfix:根据 geoip 阻止提交端口上的连接

Postfix:根据 geoip 阻止提交端口上的连接

目前,我通过根据 IP 地址来源国阻止对 Dovecot 和 SSHD 的访问来减少日志中身份验证失败的垃圾邮件。这两项服务都需要身份验证,除了相当少的国家/地区外,我没有用户或自动化需要访问。

这是通过使用 tcpwrappersaclcheck和传递的 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

答案1

iptables据我所知,是不适用的;我不相信它可以要求用户空间二进制文件确定是否应该接受或拒绝 IP 数据包(例如 TCP SYN)。

实际上,您可以使用 netfilter ( iptables) NFQUEUE 让外部程序评估数据包/连接。

我通常在 RHEL 和 CentOS 上下载 CIDR 格式的 IP 范围,然后使用ipset创建相对有效的白名单或黑名单iptables

但是当你使用 Debian/Ubuntu 时,你可以轻松安装xt_geoip来自包 xtables-addons-dkms 的模块为您的 netfilter iptables 防火墙获取 GeoIP 功能:

安装软件包:

apt-get install xtables-addons-dkms

下载Geo IP源数据并构建二进制数据库:

mkdir /usr/share/xt_geoip
cd mkdir /usr/share/xt_geoip
/var/lib/dkms/xtables-addons/2.12/build/geoip/xt_geoip_dl
/var/lib/dkms/xtables-addons/2.12/build/geoip/xt_geoip_build -D /usr/share/xt_geoip GeoIPCountryWhois.csv GeoIPv6.csv

然后根据需要添加国家感知 geoip 防火墙规则:

iptables -A INPUT -m geoip  --src-cc NL,UK  -m conntrack --ctstate NEW -j ACCEPT

如果你愿意的话:

iptables -A INPUT -m geoip  ! --src-cc NL,UK  -m conntrack --ctstate NEW -j REJECT

相关内容