我的 iptables 安全吗?

Pat*_*cia 6 networking security ubuntu iptables

rc.local在我的新 Ubuntu 服务器上有这个:

iptables -F

iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --dport 9418 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 9418 -m state --state ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --dport 5000 -m state --state NEW,ESTABLISHED -j ACCEPT # Heroku
iptables -A INPUT -i eth0 -p tcp --sport 5000 -m state --state ESTABLISHED -j ACCEPT # Heroku

iptables -A INPUT -p udp -s 74.207.242.5/32 --source-port 53 -d 0/0 --destination-port 1024:65535 -j ACCEPT
iptables -A INPUT -p udp -s 74.207.241.5/32 --source-port 53 -d 0/0 --destination-port 1024:65535 -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

iptables -P INPUT DROP
iptables -P FORWARD DROP
Run Code Online (Sandbox Code Playgroud)

9418 是 Git 的端口。5000 是用于管理 Heroku 应用程序的端口。而74.207.242.574.207.241.5是我们的DNS服务器。

你认为这样安全吗?你能看到这里有什么洞吗?

更新:为什么阻止 OUTPUT 很重要?这台机器仅供我使用。

Lad*_*ada 10

我能看到的唯一主要漏洞是 IPv6。你需ip6tables要这样做。如果您的任何服务侦听 IPv6(其中许多服务,包括 ssh,默认侦听 IPv6),那么攻击者可以使用它来完全绕过您上面的所有规则。当 IPv6 可用时,网络将优先使用 IPv6 而不是 IPv4。

假设您的OUTPUT政策是DROP,您已经很好地限制了 IPv4。

跳过RELATED选项可能意味着你得到超时,而不是即时次品当服务出现故障并停止侦听我了解TCP RST的数据包既不NEW或者ESTABLISHED在这方面。


要回答你的问题的更新:因为当它不是只由你。

无论我们多么小心,我们总是有可能遗漏了一些东西,或者我们一时粗心大意,我们允许其他人对我们的盒子进行一定程度的控制。攻击者一旦掌握了立足点,就会做的第一件事就是下载权限提升工具包、rootkit、他们的命令和控制系统以及他们真正想要在盒子上运行的任何东西。限制出站连接意味着他们无法下载权限提升工具包,这意味着他们无法以 Apache 用户或 Git 用户或他们设法攻击的任何身份运行。没有root权限,他们无法隐藏,也无法修改防火墙。这不会永远阻止攻击者,但它可能会阻止他足够长的时间,让您注意到他在那里,或者让他感到沮丧,以至于他放弃并去更容易的地方。

上述规则意味着远程文件包含攻击只有在远程文件托管在 SSL 上时才会起作用。如果你在这个盒子和互联网之间放置一个代理服务器并且让它只允许某些 URL 模式,你可以阻止 RFI 的轨道,同时仍然允许正常操作。这就是纵深防御