简介《网络设备安全加固方案》1.0版是一份面向网络运维与安全从业者的实操型文档针对内网设备普遍缺乏登录限制、Con口未加密、telnet可被任意终端访问等隐患给出从身份认证、访问控制到权限管理的完整加固思路。资源包共1个docx文件约9KB内容以配置命令与策略说明为主便于直接对照设备落地。文档围绕本地控制台认证、telnet的ACL限制、本地用户账户与权限级别划分、syslog日志记录、命令权限控制以及SSH替代telnet等方向展开并附有具体命令示例如user-interface con 0、acl number、local-user admin、command-privilege level等可帮助读者理解最小权限原则与职责分离的配置方法。目前已有156人学习适合需要快速梳理网络设备安全基线、完善内网访问控制策略的初中级工程师参考。1. 网络设备安全加固方案从一台裸奔的交换机说起手里刚拿到一台出厂状态的接入交换机管理口插上网线默认 IP 一配telnet 上去用户名密码都是 admin进去之后display current-configuration一看VTY 线路认证模式是 noneACL 一条没绑SNMP 团体字还是 public。这台设备如果直接扔到办公网里基本等于把大门钥匙插在锁上还贴了张纸条告诉别人钥匙在哪。网络设备安全加固方案要解决的就是这个问题把一台“能用”的设备变成一台“敢用”的设备。它适合所有需要把网络设备接入生产环境的人——不管是企业网运维、机房交付工程师还是做等保整改的安服人员。核心动作就四件事关掉不安全的远程登录方式、用 AAA 把认证授权计费管起来、用 ACL 把管理面流量锁死、把 console 和 VTY 的权限边界划清楚。这四件事做完一台设备的攻击面能砍掉一大半。2. 先搞清楚要关什么门telnet、con 与 AAA 的关系2.1 telnet 为什么必须换成 SSHtelnet 的问题不是“不好用”而是它把包括密码在内的所有数据明文丢在网络上。你在telnet 192.168.1.1之后敲的每一个字符同广播域里任何一台机器抓包都能看到。很多老设备默认开 telnet 是因为早期没有 SSH 实现但现在还留着 telnet 就是纯粹的管理惰性。加固的第一步不是直接undo telnet server enable而是先确认 SSH 已经可用。常见做法是先生成 RSA 密钥对再开启 SSH 服务最后关掉 telnet。顺序反了会把自己关在门外这是血泪经验。以华为 VRP 为例最小可用配置如下# 生成 RSA 密钥对模数建议 2048 位 rsa local-key-pair create # 交互提示输入密钥模数输入 2048 # 开启 SSH 服务 stelnet server enable # 创建本地用户权限级别 15认证方式为密码 aaa local-user netadmin password irreversible-cipher YourStrongPwd2024 local-user netadmin privilege level 15 local-user netadmin service-type ssh quit # 配置 VTY 线路只允许 SSH 接入 user-interface vty 0 4 authentication-mode aaa protocol inbound ssh quit # 确认 SSH 可用后关闭 telnet 服务 undo telnet server enable这段配置的逻辑是先建好 SSH 的“入口”密钥、服务、用户再把 VTY 的接入协议从 telnet 切到 SSH最后才关 telnet 服务。参数上rsa local-key-pair create的模数不要低于 20481024 位在现在的算力面前已经不够看。protocol inbound ssh这一行是关键它让 VTY 只接受 SSH 连接即使 telnet 服务没关telnet 也进不来。注意如果设备同时支持protocol inbound ssh和protocol inbound all加固场景下必须选ssh。有些版本默认是all不改等于没加固。2.2 con 口不是“物理接触就安全”很多人觉得 console 口要插线才能用天然安全。但机房里一台设备被拔掉 console 线插上笔记本的事情并不少见尤其是第三方维护人员进出的时候。console 口如果不设认证任何能物理接触设备的人都能直接拿到最高权限。console 加固的核心是两件事设认证、设超时。以 Cisco IOS 为例# 进入 console 线路配置 line con 0 # 启用密码认证 password YourConPwd2024 login # 设置空闲超时 5 分钟 exec-timeout 5 0 # 禁止 console 口输出日志打断输入 logging synchronous exitexec-timeout 5 0表示 5 分 0 秒无操作就断开这个值不要设太大机房场景下 5 到 10 分钟足够。logging synchronous不是安全配置但它能防止日志输出把你正在敲的命令冲散减少误操作。华为设备对应配置user-interface console 0 authentication-mode password set authentication password cipher YourConPwd2024 idle-timeout 5 0 quit参数含义一致idle-timeout 5 0是 5 分钟 0 秒。注意华为的authentication-mode可以选password或aaa如果设备已经配了 AAAconsole 也走 AAA 更统一但要注意 AAA 服务器不可达时的 fallback 行为别把自己锁死。2.3 AAA 不是“可选加分项”AAA 是认证、授权、计费的统称。很多中小网络里 AAA 被跳过直接用 local-user 本地认证。本地认证不是不行但设备多了之后每台设备单独改密码就是运维噩梦。更重要的是本地认证没有计费记录谁什么时候登录过、做了什么查不到。AAA 的落地分两种规模规模认证方式典型方案适用场景小型网络20 台本地 AAAlocal-user privilege level无 RADIUS 服务器运维人员固定中大型网络≥20 台远程 AAARADIUS/TACACS有统一认证平台需要审计TACACS 和 RADIUS 的选择上TACACS 对命令级授权支持更好适合需要精细控制“谁能敲哪些命令”的场景RADIUS 更通用和现有认证系统集成更方便。我一般会优先推 TACACS因为网络设备加固里“授权”这一环往往比“认证”更关键。华为设备对接 RADIUS 的最小配置# 配置 RADIUS 服务器模板 radius-server template CORP_RADIUS radius-server shared-key cipher RadiusKey2024 radius-server authentication 10.1.1.100 1812 radius-server accounting 10.1.1.100 1813 quit # 在 AAA 中引用 aaa authentication-scheme CORP_AUTH authentication-mode radius local quit authorization-scheme CORP_AUTHZ authorization-mode radius local quit accounting-scheme CORP_ACCT accounting-mode radius quit domain corp.example.com authentication-scheme CORP_AUTH authorization-scheme CORP_AUTHZ accounting-scheme CORP_ACCT radius-server CORP_RADIUS quit quitauthentication-mode radius local的含义是先走 RADIUSRADIUS 不可达时回退本地认证。这个 fallback 很重要否则 RADIUS 一挂所有设备都登不上去。shared-key要和服务器端一致不一致的话认证请求会被直接丢弃现象是“一直提示密码错误”但其实是密钥不匹配这个坑很隐蔽。3. ACL 怎么写才不把自己锁在外面3.1 管理面 ACL 的“先放行自己”原则ACL 加固最常见的翻车场景是写了一条deny ip any any然后应用到 VTY 上结果自己也被踢了。正确的做法是在 ACL 末尾显式放行运维网段再拒绝其他。华为 VRP 的 ACL 配置# 创建高级 ACL 3000用于管理面流量过滤 acl number 3000 # 放行运维网段 SSH rule 5 permit tcp source 10.1.1.0 0.0.0.255 destination-port eq 22 # 放行运维网段 SNMP rule 10 permit udp source 10.1.1.0 0.0.0.255 destination-port eq 161 # 放行运维网段 ICMP rule 15 permit icmp source 10.1.1.0 0.0.0.255 # 拒绝其他所有到管理面的流量 rule 100 deny ip quit # 应用到 VTY user-interface vty 0 4 acl 3000 inbound quitrule 5到rule 15是放行规则rule 100是兜底拒绝。规则编号留间隔是为了以后插入新规则方便不用重新编号。acl 3000 inbound应用在 VTY 上表示只过滤进入设备的流量不影响设备主动发起的连接。注意ACL 应用前先用display acl 3000确认规则顺序和匹配计数。有些平台 ACL 默认是 permit有些是 deny不确认就应用翻车概率很高。3.2 IPv6 ACL 的差异点IPv6 ACL 和 IPv4 ACL 在语法上相似但有几个容易踩的坑。一是 IPv6 没有 ARP邻居发现靠 ICMPv6如果 ACL 把 ICMPv6 全拒了邻居都发现不了设备直接失联。二是 IPv6 ACL 的源地址匹配要用source关键字加前缀长度不能像 IPv4 那样用通配符掩码。华三 IPv6 ACL 示例# 创建 IPv6 高级 ACL 3000 acl ipv6 number 3000 # 放行运维网段 SSH rule 5 permit tcp source 2001:db8:1::/64 destination-port eq 22 # 必须放行 ICMPv6否则邻居发现失败 rule 10 permit icmpv6 source 2001:db8:1::/64 # 拒绝其他 rule 100 deny ipv6 quit # 应用到 VTY user-interface vty 0 4 acl ipv6 3000 inbound quitrule 10放行 ICMPv6 是 IPv6 加固里最容易漏的一条。IPv4 里 ICMP 被拒最多是 ping 不通IPv6 里 ICMPv6 被拒会导致地址解析失败设备直接从网络上消失。3.3 ACL 规则顺序与匹配逻辑ACL 是从上到下逐条匹配匹配到第一条就执行动作不再往下看。所以规则顺序比规则内容更重要。一个常见的错误是把deny ip any any写在放行规则前面结果所有流量都被拒。排查 ACL 问题时先看匹配计数# 华为设备查看 ACL 匹配计数 display acl 3000 # 输出中会显示每条 rule 的 match counter如果某条放行规则的计数是 0说明流量根本没匹配到这条要么是规则顺序问题要么是 ACL 没应用成功。如果兜底拒绝的计数很高说明有非预期流量在尝试访问管理面这时候要去看日志确认来源。4. 加固方案落地时最容易翻车的五个点4.1 关 telnet 之前没确认 SSH 可用现象敲完undo telnet server enable之后SSH 连不上telnet 也连不上只能去机房插 console 线。原因SSH 服务没开、RSA 密钥没生成、VTY 的protocol inbound没改成 ssh三者缺一不可。很多人只关了 telnet没检查 SSH 状态。解决关 telnet 之前先用另一台机器ssh admin设备IP测试登录。登录成功后再关。如果已经锁死只能 console 进去重新配置。4.2 ACL 应用后自己也被拒绝现象ACL 应用到 VTY 后当前会话还能用但断开后重新登录就登不上了。原因ACL 里没有放行自己所在的网段或者放行规则的源地址写错了。当前会话能用是因为 ACL 对已建立的会话不生效新会话才匹配。解决应用 ACL 前先用display acl确认放行规则包含自己的管理网段。如果不确定可以先在 VTY 上应用一个只放行自己网段的 ACL测试通过后再加拒绝规则。4.3 AAA 服务器不可达导致无法登录现象配置 AAA 后RADIUS 服务器宕机所有设备都登不上提示“认证失败”。原因authentication-mode radius没有加local回退RADIUS 不可达时直接拒绝。解决认证方案里始终保留local作为 fallback。华为是authentication-mode radius localCisco 是aaa authentication login default group radius local。本地要保留至少一个应急账号密码放在密码管理器里。4.4 console 口超时设置过长或过短现象超时设太长人走了会话还挂着设太短正在敲命令突然断开。原因exec-timeout或idle-timeout的值没有根据实际运维节奏调整。解决机房现场操作设 10 到 15 分钟远程操作设 5 分钟。如果经常需要长时间查看配置可以用terminal length 0配合分页而不是靠延长超时。4.5 SNMP 团体字没改现象加固做了一堆但 SNMP 还是 public/private被人扫到直接读走全部配置。原因SNMP 加固容易被忽略因为大家注意力都在 telnet 和 ACL 上。解决SNMPv2c 至少改掉默认团体字并且用 ACL 限制访问源。条件允许直接上 SNMPv3用认证和加密。华为配置snmp-agent snmp-agent sys-info version v3 snmp-agent group v3 CORP_GROUP privacy snmp-agent usm-user v3 netadmin CORP_GROUP authentication-mode sha AuthPwd2024 privacy-mode aes128 PrivPwd2024 snmp-agent acl 3000privacy表示同时启用认证和加密authentication-mode sha和privacy-mode aes128是推荐的算法组合。snmp-agent acl 3000复用之前的管理面 ACL限制只有运维网段能访问 SNMP。5. 加固后的验证怎么确认方案真的生效了5.1 从外部做端口扫描加固做完之后从运维网段以外的机器对设备做一次端口扫描确认只开放了预期端口。Linux 下用nmap# 扫描设备常用管理端口 nmap -p 22,23,161,443,80 192.168.1.1预期结果是 22 开放23 关闭161 根据是否启用 SNMP 决定443 和 80 如果没开 Web 管理也应该关闭。如果 23 还开着说明 telnet 没关干净回去检查undo telnet server enable是否执行成功。5.2 用 telnet 命令反向验证虽然加固的目标是关掉 telnet但验证的时候反而可以用 telnet 客户端去测端口通不通。Windows 下开启 telnet 客户端后telnet 192.168.1.1 22如果 22 端口通会看到 SSH 的版本 banner类似SSH-2.0-Huawei。如果 23 端口不通会提示连接失败。这个方法的局限是只能测 TCP 端口不能测 UDP 的 SNMP。另外 Windows 10 默认没开 telnet 客户端需要在“启用或关闭 Windows 功能”里勾选。5.3 检查 AAA 计费记录如果对接了 RADIUS 计费登录设备后去 RADIUS 服务器上查计费日志确认有本次登录的 start 和 stop 记录。没有计费记录说明accounting-mode radius没生效或者设备没有发送计费报文。这个检查能发现“认证走了 RADIUS 但计费没走”的半吊子配置。5.4 配置备份与差异对比加固前后的配置做一次 diff确认所有变更都在预期内。华为设备可以用display current-configuration导出Cisco 用show running-config。重点看 VTY、console、AAA、ACL、SNMP 这几个段落。如果发现多了不认识的配置可能是之前遗留的也可能是加固过程中误操作需要逐条确认。我自己的习惯是每次加固前先备份一份配置加固后再备份一份两份配置存档文件名带日期和设备名。这样出问题的时候能快速回退也能在半年后回头看当时改了什么。网络设备安全加固不是一次性的活设备升级、人员变动、网络调整都可能让加固失效定期复查比一次性配完更重要。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?