别跟我提“最佳实践”,先看看你翻过多少车
上周我们有个兄弟团队,新上线的 ASR1000 还没跑满一个月,就被扫描到 SSH 弱密钥。排查下来,配置里还留着 enable password cisco 这种上古密码。说句不好听的,这在 2026 年就是裸奔。
我翻了翻 Reddit 和 HN 上最近的讨论,发现这不是个例。很多人对 IOS-XE 的安全配置还停留在“能通就行”的阶段。更离谱的是,有人把 management 接口直接暴露在公网上,连 ACL 都没挂。
所以今天这篇东西,不跟你扯什么“企业级数字化转型”这种屁话。我们就聊聊那些你大概率会踩坑、但又必须改的配置项。
一、基础配置:别让攻击者笑着进门
1. 主机名和域名是 SSH 的基石
很多人的第一反应是直接配 SSH,结果发现密钥生成失败。为啥?因为你没配域名。IOS-XE 生成 RSA 密钥需要 FQDN,没有域名它直接罢工。
Router(config)# hostname CORE-1
CORE-1(config)# ip domain-name example.com
CORE-1(config)# crypto key generate rsa modulus 2048
注意:别用 1024 位了,2026 年这跟没锁门差不多。至少 2048,有条件上 4096。
2. 密码加密不是可选项
CORE-1(config)# service password-encryption
CORE-1(config)# enable secret MyStr0ng!Pass
service password-encryption 用的是 type 7 加密,这玩意儿其实就是个 base64 变种,防君子不防小人。但聊胜于无。真正要防的是 enable password 这种明文存储——这玩意儿在 running-config 里直接肉眼可见,攻击者看一眼就拿到 super 权限了。
3. 关掉那些没人用的服务
CORE-1(config)# no ip http server
CORE-1(config)# no ip http secure-server
CORE-1(config)# no ip finger
CORE-1(config)# no service tcp-small-servers
CORE-1(config)# no service udp-small-servers
HTTP Server 在旧版本 IOS 上默认是开的。说实话,这玩意儿除了方便你被攻击,我想不出其他用途。用 CLI 不香吗?
二、SSH 配置:别让密钥变成后门
Cisco 在 IOS-XE SSH 最佳实践文档里明确说了,要支持多种认证方式。但很多人只配了密码认证,密钥认证完全没碰。
CORE-1(config)# ip ssh version 2
CORE-1(config)# ip ssh authentication-retries 3
CORE-1(config)# ip ssh time-out 30
CORE-1(config)# ip ssh server algorithm encryption aes256-ctr aes192-ctr
CORE-1(config)# ip ssh server algorithm mac hmac-sha2-256 hmac-sha2-512
CORE-1(config)# line vty 0 15
CORE-1(config-line)# transport input ssh
CORE-1(config-line)# login local
CORE-1(config-line)# exec-timeout 5 0
这里有个坑:exec-timeout 设得太长。我见过有人设成 1440 分钟(24 小时),这跟开着门睡觉没区别。5 分钟是合理值,10 分钟是上限。
三、Management Plane 保护:别让控制面被 DDoS
CORE-1(config)# control-plane
CORE-1(config-cp)# management-plane
CORE-1(config-cp-mgmt)# host 10.0.0.0 255.255.255.0
CORE-1(config-cp-mgmt)# allow ssh
这个配置很多人根本不知道存在。它限制了只有 management 接口能接收 SSH 连接,数据面接口就算配了 SSH 也不会响应。这在生产环境里是救命级别的配置。
四、AAA 与日志:出事了你得有证据
CORE-1(config)# aaa new-model
CORE-1(config)# aaa authentication login default local
CORE-1(config)# aaa authorization exec default local
CORE-1(config)# logging console warnings
CORE-1(config)# logging buffered 16384
CORE-1(config)# logging host 192.168.1.100
重要提示:如果用了 TACACS+ 或 RADIUS,一定要配 fallback 到 local。去年 Cisco 的 ACS 服务器崩过一次,全网设备登不进去,半小时内 NOC 电话被打爆。别问我怎么知道的。
最佳实践对比表
| 配置项 | 不推荐的做法 | 推荐的做法 | 风险等级 |
|---|---|---|---|
| 密码存储 | enable password 明文 | enable secret type 9/scrypt | 🔴 极高 |
| SSH 版本 | SSHv1 | SSHv2 | 🔴 极高 |
| RSA 密钥 | 1024 位 | 2048/4096 位 | 🟠 高 |
| HTTP 服务 | 默认开启 | no ip http server | 🟠 高 |
| VTY 传输 | transport input all | transport input ssh | 🟠 高 |
| 超时时间 | 不设或 >30 分钟 | 5 分钟 | 🟡 中 |
| 日志级别 | logging console debugging | logging console warnings | 🟡 中 |
| Management 接口 | 无限制 | 绑定到特定接口 | 🟡 中 |
FAQ
问:Cisco IOS XE 是不是要 EOL 了?
答:没有。Cisco 在持续更新 IOS XE 版本,最新的 17.x 系列还在活跃开发。但某些旧版本(比如 16.x 早期版本)已经 EOL 了。建议至少跑 17.6 以上的版本。
问:IOS 和 IOS-XE 到底有什么区别?
答:简单说,IOS 是跑在裸机上的单体内核,IOS-XE 是在 Linux 内核上跑一个叫 IOSd 的进程。这意味着 IOS-XE 支持更现代的 Linux 工具链,比如 Guest Shell 里可以跑 Python 脚本。但这也带来了更大的攻击面——Linux 内核的漏洞同样会影响 IOS-XE。
问:Cisco IOS XE 的权限级别怎么配置?
答:默认只有 Level 1(用户模式)和 Level 15(特权模式)。你可以配 0-15 共 16 个级别。但说实话,大部分场景下 1 和 15 就够了。配多了容易把自己搞晕,运维排障的时候发现某个命令执行不了,查半天发现是权限级别设错了。
问:密码用什么哈希算法?
答:Cisco 从 IOS 15.x 开始支持 type 9(scrypt)。这是目前最强的选择。别再用 type 5(MD5)了,2026 年 MD5 的碰撞攻击已经非常成熟。enable algorithm-type scrypt secret 是你的朋友。
最后说两句
写这些东西的时候,我翻了翻最近 Reddit 上的讨论。有人说“Cisco 的文档写得跟屎一样”,我深以为然。但这不是你不做安全加固的理由。
配置这东西,不是配完了就完事了。定期审计比任何一次性的“最佳实践”都重要。我们团队现在每季度跑一次 config 扫描,用 Python 脚本自动检查有没有违反安全基线的地方。被发现一次就扣 KPI——效果拔群。
IOS-XE 是个好平台,但前提是你得把它锁好。