将SSH端口(22)暴露在公网上极易招致自动化脚本和暴力破解攻击。一种简单的应对方法是修改SSH端口号,但这并非真正提升安全性——针对你IP的定向扫描仍会发现端口,不过对于大范围扫描22端口的攻击者来说,你确实会”隐身”。
然而,改端口并不总是可行。你可能有一些自动化脚本或工具依赖默认的22端口,或者你原则上反对任何形式的”隐蔽安全”,即使这种方法在一定程度上是有效的。
另一种常用方案是使用Fail2Ban,它能在客户端多次登录失败后自动封禁其IP,从而阻止暴力破解。
除此之外,还有一种更灵活的方法:端口敲门(Port Knocking)。它在允许访问SSH端口之前,要求客户端先完成一个特定”敲门”动作。触发方式多种多样,例如:
- 向服务器发送特定邮件,由系统处理后临时开放SSH端口;
- 修改某个特定网页内容,服务器定期检查并响应;
- 通过私密聊天渠道(如Telegram)发送指令,服务器监听并执行;
- 甚至是通过短信或Twilio等服务平台通知服务器开放访问。
其中最简单的实现方式,是通过预设的防火墙规则,要求客户端先访问一个”秘密端口”完成敲门,之后防火墙才临时允许该IP连接SSH。
下面我们以Debian 12为例,演示如何配置基于knockd的端口敲门。
一、安装所需软件
假设你的客户端IP是1.2.3.4,敲门端口为55025(可自定义)。
**Debian/Ubuntu系统:**
apt update
apt install knockd iptables-persistent
**RedHat系系统(Alma、Rocky、RHEL等):**
yum install epel-release
yum install knock knock-server iptables-services
二、配置knockd
编辑配置文件:
vi /etc/knockd.conf
写入如下配置:
[options]
UseSyslog
[openSSH]
sequence = 55025
seq_timeout = 5
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 55025,55025
seq_timeout = 5
command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
该配置实现:
- 单次敲门(55025)即临时开放22端口给对应IP;
- 连续两次敲门(55025,55025)则关闭该IP的SSH访问。
三、设置默认防火墙规则
清除现有规则(如有):
iptables -F
默认禁止SSH连接:
iptables -A INPUT -p tcp --dport 22 -j DROP
放行其他必要流量(根据实际调整):
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
保存规则:
**Debian/Ubuntu:**
netfilter-persistent save
**RedHat系:**
service iptables save
四、启动knockd服务
Debian/Ubuntu需额外编辑 /etc/default/knockd,设置:
START_KNOCKD=1
然后启动服务(所有系统):
systemctl enable --now knockd
五、配置客户端敲门工具
- Debian/Ubuntu:
apt install knock - macOS(需Homebrew):
brew install knock - Windows:
从knock项目页下载预编译二进制文件。
六、使用流程
- 敲门开启SSH:
knock your-server-ip 55025 - 连接SSH:
ssh your-user@your-server-ip - 使用后关门(可选):
knock your-server-ip 55025 55025
总结
通过端口敲门,你既保留了SSH默认端口,又显著减少了被自动化工具扫描和攻击的风险。该方法结合防火墙动态规则,实现了”看不见的入口”,适合需要兼顾安全与便利的场景。
📊 结构清晰
🛡️ 安全可靠
💫 独具匠心
📈 数据翔实
🌱 新手友好
🎓 学术参考
💡 启发思考
🎨 文笔优美
🔧 工具推荐
🛒 商业价值
🤔 有道理
🛡️ 安全可靠
💎 干货满满
🔄 转发扩散
👏 写的不错
👏 写的不错
💡 启发思考
🛠️ 实用指南
💻 代码规范
⚖️ 平衡观点
🔮 前瞻性强
支持
🎨 文笔优美
🎯 观点精准
📌 书签保存
辛苦了
📑 文档完整
🛡️ 安全可靠
🔍 分析透彻
支持
⚡ 简洁有力
🎨 文笔优美
📌 重点突出
🌍 国际视野
🚀 技术前沿
📱 移动适配
很赞
后续呢
🕵️ 深度挖掘
写的什么鬼
⚡ 简洁有力
💫 独具匠心
💫 独具匠心
mjj
🎨 文笔优美
mjj
📚 收藏学习
辛苦了
支持
📌 重点突出
🕵️ 深度挖掘
📌 重点突出
🌟 精彩分享
🎯 观点精准
📌 书签保存
🧠 深度好文
🎓 学术参考
💡 启发思考
🌍 国际视野
很赞
🚀 技术前沿
📈 数据翔实
🌱 新手友好
🤝 认同观点
📐 设计精美
🕵️ 深度挖掘
🔍 分析透彻
🌟 精彩分享
🧠 深度好文
🍵 慢慢品味
💎 干货满满
瞎逼
🌪️ 观点犀利
🔮 前瞻性强
🎓 学术参考
🔄 转发扩散
🛒 商业价值
📚 收藏学习
🛒 商业价值
🔍 分析透彻
mjj
🎓 学术参考
📱 移动适配
🤝 认同观点
🤝 认同观点
🌪️ 观点犀利
🔄 转发扩散
📐 设计精美
📱 移动适配
写的什么鬼
⚡ 简洁有力
🚀 技术前沿
📐 设计精美
🔮 前瞻性强
📑 文档完整
🧠 深度好文
🗂️ 分类明确
⏳ 值得细读
📌 书签保存
写的什么鬼
📈 数据翔实
📌 重点突出
🎨 文笔优美
🏗️ 架构合理
🆙 更新及时
🌪️ 观点犀利
辛苦了
🔧 工具推荐
🛡️ 安全可靠
🌐 全球视野
🌪️ 观点犀利
🎓 学术参考
🤝 认同观点
🏗️ 架构合理
💎 干货满满
🕵️ 深度挖掘
帅比
👍 好文推荐!
👍 好文推荐!
💡 启发思考
后续呢
📲 移动优化
🏗️ 架构合理