第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 风险 无认证无加密的文件传输
迁移方案 先评估→部署替代→测试→再禁用旧协议
持续监控 定期扫描检查仍有不安全协议的设备

七、思考

  1. Telnet 存在哪些安全风险?为什么 SSH 被推荐作为替代方案?
  2. SNMPv1/v2c 使用 community 字符串有什么安全问题?
  3. SNMPv3 相比 SNMPv2c 增加了哪些安全特性?推荐的安全级别是什么?
  4. 如果发现公司还有设备使用 SNMPv2c 和 "public" community,应该如何处理?
  5. 从一个旧的 Telnet + SNMPv2c 环境迁移到 SSH + SNMPv3,应该按照什么步骤执行?

下篇预告:第249篇《安全基线检查清单》——网络设备安全基线的完整检查项、配置模板和自动化检查方法。