我有一个centos计算机,并希望只允许出站连接端口587到某些远程计算机,并丢弃试图连接到所有其他主机的数据包。
我只想允许访问端口587,如果他们要访问Gmail的SMTP服务器(所有的IP后面的smtp.gmail.com )。 有没有一种方法可以实现这一点?
你可以使用-d开关到iptables规则,这些规则使规则适用于提供的地址,然后阻止所有其他的例如
iptables -I OUTPUT -p tcp --dport 587 -j DROP iptables -I OUTPUT -d smtp.gmail.com -p tcp -m tcp --dport 587 -j ACCEPT
应该做你想做的。 这最初将端口587规则的所有传出连接的DROP插入到OUTPUT链的开始处。 然后,它将smtp.gmail.com端口587的允许规则插入到OUTPUT链的开头。 这具有允许连接到smtp.gmail.com:587并阻塞端口587上的其他一切的效果,例如,
iptables -L OUTPUT -n Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 0.0.0.0/0 173.194.66.109 tcp dpt:587 ACCEPT tcp -- 0.0.0.0/0 173.194.66.108 tcp dpt:587 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:587
请注意,smtp.gmail.comparsing为两个IP地址,这就是为什么上面有两个ACCEPT规则。 只有当规则被添加到内核时,名称才会被parsing,所以如果地址被改变,那么到gmail的连接也会被阻塞,你需要重新加载规则。
在拒绝访问之前,您需要先允许gmail。 否则,你不会达到允许规则。
Google可能会在他们的ASN中使用任何地址来访问Gmail服务器,您将希望允许所有的块。 你可能想看看使用ipset来处理涉及的块。 您也可能会发现他们的SPFlogging提供了一个适合您需求的正确的networking块列表。 如果您reject ,而不是drop传出的请求,用户可能不会注意到一些丢失的块。
像Shorewall这样的工具将允许您更轻松地实施您的政策。 在你的情况下,我会有一个传出拒绝政策,只允许所需的stream量。 在这种情况下,您将不需要特定的规则来阻止访问提交端口。 Shorewall还可以轻松configuration防火墙的日志logging。
我build议自动完成这件事,这样你就不必再为此担心了。
iptables -I OUTPUT -p tcp --dport 587 -j DROP应该包含在你的基本系统configuration中,它可能位于你机器上的/ etc / sysconfig / iptables中。
把这个脚本放到一个编辑器中并保存到某个地方,然后使用chmod将其标记为可执行文件。 作为一个例子,我把它放在/opt/sysadminscripts/iptables.smtp.gmail.sh中
#!/斌/庆典
IPLIST = $(主机smtp.gmail.com | grep'有地址'| awk'{print $ 4}')
for $ in $ IPLIST
做
$(iptables -L -nv | grep“$ x”>> / dev / null)
如果[[“$?” -ne'0']]; 然后
$(iptables -I OUTPUT -p tcp -m tcp -d“$ x”--dport 587 -j ACCEPT)
科幻
DONE
然后在系统crontab中添加一个类似于以下的条目:
* / 10 * * * * root /opt/sysadminscripts/iptables.smtp.gmail.sh
确保该行不是/ etc / crontab中的最后一行。 如果该行没有终止换行符,则不会运行。 (我build议保留注释作为/ etc / crontab的最后一行。)
你需要有像这样的规则:
iptables -A FORWARD -p tcp -d smtp.gmail.com --dport 587 -j ACCEPT iptables -A FORWARD -p tcp --dport 587 -j DROP
问题是你需要findsmtp.gmail.com可能的IP地址。 不build议在iptables中使用该名称。 这是因为iptables不能识别IP地址映射的变化。 您可能需要不断检查IP更改并相应地更新您的规则。
在上面的例子中,您需要select正确的FORWARD链,具体取决于您想要控制的stream量。