这些是我当前针对端口 22 的 iptables 规则。它在 linode 和其他 vps 提供商上有效,但在 aws 上无效。在 aws 上执行这些规则后,所有端口 22 连接都被拒绝或超时。我使用的是 debian 10,在 aws vpc 上打开了所有端口。我这里遗漏了什么?谢谢。
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Chain for preventing SSH brute-force attacks.
# Permits 10 new connections within 5 minutes from a single host then drops
# incomming connections from that host. Beyond a burst of 100 connections we
# log at up 1 attempt per second to prevent filling of logs.
iptables -N SSHBRUTE
iptables -A SSHBRUTE -m recent --name SSH --set
iptables -A SSHBRUTE -m recent --name SSH --update --seconds 300 --hitcount 10 -m limit --limit 1/second --limit-burst 100 -j LOG --log-prefix "iptables[SSH-brute]: "
iptables -A SSHBRUTE -m recent --name SSH --update --seconds 300 --hitcount 10 -j DROP
iptables -A SSHBRUTE -j ACCEPT
iptables -A INPUT -p tcp --dport 22 --syn -m conntrack --ctstate NEW -j SSHBRUTE
iptables -A INPUT -p tcp --dport 22 --syn -m conntrack --ctstate ESTABLISHED -j ACCEPT
规则集来源 - https://gist.github.com/jirutka/3742890
更新:-
我按照这个答案中提到的步骤进行操作(更改了 AWS EC2 防火墙规则并锁定了 ssh) 编辑出 cron 命令集以在重启时重新启动 iptables。现在我可以登录实例,但无法再复制该问题。它仍然是同一套规则。Aws 还在每次重启时重置我的主机配置 /etc/hosts 文件。现在我直接在模板文件上设置主机配置。稍后将尝试复制该问题,已经花了几个小时。