一、SSH服务未真正关闭
1.现象:防火墙仅阻止了外部访问(如过滤了22端口),但SSH服务仍在运行。
2.验证方法:
# 检查SSH服务状态(系统级)
systemctl status sshd # Systemd系统(如Ubuntu/CentOS)
service sshd status # SysVinit系统
# 检查端口监听状态
netstat -tuln | grep :22
ss -tuln | grep :22
3.解决方案:彻底停止SSH服务
systemctl stop sshd && systemctl disable sshd
4.卸载SSH服务(若无需保留):
apt remove openssh-server # Debian/Ubuntu
yum remove openssh-server # CentOS/RHEL
二、防火墙规则配置不完整
1.常见疏漏:
(1)未覆盖IPV6:防火墙仅限制IPv4的22端口,但SSH可能通过IPv6暴露。
(2)多网卡未全部限制:服务器有多个网络接口(如公网/内网网卡),仅部分接口配置了规则。
(3)动态端口或端口转发:SSH服务可能绑定在非22端口,或存在NAT规则将其他端口映射到22。
2.验证方法:
iptables -L -n -v --line-numbers # 查看完整防火墙规则(以iptables为例)
ip6tables -L -n -v --line-numbers # 检查IPv6规则
iptables -t nat -L -n
3.解决方案:明确禁止所有接口和协议的SSH访问
iptables -A INPUT -p tcp --dport 22 -j DROP
ip6tables -A INPUT -p tcp --dport 22 -j DROP
检查并删除冲突的端口转发规则
三、漏洞扫描工具的研判
1.误报场景:
(1)版本指纹残留:SSH服务虽已关闭,但软件包未卸载,扫描器通过其他途径(如Banner信息)检测到旧版本。
(2)协议模拟欺骗:某些扫描工具可能伪造SSH协议响应,诱导设备返回漏洞特征。
2.验证方法:
(1)手动测试端口响应:
nc -zv <IP> 22 # 测试TCP连通性
nmap -sV -p22 <IP> # 检测端口实际服务
(2)检查已安装的SSH软件版本:
dpkg -l openssh-server # Debian/Ubuntu
rpm -qa openssh-server # CentOS/RHEL
3.解决方案:
(1)完全卸载SSH服务相关软件包。
(2)更新扫描工具规则库,或使用多款工具交叉验证(如Nessus、OpenVAS、Nmap)
四、系统内核或依赖漏洞
1.特殊场景:
(1)检查已安装的OpenSSL版本
(2)SSH客户端漏洞:漏洞可能存在于SSH客户端工具(如openssh-client),而非服务端。
(3)底层库风险:如OpenSSL库存在漏洞(如Heartbleed),即使SSH未运行,依赖库的漏洞仍会被标记。
2.验证方法:openssl version 查看CVE数据库匹配漏洞
3.解决方案:更新所有相关软件包
apt update && apt upgrade openssl openssh-client # Debian/Ubuntu
yum update openssl openssh-clients # CentOS/RHEL
若无需客户端工具,可卸载:
apt remove openssh-client