如何配置 IPTables,以便仅有的允许 SSH 进入,并且不允许其他流量进入或出?
有人可以推荐什么安全预防措施吗?
我有一台服务器相信已成功从 GoDaddy 迁移,并且我相信不再使用。
但我想确定一下,因为……你永远不知道。:)
请注意,这是来自 GoDaddy 的虚拟专用服务器...这意味着没有备份,几乎没有支持。
答案1
您只需要在 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
最后两个命令允许环回流量,因为某些应用程序需要它才能正常运行。您可以使用-s source_ip
选项限制特定 IP 的 SSH 访问。
按上述顺序执行命令会导致当前 SSH 会话挂起。这是因为 iptables 命令会立即生效。您需要在 shell 脚本中执行它们,以避免在远程执行它们时失去连接到您的机器的能力。
答案2
像这样:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT # or iptables -P INPUT DROP
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j REJECT # or iptables -P OUTPUT DROP