端口敲门(Port Knocking)配置后无法连接SSH的问题排查求助
端口敲门(Port Knocking)配置后无法连接SSH的问题排查求助
先帮你梳理下当前配置里的几个关键问题,以及对应的排查和修正步骤:
一、防火墙规则的核心问题
看你贴的iptables规则,首先顺序和逻辑都有明显错误:
规则顺序完全颠倒
- 你把
ACCEPT all -- anywhere anywhere放在了SSH规则之后,这条规则会直接允许所有入站流量,等于前面的端口敲门规则完全失效;但你的INPUT默认策略是DROP,这又产生矛盾——按道理这条规则应该让所有流量都能进来,但你却连不上SSH,大概率是这条规则的位置或者实际生效有问题。 - 另外,
ctstate RELATED,ESTABLISHED这条规则应该放在INPUT链的最顶端,用来允许已经建立的连接的后续数据包,否则就算你侥幸连上SSH,后续的交互数据包也会被防火墙丢弃。
- 你把
端口敲门的逻辑搞反了
- 你当前的第二个规则是:访问2002端口时,如果源IP在RECENT列表里(也就是已经敲过1001),就DROP这个连接——这完全和预期逻辑相反!我们需要的是:敲完1001后,敲2002时验证身份并更新列表,而不是拒绝。
- 虽然SSH规则是检查RECENT列表后允许,但前面的规则顺序和逻辑错误,导致即使你完成了敲门序列,也触发不了允许SSH的条件。
二、具体修正和排查步骤
1. 调整并修正防火墙规则
先把规则顺序和逻辑改对,示例如下(你可以根据实际情况调整):
# 先清空现有规则(谨慎操作,远程连接的话建议先在本地测试) iptables -F iptables -X # 重新配置INPUT链 iptables -P INPUT DROP # 1. 允许已建立的连接和相关流量 iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # 2. 允许本地回环(可选但建议) iptables -A INPUT -i lo -j ACCEPT # 3. 第一步敲门:访问1001端口,将源IP加入RECENT列表,同时丢弃这个连接(不需要实际建立) iptables -A INPUT -p tcp --dport 1001 -m recent --set --name KNOCK --rsource -j DROP # 4. 第二步敲门:访问2002端口,检查源IP是否在KNOCK列表里,在的话更新列表并丢弃连接 iptables -A INPUT -p tcp --dport 2002 -m recent --check --name KNOCK --rsource --seconds 60 -j DROP iptables -A INPUT -p tcp --dport 2002 -m recent --set --name KNOCK --rsource -j DROP # 5. 允许SSH:只有源IP在KNOCK列表里,才允许访问22端口 iptables -A INPUT -p tcp --dport ssh -m recent --check --name KNOCK --rsource --seconds 60 -j ACCEPT # 保存规则(不同系统命令不同,比如Debian用iptables-save > /etc/iptables/rules.v4,CentOS用service iptables save)
2. 测试敲门流程
- 先清空服务器上的RECENT列表,避免旧数据干扰:
echo "" > /proc/net/xt_recent/KNOCK - 然后在本地执行敲门命令:
# 第一步敲1001 nc -zv your_server_ip 1001 # 等待2秒 sleep 2 # 第二步敲2002 nc -zv your_server_ip 2002 # 等待2秒后尝试SSH sleep 2 ssh user@your_server_ip
3. 额外排查点
- 确认iptables规则是否生效:执行
iptables -L -n查看当前规则,确保修改后的规则已经正确加载。 - 检查是否有其他防火墙工具在运行:比如ufw、firewalld,这些可能会覆盖iptables规则,需要先停用或者同步配置。
- 验证SSH服务状态:执行
systemctl status sshd(或者systemctl status ssh),确保服务正常监听22端口。 - 查看系统日志:检查
/var/log/auth.log(Debian/Ubuntu)或者/var/log/secure(RHEL/CentOS),里面会有SSH连接的详细日志,能帮你定位是被防火墙拒绝还是SSH本身的问题。
备注:内容来源于stack exchange,提问作者noobintech
相关产品推荐
相关产品推荐

