iptables:阻止出站stream量,除了某些IP地址

使用iptables,我需要阻止我的服务器上的所有出站stream量,除了:

  • SSH访问less量的IP地址
  • HTTPS访问同一个IP地址的小列表

任何人都可以给我看一套合适的规则吗?

谢谢。

iptables -I OUTPUT -d <remote_ip> -p tcp --dport 22 -j ACCEPT iptables -I INPUT -s <remote_ip> -p tcp --sport 22 -j ACCEPT iptables -I OUTPUT -d <remote_ip> -p tcp --dport 443 -j ACCEPT iptables -I INPUT -s <remote_ip> -p tcp --sport 443 -j ACCEPT iptables -P INPUT DROP iptables -P OUTPUT DROP 

您需要为每个IP添加前4条规则。 但是请注意,因为您必须通过本机上的控制台login; 所有其他访问将被阻止。

现在我明白你的问题的背景,试试:

 iptables -P OUTPUT DROP iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp -s 8.8.8.8 --dport 53 -j ACCEPT iptables -A OUTPUT -p udp -s 8.8.8.8 --dport 53 -j ACCEPT iptables -A OUTPUT -p tcp -s 10.11.12.13/24 --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp -s 10.11.12.13/24 --dport 443 -j ACCEPT 

等等。 这将设置默认策略为DROP,然后只允许IP地址(或范围)列出访问权限。 第二行允许相关stream量(例如,正在进行的SSH会话的出站数据包),第三个和第四个DNS查找示例。

不要忘记,您需要一条类似于第2行的INPUT规则。

上述post将实现阻止除SSH和HTTPS外的所有传出stream量,但他们不会满足您的上述(在评论中)所述的目标:

我希望通过SSHlogin的用户无法从本机发送数据。

考虑以下几点:如果我可以通过SSH访问您的邮箱,我可以简单地使用SSH隧道将任何数据上传到不受信任的位置,然后通过其中一个允许传出stream量的目的地。 因此,如果您希望敏感数据不以任何方式复制到您的networking之外,我认为只有通过包含敏感​​数据的主机上的iptable规则才能解决问题。