IPTables:只允许 SSH 访问,没有其他的进出

Dis*_*sco 11 firewall iptables godaddy

您如何配置 IPTables 以便它只允许 SSH 进入,而不允许其他流量进出

任何人都可以推荐任何安全预防措施?

我有一台服务器,我相信它已成功从 GoDaddy 迁移,我相信它不再使用。

但我想确定只是因为......你永远不知道。:)

请注意,这是来自 GoDaddy 的虚拟专用服务器......这意味着没有备份,几乎没有支持。

Kha*_*led 13

您只需在 INPUT 和 OUTPUT 链上将默认策略设置为 DROP。

要允许 SSH 进入,您需要以下命令:

$ sudo iptables -P INPUT DROP
$ sudo iptables -P OUTPUT DROP
$ sudo iptables -A INPUT -i lo -j ACCEPT
$ sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
$ sudo iptables -A OUTPUT -o lo -j ACCEPT
$ sudo iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

最后两个命令允许环回流量,因为某些应用程序需要此功能才能正常运行。您可以使用-s source_ip选项限制来自特定 IP 的 SSH 访问。

如上所示按顺序执行命令将导致您当前的 SSH 会话挂起。这是因为 iptables 命令立即生效。您需要在 shell 脚本中执行它们,以避免在远程执行它们时失去连接到您的机器的能力。

  • 最后一条规则上的`--state RELATED` 是不必要的;`--state ESTABLISHED` 就足够了。您可能还希望允许 DNS 流量,并且可能应该允许环回接口上的任何内容,否则各种事情可能会表现得很奇怪。 (4认同)
  • 你真的应该改变这些命令的顺序。策略行应显示为最后一行。任何只是将其复制粘贴到 ssh 会话中的人都会被 HUPed 并立即拒之门外 (3认同)
  • 附:第一个命令后建立连接将被强制关闭 (2认同)