第248篇:禁用不安全协议:Telnet、SNMPv1/v2
关键词
不安全协议、Telnet、SNMPv1、SNMPv2c、明文传输、协议替代、安全加固、SSH、SNMPv3
一、Telnet 的风险与替代
1.1 Telnet 的安全问题
Telnet 是最典型的明文协议——所有数据(包括密码)都不加密:
Telnet 的明文传输问题:
Telnet 会话中的内容:
客户端 服务器
telnet 10.0.0.1
│
Login: admin ──► 用户名明文传输!
Password: Huawei123 ──► 密码明文传输!
─────────────────────────────
system-view ──► 所有命令明文传输!
display current-configuration ──► 配置明文传输!
攻击者可以嗅探到一切:
嗅探抓包 tcpdump:
tcpdump -i eth0 port 23 -A
23:17:30.123456 10.0.0.2.54321 > 10.0.0.1.23
...admin...Huawei123...system-view...
...display current-configuration...
Telnet 的其他风险:
1. 无完整性校验(数据可篡改)
2. 无服务器认证(可中间人攻击)
3. 默认端口 23 经常被扫描
4. 不支持现代加密算法
1.2 SSH 替代 Telnet
SSH 提供加密传输和认证:
SSH v2 的安全特性:
├─ 加密传输(AES/ChaCha20)
├─ 服务器身份认证(主机密钥)
├─ 客户端身份认证(密码/密钥)
├─ 数据完整性校验(HMAC)
└─ 防重放攻击(序列号)
从 Telnet 迁移到 SSH:
# 1. 禁用 Telnet
undo telnet server enable
# 2. 启用 SSH
ssh server enable
ssh server version 2
rsa local-key-pair create
# 3. 配置 VTY 只允许 SSH
user-interface vty 0 4
authentication-mode aaa
protocol inbound ssh # 只允许 SSH
idle-timeout 10 0
# 4. 验证 Telnet 已禁用
display telnet server status
Telnet server: Disabled # 确认已禁用
display ssh server status
SSH version: 2.0
SSH server: Enabled
二、SNMP 协议安全
2.1 SNMPv1/v2c 的安全缺陷
SNMP(简单网络管理协议)用于网络设备监控,但早期版本严重不安全:
SNMPv1/v2c 的安全问题:
1. 明文 community 字符串(相当于密码)
Get-Request community: public ← 明文传输
Set-Request community: private ← 明文传输
抓包即可看到 community 字符串
2. 无认证
任何知道 community 字符串的设备
都可以读取(GET)和修改(SET)设备配置
攻击者知道 "private" 就可以:
├─ 修改设备配置
├─ 关闭接口
├─ 重启设备
└─ 修改路由表
3. 无加密
SNMP 传输的所有数据都是明文
包括设备配置信息、接口流量、路由表
4. 无访问控制(v1/v2c)
只有读 community 和写 community
没有细粒度的 MIB 访问控制
2.2 SNMP 的安全威胁实例
SNMP 攻击实例:
实例 1:SNMP 信息泄露
攻击者使用默认 community "public"
snmpwalk -v2c -c public 10.0.0.1
获取的信息:
├─ 系统信息(型号、版本、运行时间)
├─ 接口列表和 IP 地址
├─ 路由表
├─ ARP 表
├─ 运行配置(部分)
└─ 用户列表
这些信息可被用于后续攻击
实例 2:SNMP 写攻击
攻击者获取了 "private" community
snmpset -v2c -c private 10.0.0.1 \
...1.3.6.1.2.1.2.2.1.7.1 i 2 # 关闭接口 1
可以:
├─ 关闭接口(DoS)
├─ 修改路由(流量劫持)
└─ 重启设备
实例 3:SNMP 放大攻击
攻击者伪造源 IP 发送 SNMP 请求
设备回复的数据远大于请求
用于 DDoS 反射放大攻击
2.3 SNMPv3 的安全增强
SNMPv3 引入的安全模型:
SNMPv3 的安全模型:
┌────────────────────────────────────────────────────┐
│ SNMPv3 安全模型 │
│ │
│ 认证(Authentication): │
│ ├─ MD5 / SHA 哈希(验证消息来源) │
│ └─ 防止伪造 SNMP 消息 │
│ │
│ 加密(Privacy): │
│ ├─ DES / AES(加密传输的内容) │
│ └─ 防止信息泄露 │
│ │
│ 访问控制(View-based Access Control): │
│ ├─ 基于用户和组的 MIB 视图控制 │
│ └─ 细粒度的读/写权限 │
└────────────────────────────────────────────────────┘
SNMPv3 的安全级别:
noAuthNoPriv:无认证无加密(相当于 v2c)
authNoPriv: 有认证无加密
authPriv: 有认证有加密(推荐)
2.4 华为设备 SNMP 配置
# 华为设备从 SNMPv2c 迁移到 SNMPv3 配置
# 旧的 SNMPv2c 配置(不安全)
snmp-agent
snmp-agent community read cipher public
snmp-agent community write cipher private
snmp-agent sys-info version v2c
# 以上必须删除
# 新的 SNMPv3 配置(安全)
snmp-agent
# 创建 SNMPv3 用户(认证 + 加密)
snmp-agent usm-user v3 monitor # 创建用户 monitor
authentication-mode sha2-256 # SHA256 认证
privacy-mode aes256 # AES256 加密
acl 2000 # ACL 限制访问 IP
# 创建 MIB 视图(限制可访问的 OID)
snmp-agent mib-view included system-view
1.3.6.1.2.1.1 # 系统信息
snmp-agent mib-view included interface-view
1.3.6.1.2.1.2 # 接口信息
snmp-agent mib-view included no-write-view
1.3.6.1.6.3.1.1.4 # 限制写操作
# VACM 访问控制
snmp-agent group v3 network-monitor
read-view system-view
write-view no-write-view
notify-view system-view
# SNMP 只监听管理网段
snmp-agent target-host trap address udp-domain
10.0.100.50 params securityname monitor v3
snmp-agent protocol source-interface Vlanif200 # 只从管理口发 SNMP
snmp-agent port 10161 # 使用非标准端口(安全)
# 限制 SNMP 访问 IP
acl number 2000
rule 10 permit source 10.0.100.0 0.0.0.255 # 只允许管理网段
rule 100 deny
!
# 禁用 SNMPv1/v2c
undo snmp-agent sys-info version v1
undo snmp-agent sys-info version v2c
snmp-agent sys-info version v3 # 只允许 v3
# 验证
display snmp-agent sys-info version
SNMP version: v3 # 确认只有 v3
display snmp-agent usm-user
User name: monitor
Group name: network-monitor
Auth mode: sha2-256
Priv mode: aes256
三、其他应禁用的不安全协议
3.1 HTTP 管理
HTTP 管理的问题:
Web 管理页面通过 HTTP(非 HTTPS)传输
用户名和密码明文传输
配置信息明文传输
解决方案:
# 禁用 HTTP 管理
undo http server enable
# 启用 HTTPS
http secure-server enable
http server redirect http to https
# 导入证书
pki import certificate server server-cert.cer
3.2 TFTP
TFTP(Trivial FTP)的问题:
无认证
无加密
使用 UDP 69 端口
任何人都可以读写文件
风险:
配置文件被窃取(含密码)
恶意文件上传(修改配置、上传恶意软件)
替代方案:
SCP / SFTP(基于 SSH 的文件传输)
# 启用 SCP
scp server enable
# 使用 SCP 备份配置
<Huawei> scp vpn-instance default current-configuration
admin@10.0.100.10:backup.cfg
或使用 FTP over TLS
3.3 HTTP 重定向与 DNS(不安全场景)
其他应关注的协议风险:
1. Finger 协议(端口 79)
泄露用户登录信息
禁用:undo finger-server enable
2. DHCP(无防护)
已在第 234 篇详述
启用 DHCP Snooping
3. 未使用的端口
关闭所有未使用的物理端口
interface range GigabitEthernet0/0/5 to GigabitEthernet0/0/24
shutdown
四、迁移方案
4.1 迁移步骤
从旧协议迁移到新协议的步骤:
Phase 1:评估(1 周)
└─ 盘点所有设备上启用的不安全协议
└─ 检查哪些工具/平台依赖这些协议
└─ 确认替代方案的兼容性
Phase 2:部署替代方案(2-4 周)
└─ SSH:部署 SSH 服务器密钥,测试连接
└─ SNMPv3:创建用户,配置认证加密
└─ 更新 NMS 系统(Zabbix/SolarWinds)配置
Phase 3:测试(1-2 周)
└─ 在维护窗口测试 SSH 管理
└─ 测试 SNMPv3 监控
└─ 确认所有监控数据正常
Phase 4:禁用旧协议
└─ 先在非核心设备禁用
└─ 确认无影响后再到核心设备
└─ 保留应急回退方案(针对 Console 口)
4.2 监控脚本示例
# 扫描网络中仍使用不安全协议的设备
# 扫描 Telnet 服务(端口 23)
nmap -p 23 --open 10.0.0.0/24 | grep "open" | wc -l
# 返回 > 0 表示还有设备使用 Telnet
# 扫描 SNMPv1/v2c(端口 161)
snmp-check -t 10.0.0.1 -c public
# 如果可以获取信息 → 仍使用 SNMPv2c
# 批量检查 SNMP 版本
for ip in $(cat device_list.txt); do
result=$(snmpget -v2c -c public $ip 1.3.6.1.2.1.1.1.0 2>&1)
if [ $? -eq 0 ]; then
echo "$ip - SNMPv2c ENABLED (DANGER)"
fi
done
# 华为设备检查命令
display telnet server status
display snmp-agent sys-info version
display http server status
五、半自动化工具与合规检查
5.1 合规检查清单
不安全协议禁用检查清单:
□ Telnet
├─ 检查所有交换机/路由器/防火墙
└─ 确认已禁用 Telnet,使用 SSH
□ SNMPv1/v2c
├─ 检查所有网络设备
└─ 确认已使用 SNMPv3(authPriv)
□ HTTP
├─ 检查 Web 管理是否禁用 HTTP
└─ 确认只使用 HTTPS
□ TFTP
├─ 检查是否启用 TFTP 服务
└─ 确认已使用 SCP/SFTP
□ Finger
├─ 检查 finger 协议状态
└─ 确认已禁用
□ 默认密码
├─ 检查是否仍使用默认密码
└─ 确认所有账户已修改密码
六、总结
| 知识点 | 核心要点 |
|---|---|
| Telnet 风险 | 密码和配置明文传输,可被嗅探 |
| SSH 替代 | 加密传输 + 服务器/客户端认证 |
| SNMPv1/v2 风险 | 明文 community,可被读取和修改配置 |
| SNMPv3 增强 | 认证(SHA)+ 加密(AES)+ 访问控制 |
| HTTP 管理风险 | Web 管理明文传输 |
| TFTP 风险 | 无认证无加密的文件传输 |
| 迁移方案 | 先评估→部署替代→测试→再禁用旧协议 |
| 持续监控 | 定期扫描检查仍有不安全协议的设备 |
七、思考
- Telnet 存在哪些安全风险?为什么 SSH 被推荐作为替代方案?
- SNMPv1/v2c 使用 community 字符串有什么安全问题?
- SNMPv3 相比 SNMPv2c 增加了哪些安全特性?推荐的安全级别是什么?
- 如果发现公司还有设备使用 SNMPv2c 和 "public" community,应该如何处理?
- 从一个旧的 Telnet + SNMPv2c 环境迁移到 SSH + SNMPv3,应该按照什么步骤执行?
下篇预告:第249篇《安全基线检查清单》——网络设备安全基线的完整检查项、配置模板和自动化检查方法。