最有效拦截未授权SSH请求的方式是防火墙前置白名单过滤。先设默认拒绝,再插入可信IP或网段的ACCEPT规则,并添加状态放行规则保障已有连接不中断;配合SSH配置限制用户、禁用root和密码登录,实现双重防护。

直接用防火墙拦截未授权 SSH 请求,关键不是“加规则”,而是“收入口”——只放行真正需要的来源,其余一律挡在门外。单纯靠日志封 IP 是被动响应,而防火墙前置过滤才是第一道硬屏障。
只允许可信 IP 或网段访问 SSH
这是最有效、最干净的拦截方式。攻击者连连接握手都发不出,自然无法触发登录尝试。
- 用 iptables 时,先设默认拒绝:
iptables -P INPUT DROP,再插入白名单规则,例如:iptables -I INPUT -p tcp -s 203.0.113.45 --dport 22 -j ACCEPT - 允许多个办公网段可逐条添加,如
192.168.10.0/24和10.20.0.0/16,每条都用-I插入,确保优先于 DROP 规则 - 若使用动态公网 IP(如家庭宽带),建议搭配 DDNS 脚本定时更新规则,或改用跳板机+证书认证替代直连
限制单位时间内的新连接数
防不住扫描,但能拖慢暴力破解节奏,让攻击工具失效。
- UFW 用户执行:
sudo ufw limit 22(默认每 30 秒最多 6 个新连接) - firewalld 用户执行:
sudo firewall-cmd --permanent --add-rich-rule='rule service name="ssh" limit value="6/m" reject',再重载 - 注意:限速规则必须放在允许规则之后生效;UFW 自动处理顺序,firewalld 需确认 zone 为 public 或对应区域
配合 SSH 配置做双重过滤
防火墙管“能不能连”,SSH 配置管“连上了认不认”,两者叠加才能堵死漏洞。
- 在
/etc/ssh/sshd_config中启用AllowUsers,例如:AllowUsers admin@192.168.1.0/24 deploy@203.0.113.45 - 禁用 root 登录:
PermitRootLogin no;关闭密码登录:PasswordAuthentication no,强制密钥认证 - 修改默认端口(如 2222)后,防火墙必须同步开放新端口,否则会把自己锁在外面
保留已有连接不中断
设置 DROP 策略后,已建立的 SSH 会话会被断开——这不是误操作,是规则生效的正常表现。
- 务必提前添加状态放行规则:
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT - 这条规则应放在最前面(行号为 1),确保所有已有连接持续可用,再处理新连接请求
- 操作前请确认有控制台、云平台终端或带外访问通道作为备用入口


















