ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

等保2.0下Cisco路由器安全配置自查与加固实战指南

等保2.0下Cisco路由器安全配置自查与加固实战指南 简介一份面向等保2.0合规建设与测评整改的Cisco思科路由器专项检查表适合网络运维、安全工程师及等级保护测评人员使用。资源为单个PDF文件压缩包总大小约158KB内容以表格化检查清单呈现涵盖系统版本、Console口与密码加密、密码复杂度、Telnet远程ACL限制、VTY数量及超时退出等账号安全项也覆盖日志管理、NTP时间同步、路由协议认证、设备冗余备份、访问控制、关闭CDP/HTTP/BOOTP及IP源路由防护等二十余项策略要求。每项均列出检查步骤或命令、是否符合、加固操作记录等字段方便直接对照现网设备逐项自查与整改留痕。目前已有727人学习适合需要快速落地等保2.0网络设备安全要求或准备测评检查的读者参考。1. 等保2.0走进机房Cisco路由器安全配置到底卡在哪等保2.0测评组进机房手里那张Cisco网络设备检查表本质不是漏洞扫描清单而是一组围绕身份鉴别、访问控制、审计、入侵防范的配置行为断言。做一次整改如果只把路由器密码改成强口令测评结论大概率仍然是不符合VTY来源未限制、syslog没有时间同步、路由协议没开认证、CDP还在发报文这些都会逐条被写进问题项。接下来直接把检查表逐条翻译成show命令和running-config里的判断条件覆盖查什么、命令怎么敲、结果怎么判定、不符合时怎么加固。适合自己维护核心路由器的网络工程师也适合准备等保测评整改的一线运维。2. 账号口令与登录通道Console/VTY/Enable 三个核查面等保检查表里“设备基本情况及账号检查”不是只查密码而是按资产身份、控制台口令、远程登录限制、enable秘钥四个层面逐项确认。实际测评中我通常先做只读巡检把所有相关输出保存下来再打勾。不先执行命令只凭“我记得配置过”去应对很容易漏掉某些line或接口下的配置。另外测评师看running-config时只会看当前生效配置不会听你说“之前加了又删了”因此核查命令都必须基于设备当前状态。2.1 设备版本与Console口口令核查检查表第一条“设备品牌、设备类型、设备名称、系统版本信息收集”对应的是资产清点命令本身很简单show version show running-config | section line console 0show version用于确认设备型号和IOS版本在等保测评报告里要写进设备信息一栏和资产台账不符会被记为不符合。版本过老或停止支持本身不一定算安全漏洞但测评师会关注是否还有补丁维护渠道。show running-config | section line console 0只截取Console 0配置段比show running-config全文翻页更高效。判断符合性的重点有三个有没有login语句、有没有password、密码是不是密文存储。如果看到password 7 08...这只是Cisco Type 7弱混淆不是加密可以在几秒内被离线工具解出明文。可靠的做法是使用secret或外部AAA同时开启service password-encryption让配置文件中所有口令字段至少不是肉眼可读的明文。物理机柜加锁属于现场检查项CLI无法查看测评时需要在场人员配合确认机柜锁具与钥匙管理制度。2.2 VTY数量、ACL来源限制与超时退出VTY是远程登录的主要入口等保核查重点不是有没有密码而是“并发入口数量、来源IP、空闲超时、传输协议”四个维度。先看当前配置show running-config | section line vty如果输出是line vty 0 4表示同时开启5条虚拟终端如果是line vty 0 15就是16条。检查表要求“VTY数量限制”不是说数量越少越好而是要与运维规模匹配。对边界和核心路由器我一般保留0 4共5条同时配上ACL只允许网管段访问。配置示例access-list 99 remark NMS-ONLY access-list 99 permit 192.168.10.0 0.0.0.255 access-list 99 deny any line vty 0 4 access-class 99 in transport input ssh exec-timeout 5 0access-class 99 in表示进入VTY时按ACL 99校验源IP只放行10.10.1.0/24网段transport input ssh关闭了Telnet明文通道只保留SSHexec-timeout 5 0表示用户连续5分钟没有任何操作就自动断开其中5是分钟数、0是秒数。注意exec-timeout 0 0在等保检查中直接判不符合现网如果看到这个值先确认业务影响再在变更窗口改成5 0。ACL只限制VTY访问还不够建议把transport input telnet也关闭。若现网确实需要Telnet至少配合transport input telnet ssh并加ACL但等保测评对这种混合开放通常建议整改为SSH。管理员数量多于5人时可把VTY扩展到0 7并在access-class里区分两个网段而不是简单粗暴扩到16条。2.3 enable口令加密与密码复杂度验证enable口令是设备进入特权模式的最后一道门检查表第四条要求“查看是否启用PASSWORD加密功能、查看enable secret的使用”。核查命令组合show running-config | include enable show running-config | include service password-encryption show running-config | include security passwords第一句看有没有enable secret第二句看全局密码混淆开关第三句看是否配置了最小口令长度。如果输出里同时有enable secret 9 $9$...和service password-encryption这项通常判定为符合。Cisco IOS的security passwords min-length 8只强制最小长度不限制字符类别。检查表“密码符合复杂度要求”这条设备只能提供一部分证据。真正达到大小写、数字、特殊字符组合约束需要配合口令管理制度或者把登录认证指向ACS/TACACS/Radius由服务端下发密码策略。这是等保自查里容易被误解的地方不要因为在设备上找不到复杂度算法就认为不符合而应把最小长度配置和公司口令管理制度一起作为应答材料。口令相关核查可以直接用下面这张表做自查底稿检查项目使用的命令符合条件系统版本信息show version型号、版本与资产台账一致Console口口令show running-config | section line console 0有login和password无明文密码enable加密show running-config | include enable使用enable secret无enable password明文VTY数量show running-config | section line vty条目数为5或匹配运维人数VTY来源限制show running-config | section line vty有access-classACL只放行管理网段超时退出show running-config | section exec-timeout非0 0建议5 0密码复杂度show running-config | include passwords有最小长度配置且制度佐证复杂度这张表填的时候“符合/不符合/加固操作记录”三列一定要留痕。尤其是不符合项要写清楚实际输出和整改后的命令否则测评组二次核查时会质疑你的整改有效性。3. 日志、NTP与路由协议认证把运行状态变成可追溯证据等保2.0对审计的核查重点是三条日志开关开了没有、日志时间准不准、关键交互是不是只发生在可信节点之间。Cisco设备很多logging命令存在但没指定buffer或服务器等于没做审计。下面按日志采集、时间同步、路由协议认证三个层面展开正好对应检查表里的“日志管理”与“路由协议安全”。3.1 syslog记录与日志要素核查检查表要求“应对网络设备运行状况、网络流量、用户行为进行日志记录。syslog应包括时间的日期和时间、用户、事件类型”。先取当前日志配置show logging show running-config | section loggingshow logging顶部会显示Syslog logging: enabled/disabled和Log Buffer大小。若logging buffered和logging host都没有平台级日志基本不可查建议先补bufferlogging buffered 65536 informational。logging host 192.168.10.100是把日志转发到syslog服务器。两者都在时本地buffer和远程服务器各存一份设备重启后本地日志丢失远程还有备份。日志要素要与show logging的实际输出对照。如果时间戳是*Mar 1 00:00:10.001说明系统时间没校准到实际时间测评师会认为日志不能准确反映事件发生时刻。用户行为类日志通常由IOS自身产生例如配置变更时的%SYS-5-CONFIG_I: Configured from console by admin这类输出里能看到登录方式和用户名正好满足“用户、事件类型”的要求。如果设备配置了AAA服务器show logging | include CONFIG_I可能显示from 192.168.10.20 by user用户名可追溯到具体自然人。如果只靠设备本地用户名也要确保每个管理员以独立账号登录而不是多人共享一个admin账号否则审计日志无法定位到人。3.2 NTP同步与本地时区配置核查时间不同步日志再全也只是“到了不知道什么时候”。检查表“开启NTP服务保证日志功能记录时间的准确性”通常这样落地show ntp status show ntp associations show clock符合条件很直接show ntp status输出clock is synchronizedshow clock时间接近当前时间。如果显示clock is unsynchronized需要先查UDP 123放通状态及NTP服务器地址。配置客户端时我偏向在管理面ACL里放行NTP流量而不是在业务接口全局放开。典型配置clock timezone CST 8 ntp server 192.168.10.1 iburstclock timezone CST 8把系统时钟设为东八区避免日志使用UTC造成8小时偏差ntp server指定上游时间源iburst表示在开机时快速连发几个包缩短首次同步时间。内网没有可用NTP源时可以用边界路由器做ntp master 3让核心交换机同步它。ntp master 3表示设备自身作为NTP服务器3是stratum层级数值越小优先级越高。如果上游NTP配置了ntp authentication-key客户端还需要ntp authenticate和ntp trusted-key这属于认证项等保检查中是加分项。对多数企业外层NTP同步链路不开放认证也能通过时间准确性核查但日志审计要求严格时建议开启。3.3 路由协议认证防止伪造邻居与路由欺骗检查表“启用动态路由协议(RIPV2/OSPF/EIGRP)时启用路由协议的认证功能”是等保安全区域边界内容。原理上没有认证的路由更新无法判断来源是否可信攻击者只要接入链路上的一台设备就能伪造LSA或路由更新把流量引到恶意位置。启用认证后双方共享密钥不接受未通过校验的报文。以OSPF为例在两端的互联接口下配置interface GigabitEthernet0/0 ip address 10.0.12.1 255.255.255.0 ip ospf message-digest-key 1 md5 OSPF-2024-KEY ip ospf authentication message-digestip ospf message-digest-key定义密钥链编号和MD5密钥ip ospf authentication message-digest指定该接口使用MD5校验。两者必须同时存在只配了key但不启用认证不会发送认证字段两边密钥不一致时邻居关系起不来。验证命令show ip ospf neighbor show ip ospf interface GigabitEthernet0/0 show ip protocolsshow ip ospf neighbor中状态为FULL/ -表示邻接正常若因为认证失败反复震荡日志里会出现%OSPF-5-ADJCHG。show ip protocols用于确认OSPF进程下的Area配置这也是检查表里show ip pro的实际用途。检查表原始命令是缩写的show ip pro输出内容和show ip protocols一致。对于RIPv2接口下使用ip rip authentication mode md5和ip rip authentication key-chainEIGRP则用ip authentication mode eigrp AS md5和ip authentication key-chain eigrp AS name。命令不同但核查逻辑一样有认证就查模式和密钥链两条。检查项核查命令判定条件日志记录show loggingbuffered或remote已开启非全部默认输出时间同步show ntp statusclock is synchronizedOSPF认证show running-config | include ip ospf authentication每个启OSPF的接口都有authentication和keyRIPV2认证show running-config | include ip rip authentication模式md5且配置key-chainEIGRP认证show running-config | include authentication mode eigrp模式md5且配置key-chain路由协议认证变更会中断邻居关系生产环境务必在变更窗口内执行并且一次改一对互连接口避免全网路由振荡。4. 访问控制与非必要服务收敛一张表收掉一半风险检查表最后的“其他内容”是最容易出不符合项的地方。原因是这些服务大多不是平时运维要用的很多设备从上线起就保留厂商默认状态而测评时工程师会逐条核对管理面和协议。收敛思路就一句话凡是业务不需要的协议、服务、端口全部关闭凡是必须保留的管理面全部加密、ACL、认证三件套。4.1 登录警告banner与CDP/HTTP关闭登录警告banner属于安全管理中的警示要求show running-config | include banner可以看到是否配置了banner motd。banner的作用是让未授权访问者在登录前看到授权边界内容通常是一句“仅授权人员可登录所有行为将被记录”。配置示例banner motd ^C Unauthorized access prohibited. All activities logged. ^C^C是定界符不是字符串检查时要求banner必须出现在用户登录之前的提示阶段。有些设备把banner login和banner motd混用一般建议配置motd就足够banner exec留空。CDP是思科专有协议默认开启会把主机名、IOS版本、VLAN、IP地址发给直连设备等于向接入段广播设备指纹。检查表要求“关闭CDP服务”常见做法是no cdp run执行后show cdp neighbors不再返回设备信息。如果网络监控依赖CDP发现拓扑可保留cdp run但在非必要接口下执行no cdp enable逐口关闭。等保测评通常不认可全局开放建议至少边界设备全局关闭。HTTP管理面关闭no ip http server no ip http secure-serverno ip http server关闭明文HTTP管理no ip http secure-server关闭HTTPS管理。如果设备需要HTTPS做远端配置不能全局关闭就必须限制ACL来源并开启ip http authentication local同时配置强口令。检查表的核查命令是show run | i http输出中不应看到ip http server只能看到no ip http server。4.2 TCP/UDP Small Services与IP选项的批量收敛TCP Small Services和UDP Small Services是老版本IOS上默认开启的一组诊断服务包括chargen、echo、discard等端口。对外开放后会被扫描器发现并可能参与流量放大攻击。同理IP Source Route接受源路径选项ip directed-broadcast会把广播作为定向包转发两者都是老旧且危险的IP选项。加固配置可以一次性写入configure terminal no service tcp-small-servers no service udp-small-servers no ip source-route no ip directed-broadcast no ip bootp server end write memory这段配置里每一个no都对应检查表一个核查项no service tcp-small-servers关闭TCP小服务no service udp-small-servers关闭UDP小服务no ip source-route禁止处理带源路由选项的报文no ip directed-broadcast禁止转发定向广播no ip bootp server关闭BOOTP服务防止设备响应外部启动请求。write memory把配置写入startup-config否则设备重启后回到旧的running-config测评师下电验证时会发现配置丢失。部分IOS新版本默认就没有service tcp-small-servers此时running-config里不会出现对应配置。不要为了“看起来有加固动作”而硬塞一条no service tcp-small-servers配置不存在时执行no命令不会报错但会在配置文件里留下无意义条目。提示本次修改涉及的no ip source-route和no ip directed-broadcast在部分业务场景下会影响组播或特殊转发修改前先用show ip traffic观察该类报文计数再决定是否统一关闭。4.3 VTP密码与交换机扩展核查检查表最后一项“SWITCH/VTP密码是否设置”虽然写在路由器的表上但VTP是交换机功能严格说纯路由器不适用带交换模块的路由器才会出现。核查命令show vtp password show vtp statusshow vtp password查看VTP域口令如果显示空或明文说明VTP没有启用密码保护show vtp status确认VTP模式。检查表里写的show vtp pass是show vtp password的缩写IOS命令只要唯一匹配就能执行输入show vtp pass通常也可以但为了报告可读性我会用完整命令。如果VTP工作模式是Transparent或OffVLAN更新不向对等体传播风险小很多。但运维上仍建议为VTP域配置密码防止新接入设备误加入同域VTP并同步VLAN数据库。配置vtp password YourVtpPasswordVTP密码在当前IOS里以Type 7混淆显示且所有同域设备必须一致否则VTP无法正常工作。改VTP密码前要先评估是否为所有交换机设置相同密码不能只在一台核心设备上孤军作战。服务/协议核查命令符合条件Bannershow running-config | include banner有motd且登入前显示CDPshow cdp neighbors空输出或全局配置no cdp runHTTP管理show running-config | include http只有no ip http server/no ip http secure-serverTCP小服务show running-config | include small-servers没有service tcp-small-serversUDP小服务show running-config | include small-servers没有service udp-small-serversSource Routeshow running-config | include source-route有no ip source-routeDirected Broadcastshow running-config | include directed-broadcast有no ip directed-broadcastBootpshow running-config | include bootp有no ip bootp serverVTP密码show vtp password有非空口令且同域一致5. 把等保策略检查表变成自动化基线从show命令到diff报告检查表里的“检查步骤/方法”“符合/不符合”其实是一份非常适合自动化的规则集。手动一台台敲命令一台设备少说20分钟设备一多测评组进场前根本复查不完。我更愿意把表里的核查项固化成一个小脚本每次巡检自动收集命令输出再按正则做判定最后留档。这样“加固操作记录”也有据可查比事后补拍照片更可信。5.1 用PythonNetmiko生成带快照的自查报告脚本前先执行pip install netmiko安装依赖然后用Netmiko连接Cisco IOS设备执行只读命令按预期正则输出PASS/FAIL并写入文本报告#!/usr/bin/env python3 import re from datetime import datetime from netmiko import ConnectHandler CHECK_COMMANDS { version: show version, vty: show running-config | section line vty, logging: show logging, ntp: show ntp status, ospf_auth: show running-config | include ip ospf authentication, global_hardening: show running-config | include no ip source-route|no ip directed-broadcast|no ip bootp server, } EXPECTATIONS { version: rCisco IOS Software, vty: rexec-timeout \d \d, logging: rLog Buffer|Syslog logging: enabled, ntp: rclock is synchronized, ospf_auth: rauthentication message-digest, global_hardening: rno ip source-route, } def main(): device { device_type: cisco_ios, ip: 192.168.10.1, username: ops_reader, password: secret, secret: enable_secret, global_delay_factor: 2, } conn ConnectHandler(**device) conn.enable() stamp datetime.now().strftime(%Y%m%d_%H%M%S) with open(fetc_check_{stamp}.txt, w, encodingutf-8) as f: for name, cmd in CHECK_COMMANDS.items(): out conn.send_command(cmd) f.write(f {name} \n{out}\n) ok bool(re.search(EXPECTATIONS[name], out, re.I)) f.write(fRESULT: {PASS if ok else FAIL}\n\n) conn.disconnect() if __name__ __main__: main()global_delay_factor2针对设备响应慢时增加命令间等待时间真实设备上遇到大量ACL配置时能降低超时误判。conn.enable()进入特权模式show running-config需要特权权限如果只给巡检账号level 1会直接报权限不足。脚本把命令输出原样落到文件遇到正则没命中也只是标记FAIL不会中断保证一次性把所有检查项跑完。想要长期跟踪配置漂移可以把每次生成的etc_check_*.txt纳入版本管理下次巡检后执行diff -u etc_check_20250701_120000.txt etc_check_20250708_120000.txt只关注变化行。配置变更走了正式流程diff里一定包含变更计划中的命令如果diff里出现没人申请过的命令基本可以判定为设备被未授权改动应及时回滚并追日志。本文还有配套的精品资源点击获取
返回列表