是否有可能阻止/中止与iptables的未encryption的SMTP连接?
有效地拒绝所有不开始的连接。
这是不可避免的棘手。 TLS的本质是, 在 TLS可以协商之前必须build立到你的MTA的明文连接,所以iptables(像在传输层一样运行)不适合在应用层上影响问题。
你可以编写另一个目标模块并引导你的stream量,但是除非你是一个networking上帝,否则这对你来说可能是不可行的。 而且我绝对不知道该怎么做。
结果是应用程序层的东西在应用程序内执行起来要容易得多。 你不会说你正在使用什么MTA,但是我怀疑大多数足够亮的TTA足够明亮,可以授权它。
我使用sendmail。 在http://www.brandonhutchinson.com/Using_TLS_with_Sendmail.html上提供了来自不同提供商的TLS的一个很好的规定,它指引我访问数据库条目
TLS_Clt:communication_partner_MTA PERM+VERIFY:112
这需要特定的通信伙伴(可能是通过IP地址来识别的)同时用至less112位长度的密钥进行authentication,并且具有正确签名的证书。 在防垃圾邮件configuration控制部分的http://www.sendmail.org/documentation/configurationReadme中的sendmailconfiguration页面指出,涉及IPv4地址的访问数据库条目可以采取单个字节的forms,然后应用于所有以八位字节开始的地址。 所以我推测 ,我强调这只是猜测,sendmail将允许我有一系列条目
TLS_Clt:1 PERM:112 TLS_Clt:2 PERM:112 TLS_Clt:3 PERM:112 .... TLS_Clt:223 PERM:112
从所有的IP地址授权encryption(虽然没有可validation签名的证书;自签名的TLS证书是非常普遍的,我倾向于禁止他们)。 我也没有 TLS_Clt:127的条目,因为本地主机应该不会受到如此限制。
我再说一遍,我没有testing任何上述,如果你的MTA是sendmail以外的东西,以上将不会有什么特别的帮助; 但我想表明,我的MTA(至less)似乎已经挂钩了你想做的事情。 祝你好运。
Iptables主要用于过滤networking数据包的元数据,如IP头,TCP选项等等。 TLS是在应用程序级别处理的:您需要观察TCPstream内发生了什么。
你可以检查string扩展的数据包的内容,如果内核不足,你可以编写userlandfilter。 但是,这将是非常困难的:例如,TCPstream可以以任意方式分解为数据包,并且TCP数据包可以被无序地接收。您必须处理所有这些问题(复制核心)。
您在这里查找的是一个SMTP代理,用于转发TLS连接并阻止非TLS连接。 Iptable的贡献将只是确保SMTPstream量通过代理。