我有一台兼具邮件和Web服务器function的服务器。 我想使用iptables来允许所有传入和传出连接,除了传入端口25.我只希望一个远程主机能够连接到端口25(为了中继邮件)。
本质上,我想要一个开放的服务器,而不把它变成一个垃圾邮件中继。 有什么build议么? 谢谢!
这听起来像一个相当直接的要求。 话虽如此,我仍然有点小心翼翼地告诉别人configuration他们的SMTP服务器作为一个广泛开放的中继。 即使你限制到机器的传入连接,你应该使用某种authentication来控制中继。 即使消费者ISP也不允许来自其networking内部的未经authentication的中继。
假设您的INPUT链设置为“ACCEPT”策略,并且当前允许新的传入数据包从链的末端掉落,请执行以下操作:
iptables -A INPUT -p tcp --dport 25 -s ! xxxx -j DROP
为了完整起见,我的初步答案是这样的:
iptables -A INPUT -p tcp --dport 25 -s xxxx -j ACCEPT iptables -A INPUT -p tcp --dport 25 -j DROP
第一种方法具有使用单一规则的经济性,并且很容易进行视觉分析,因为它是完全独立的。 第二个更容易添加额外的地址。
replace“xxxx”的源地址。 我怀疑你真的想要的不仅仅是一次来源,但你可以弄清楚。 (你可能在你的局域网或其他客户端上有机器,但是你可能不想这样做。)
(希望你已经在你的INPUT链的顶部有规则来允许已build立的连接来简化链的其余部分,只是接受,除了最初的握手符合上面的规则之外,你真的不需要任何东西。
显然,将这些规则保存在任何iptables状态 – 持续的发明你的发行使用。
编辑:谢谢,womble。
像这样的事情是更多的未来certificate,以防万一你需要允许更多的地址。
iptables -A INPUT -p tcp --dport 25 -s xxxx -j ACCEPT iptables -A INPUT -p tcp --dport 25 -j DROP
从这个过渡到默认的DENY策略也是比较容易的,这总是一件好事。
此外,大多数邮件服务器允许您定义允许中继的地址列表,这可以增加另一级别的保护。 你没有说你正在使用哪个邮件服务器,但他们都应该有这个function。