
简介Cisco思科路由器信息安全等级保护等保2.0安全配置及策略检查表.pdf是一份面向网络运维、安全测评与等保合规人员的实操检查工具紧密对标等保2.0对网络设备的安全要求。资源以独立PDF检查表形式提供全包仅1个文件、大小158KB共4页列有设备名称、检查项目、检查步骤/方法、符合情况与加固操作记录等字段可直接打印或对照逐项核查。表格覆盖系统版本信息、Console口密码与物理机柜加锁、密码加密与复杂度、Telnet远程访问ACL限制、VTY数量控制、超时退出、syslog与NTP日志管理、RIPV2/OSPF/EIGRP路由协议认证、关键设备冗余与备份恢复、访问控制策略、登录警告标志以及关闭CDP/HTTP/TCP-small-servers、禁止IP源路由/定向广播/BOOTP、设置VTP密码等21项检查点。每一项均给出show命令或配置命令示例既能帮助运维人员快速定位不合规项也可为等级保护测评和整改加固提供清晰的执行依据。目前已有727人学习下载适合正在准备等保测评或需对思科设备做安全自查的工程师参考使用。1. 思科路由器等保2.0合规先想清楚“边界”再动手配置等保2.0测评组进场前全网整改开关往往落在一台Cisco路由器的命令行上。常见错觉是“做了ACL就算过了边界防护”但真正会在报告里形成控制项的风险大多是管理面裸奔、审计日志没有时间基准、SNMP用的是public这种能被自动化工具直接扫出来的问题。路由器在等保2.0里同时承担区域边界、加密通信和自身安全计算环境三个角色对上是ISP链路对下是VLAN汇聚手里如果没有一张可勾选的策略检查表哪怕配置命令敲得再熟练也很难在整改时限内回答测评组“这个高风险项你拿什么证明”。做这件事之前先要区分路由器和交换机的安全职责差异交换机多数时候管东西向流量路由器管的是南北向进出与路由协议信任所以它的访问控制要落在接口方向、控制平面和远程管理入口上。这篇文章不假设你手里有现成模板也不逐字复读标准而是按我给运营商和企业网做等保整改的常见路径把Cisco路由器等保2.0安全配置的基线命令、核对清单、自动化比对方法拆开讲。做完之后你手里至少会有一份能直接转成PDF的策略检查表以及一套可重复执行的巡检命令。2. 等保2.0安全配置从CLI基线到认证授权的最小可落地集在真实项目里我不会马上翻整本标准而是先按住路由器最容易被攻破的部分远程管理协议、账号口令策略、审计日志。等保2.0通用要求里的“安全计算环境”对网络设备同样适用身份鉴别、访问控制、安全审计、入侵防范、资源控制都要落到命令上。下面这组配置以IOS 15.2及以上和IOS-XE为目标如果先在Cisco Packet Tracer里做验证要注意Packet Tracer对部分安全特性支持有限login block-for和algorithm-type sha256建议在真机或EVE-NG里的IOS镜像上验证。2.1 封死管理面SSH、AAA、密码复杂度与登录失败锁定管理面是整个路由器最危险的地方。如果vty还开着Telnet或者用enable password保存明文口令测评人员从配置里直接就能看到问题登录失败不受限制会成为暴力破解突破口。第一步要把登录入口收敛成“本地账号SSH失败锁定”。configure terminal ! hostname edge-router ip domain-name example.local crypto key generate rsa modulus 2048 ! aaa new-model aaa authentication login default local aaa authorization exec default local ! username operator privilege 15 algorithm-type sha256 secret Op42xStatic! username auditor privilege 5 algorithm-type sha256 secret AuReadOnly! ! service password-encryption security passwords min-length 10 ! ip ssh version 2 ip ssh authentication-retries 3 ip ssh time-out 60 ! login block-for 180 attempts 5 within 120 ! no ip http server no ip http secure-server ! line vty 0 4 login local transport input ssh exec-timeout 10 0 exit这段命令也好理解为“先有账号再启用AAA最后约束vty”。crypto key generate rsa modulus 2048是启用SSH的前提所以先要配好hostname和domain-name否则RSA key生成时可能失败。username operator privilege 15是管理员username auditor privilege 5设为只读把日常维护账号和审计账号分开algorithm-type sha256让口令以哈希形式写进running-config等保检查项“禁止明文口令”靠它通过。login block-for 180 attempts 5 within 120的含义是120秒内累计失败5次就封禁180秒这个参数可以根据运维窗口调整但失败次数建议不要超过5次封锁时间不短于120秒。需要特别注意的是老版本IOS不支持algorithm-type sha25615.1之前可以退回secret方式但最终要看show running-config里有没有出现“enable password”字样的明文口令。vty下exec-timeout 10 0表示10分钟无操作自动断开如果业务不允许断线可以放宽到15分钟但检查表里的等保筛选项只要求“配置超时自动退出”没有强制具体时长。为了确认Telnet真的关了要执行show run | include transport input和show run | include telnet前者有ssh而后者无输出才算配置到位。提示no ip http server会影响一些有Web网管需求的场景如果必须开HTTPS记得在line vty和access-class两层限制源地址不要直接用默认配置。2.2 区域边界ACL从接口层级到控制平面都设卡路由器的区域边界不只在上联口。等保2.0“安全区域边界”要求设备具备访问控制能力很多整改只给上联口挂一条ACL却忘了vty的源地址限制结果内网一台被控机器照样能SSH进路由器。这里我一般分两层做第一层限制谁可以碰设备第二层限制业务流量怎么走。远程管理源限制用标准ACL加access-class实现ip access-list standard MGMT-SOURCE permit host 10.10.20.0 permit host 192.168.10.20 deny any ! line vty 0 4 access-class MGMT-SOURCE inaccess-class检查的是TCP会话的源地址把vty入口约束到运维网段不消耗接口转发资源这在等保检查中对应“远程管理地址限定”。注意必须在ACL末尾显式写deny any否则隐含放行会漏掉所有源。如果路由器上有面向ISP的边界接口我会放一条单向反欺骗ACL。以下是典型上联口的最小配置动态路由部分按你的协议调整ip access-list extended EDGE-IN permit tcp any any established deny ip any 10.0.0.0 0.255.255.255 log deny ip any 172.16.0.0 0.15.255.255 log deny ip any 192.168.0.0 0.0.255.255 log permit icmp any any echo-reply permit ospf any any deny ip any any log ! interface GigabitEthernet0/0 ip access-group EDGE-IN in这段ACL先拒绝私有网段从外部进入核心因为源地址欺骗是边界网关最常见的攻击手段permit tcp any any established只让已经建立TCP连接的返回流量进来避免外部主动连接内网端口。permit ospf any any取决于上联是否跑动态路由如果不跑这一条要去掉。需要重点强调的是ACL里的established只匹配TCP控制位对UDP和ICMP无效所以不要把业务需要的DNS放进来。等保测评时这条ACL对应的是“边界防护能力”但还要看ACL命中计数如果deny log一直大量增长说明有扫描或误放行的问题。2.3 安全审计与时钟源日志、NTP、SNMP的合规基线等保2.0审计要求“事件记录应包含日期、时间、用户、事件类型、是否成功”路由器本身有syslog和timestamp能力但设备时钟不准确时审计记录在测评口径里是不可信的。先看基础配置service timestamps log datetime msec localtime show-timezone service timestamps debug datetime msec localtime show-timezone logging host 192.168.10.30 transport udp port 514 logging trap informational no logging console ! ntp server 192.168.10.20 prefer ntp access-group serve-only 10service timestamps给每条日志打毫秒级时间戳logging trap informational指定送往Syslog服务器的事件级别informational能覆盖大部分安全事件。no logging console不是关闭日志而是防止日志刷屏干扰控制台真正事件还是送到远端。NTP部分用prefer指定主时间源ntp access-group serve-only 10只允许ACL 10内的设备从路由器取时避免它变成开放时间服务器这也是等保控件的加分项。SNMP在Cisco路由器上容易成为漏洞重灾区能关就关不能关至少要把community string换掉并限制来源。等保测评的高风险项里经常出现“SNMP使用public/private”整改配置如下access-list 10 permit host 10.10.20.50 ! snmp-server community StrReadOnly90 ro 10 no snmp-server enable traps这里把community绑定到只读ACL 10上字符串换成随机值no snmp-server enable traps是关掉主动trap减少被枚举的风险。如果生产确实需要写入权限那就需要单独建立写权限ACL并走变更审批不能把读写权限放在同一个community上。配置做完后用show ntp status看时间同步再对照Syslog服务器实际收到的条目确认审计链路完整。3. 用“策略检查表”逐项核对现有路由器配置现场整改不能靠“感觉这台没问题”检查表的意义在于把“是否满足”转换成可判定的检查命令和期望输出。我一般把等保2.0通用要求映射成五列控制点、检查命令、期望结果、对应配置、整改状态。这张表的骨架可以这样建控制点检查命令期望结果对应配置身份鉴别show run | include enable secret|username|aaa authentication无明文enable password账号口令非明文AAA algorithm-type sha256远程管理show run | section line vtytransport input ssh且无telnetvty ACL登录策略show login failures可见block记录且符合阈值login block-for安全审计show run | include logging|ntp serverlogging host与ntp server均存在syslog NTPSNMP访问show run | include snmpcommunity串非public/privatesnmp-server community边界访问控制show access-lists存在入口ACL且有计数接口ip access-group检查表不能只停在文档层面必须能落到命令行执行所以下面分人工和自动两种落地方式。3.1 使用show命令生成人工巡检的原始证据人工巡检适合设备数量在二十台以内的场景。SSH登录路由器后把下面这组命令的输出保存为文本作为整改前的baselineshow running-config show version | include IOS|uptime show ip ssh show login show ntp status show logging | include %SEC|%SYS show snmp community show access-listsshow ip ssh关注SSH版本和认证重试次数show login查看是否发生过登录失败锁定show ntp status确认时钟同步show access-lists里的匹配计数用来判断ACL是否真的被流量命中。注意show running-config里的ACL顺序不能证明它生效所以要把show access-lists的接口方向一并看尤其关注deny计数持续增加的表项。人工巡检容易遗漏的是检查项与输出之间的对应关系。我习惯把每个检查项的show输出用一行#注释粘在表格下方后期生成PDF时不会被人再问“这条是哪个命令查出来的”。3.2 自动比对把检查表跑成Netmiko脚本设备超过二十台时手工敲命令容易出现漏项。比较稳妥的方案是用Netmiko写一个只读巡检脚本只连SSH、只执行show命令、把输出和期望值做字符串匹配。下面是一个针对单台设备的最小示例覆盖vty、SNMP和登录锁定三项from netmiko import ConnectHandler device { device_type: cisco_ios, host: 10.10.20.1, username: operator, password: Pssw0rd, secret: Pssw0rd, } checks { vty: { command: show run | section line vty, expect: transport input ssh, warn: vty 未限制为 SSH有 Telnet 风险, }, snmp: { command: show run | include snmp-server community, expect: StrReadOnly90, warn: SNMP community 异常, }, login: { command: show run | include login block-for, expect: login block-for, warn: 未配置登录失败锁定, }, } with ConnectHandler(**device) as conn: conn.enable() for item, rule in checks.items(): output conn.send_command(rule[command]) if rule[expect] not in output: print(f[FAIL] {item}: {rule[warn]}) else: print(f[OK] {item}: {rule[command]})这段脚本的思路是Netmiko建立SSH会话后进入enable模式通过send_command执行只读命令再用in做子串匹配。expect要写得有区分度比如检查SSH时用“transport input ssh”而不是用“ssh”否则会把RFC注释那段也匹配进去。脚本里的密码不能直接放在代码里生产环境建议通过环境变量或密钥管理器传入。这个脚本的价值不是“自动生成结论”而是让同一时间内多台设备的检查口径一致后续加检查项只需要往checks字典里加一组key。3.3 测评最容易翻车的三个位置第一个是管理VLAN还跑在VLAN 1里。等保2.0没有明确禁止VLAN 1但很多Cisco环境默认把VLAN 1作为管理VLAN一旦vty ACL漏配扫描器直接扫管理地址就能碰到设备。如果业务上无法改至少要让管理VLAN和业务VLAN之间用ACL隔离并通过show vlan brief确认。第二个是SNMP关闭不彻底。很多设备封了UDP 161端口但show snmp里仍然全局生效整改时除了ACL还要在配置里显式加no snmp-server并确认没有残留的snmp-server community。第三个是登录失败锁定没有真正触发过。仅仅配置login block-for但客户端IP被ACL挡在vty外永远到不了密码阶段等保检查时看不到有效防护行为。整改完成后一定要用错误口令试一次再执行show login failures确认路由器产生失败记录这个闭环才算成立。4. 配置加固后的验证与收尾技巧让检查表变成常态化机制等保项目收尾时最忌讳的是交出PDF就解散。路由器配置会不断被业务需求改动检查表如果只覆盖某一时刻下个季度又得返工。这里补两个小技巧让验证结果和配置基线互相印证。4.1 用show命令完成“可验证的合规证据”整改确认时不只要把show running-config贴进PDF更多是提供“配置生效”的证据。比如show login failures里有失败记录show ip ssh显示version 2show ntp status同步到指定服务器。更严格的项目里我会在show输出边上标注抓取时间检查表文件名也用cisco_router_等保2.0_配置检查表_2025xxxx.pdf这种命名避免同名覆盖。show archive config differences show run | include transport input|access-class|snmp-server community第一条用于对比运行配置和启动配置差异第二条是快速收敛到本次加固点。这两条命令输出短适合直接放进PDF页面作为证据附页。4.2 把基线固化为配置片段把前面所有加固命令整理成独立的cisco-router-sec.txt配置片段收敛为几个模板管理面模板、审计模板、边界ACL模板。后续新入网一台路由器只需按VLAN和IP填充变量再合并到当前配置。每次业务调整后先跑一遍第3章的Netmiko脚本再手动看show access-lists里的匹配计数确认新ACL没有把生产流量全部丢掉。真正需要归档的是“配置基线、show输出、检查命令、时间戳”这一组互相印证的材料。检查表可以简洁但必须持续更新让新部署、排障和等保整改共用同一套复核路径。本文还有配套的精品资源点击获取