<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>网络设备 on Zero Day Notes</title>
        <link>https://blog.5772447.xyz/tags/%E7%BD%91%E7%BB%9C%E8%AE%BE%E5%A4%87/</link>
        <description>Recent content in 网络设备 on Zero Day Notes</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh</language>
        <lastBuildDate>Sat, 24 Oct 2026 09:00:00 +0800</lastBuildDate><atom:link href="https://blog.5772447.xyz/tags/%E7%BD%91%E7%BB%9C%E8%AE%BE%E5%A4%87/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>SNMP 仍是 public：内网为何能读走配置？</title>
            <link>https://blog.5772447.xyz/posts/b0ab9ad7/</link>
            <pubDate>Sat, 24 Oct 2026 09:00:00 +0800</pubDate>
            <guid>https://blog.5772447.xyz/posts/b0ab9ad7/</guid>
            <description>&lt;h2 id=&#34;问题背景&#34;&gt;&lt;a href=&#34;#%e9%97%ae%e9%a2%98%e8%83%8c%e6%99%af&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;问题背景&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;公司内网有 32 台交换机、2 台防火墙和 4 台 UPS，统一由 Zabbix 监控。这套监控是五年前搭的，走 SNMPv2c，团体名沿用了厂商默认的 &lt;code&gt;public&lt;/code&gt;（只读）和 &lt;code&gt;private&lt;/code&gt;（读写）。当时的理由很朴素：SNMP 只在内网用，管理网段也不对办公网开放，没必要搞得太复杂。&lt;/p&gt;&#xA;&lt;p&gt;管理网段是 &lt;code&gt;10.10.0.0/24&lt;/code&gt;，办公网段是 &lt;code&gt;10.20.x.0/24&lt;/code&gt;，中间由核心交换机路由。理论上办公终端能 ping 到管理地址，但大家默认“能通不代表能随便访问”，没有在设备上做过任何 SNMP 访问控制。这个假设在季度安全巡检时被打破了。&lt;/p&gt;&#xA;&lt;h2 id=&#34;故障现象&#34;&gt;&lt;a href=&#34;#%e6%95%85%e9%9a%9c%e7%8e%b0%e8%b1%a1&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;故障现象&#xD;&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;安全巡检工程师在办公网一台普通终端上执行 &lt;code&gt;snmpwalk -v2c -c public 10.10.0.1&lt;/code&gt;，直接读出了核心交换机的系统信息、接口列表和 ARP 表。&lt;/li&gt;&#xA;&lt;li&gt;继续用 &lt;code&gt;private&lt;/code&gt; 尝试，33 台设备中有 6 台返回了读写权限，理论上可以通过 &lt;code&gt;snmpset&lt;/code&gt; 修改接口状态、VLAN 描述等对象。&lt;/li&gt;&#xA;&lt;li&gt;交换机 syslog 里出现大量来自办公网段地址的 SNMP 请求，源地址不是监控服务器 &lt;code&gt;10.10.5.20&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;li&gt;巡检报告把“网络设备 SNMP 默认团体名可读写”定为高危，要求限期整改。&lt;/li&gt;&#xA;&lt;li&gt;监控本身没有异常，Zabbix 曲线一切正常——这也解释了为什么这个问题多年没被发现：从运维视角看，SNMP 一直是“好用”的。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;排查过程&#34;&gt;&lt;a href=&#34;#%e6%8e%92%e6%9f%a5%e8%bf%87%e7%a8%8b&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;排查过程&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;第一步复现。在受控的办公终端上执行 &lt;code&gt;snmpget -v2c -c public 10.10.0.1 1.3.6.1.2.1.1.1.0&lt;/code&gt;，返回设备型号和固件版本；再走 &lt;code&gt;1.3.6.1.2.1.4.22&lt;/code&gt;（ARP 表），能把管理网段和服务器的 IP-MAC 对应关系完整拉出来。这说明不是扫描器误报，默认团体名确实可用。&lt;/p&gt;&#xA;&lt;p&gt;第二步查设备配置。Cisco 设备上看 &lt;code&gt;show running-config | include snmp-server community&lt;/code&gt;，Huawei/H3C 设备上看 &lt;code&gt;display current-configuration | include snmp-agent community&lt;/code&gt;，结果很统一：只读团体名 &lt;code&gt;public&lt;/code&gt;、读写团体名 &lt;code&gt;private&lt;/code&gt;，后面没有跟 ACL 编号。也就是说，任何能路由到管理网段的地址都可以访问 SNMP。&lt;/p&gt;&#xA;&lt;p&gt;第三步确认网络路径。核心交换机上管理 VLAN 与办公 VLAN 之间是三层互通，没有 ACL 限制 UDP 161；防火墙的策略也只管出口，不管内网东西向。办公终端 ping 管理地址能通，SNMP 自然也能通。&lt;/p&gt;&#xA;&lt;p&gt;第四步评估影响面。在获得授权的前提下，从一台跳板机对管理网段做 UDP 161 探测，并用常见默认团体名尝试：33 台设备中 27 台响应 &lt;code&gt;public&lt;/code&gt;，6 台响应 &lt;code&gt;private&lt;/code&gt;。响应内容足以画出网络拓扑、定位服务器、识别设备型号和固件版本——这些都是攻击者做横向移动前最想要的信息。&lt;/p&gt;&#xA;&lt;p&gt;第五步确认监控依赖。Zabbix 的 SNMP 接口配置里写的就是 &lt;code&gt;public&lt;/code&gt;，来源地址 &lt;code&gt;10.10.5.20&lt;/code&gt;。这意味着整改不能直接改团体名了事，必须同步改监控，否则会引发大面积“设备不可达”告警。&lt;/p&gt;&#xA;&lt;h2 id=&#34;解决方案&#34;&gt;&lt;a href=&#34;#%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;解决方案&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;整改分两步：先止血，再治本。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;止血（当天完成）&lt;/strong&gt;：删除所有设备的读写团体名 &lt;code&gt;private&lt;/code&gt;，只保留只读；把只读团体名改成强随机字符串；在每台设备上给 SNMP 绑定 ACL，只允许监控服务器 &lt;code&gt;10.10.5.20&lt;/code&gt; 和跳板机访问 UDP 161。监控侧同步更新凭据，分批次改，每批改完立即验证 Zabbix 数据恢复。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;治本（两周内完成）&lt;/strong&gt;：升级到 SNMPv3 的 authPriv 模式，认证用 SHA-256，加密用 AES，彻底避免团体名明文传输。监控模板、设备账号和凭据管理同步调整；不支持 v3 的老设备保留“强团体名 + ACL + 只读”作为补偿措施，并列入淘汰计划。&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;方案&lt;/th&gt;&#xA;          &lt;th&gt;安全性&lt;/th&gt;&#xA;          &lt;th&gt;改造成本&lt;/th&gt;&#xA;          &lt;th&gt;适用场景&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;SNMPv2c 强团体名 + 管理 ACL&lt;/td&gt;&#xA;          &lt;td&gt;中：团体名仍明文，可被嗅探；ACL 限制来源后风险可控&lt;/td&gt;&#xA;          &lt;td&gt;低：改设备配置和监控凭据即可&lt;/td&gt;&#xA;          &lt;td&gt;不支持 v3 的老旧设备过渡&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;SNMPv3 authPriv&lt;/td&gt;&#xA;          &lt;td&gt;高：认证加加密，凭据不在网络上裸奔&lt;/td&gt;&#xA;          &lt;td&gt;中：设备、监控模板、账号体系都要改&lt;/td&gt;&#xA;          &lt;td&gt;主流设备的目标态&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;关闭 SNMP 改用 Agent&lt;/td&gt;&#xA;          &lt;td&gt;高：不暴露 UDP 161&lt;/td&gt;&#xA;          &lt;td&gt;高：需安装和维护 Agent&lt;/td&gt;&#xA;          &lt;td&gt;可装 Agent 的服务器类设备&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;另外补一条管理面收口：把设备管理地址统一放进独立管理 VLAN，在核心交换机上拒绝办公网段直接访问 UDP 161/162，只放行监控服务器和跳板机。这样即使某台设备漏配 ACL，办公终端也无法直接摸到 SNMP。&lt;/p&gt;&#xA;&lt;h2 id=&#34;根因分析&#34;&gt;&lt;a href=&#34;#%e6%a0%b9%e5%9b%a0%e5%88%86%e6%9e%90&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;根因分析&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;直接根因是 &lt;strong&gt;网络设备沿用默认 SNMP 团体名 &lt;code&gt;public&lt;/code&gt;/&lt;code&gt;private&lt;/code&gt;，且管理面没有 ACL，任何能路由到管理网段的终端都能读取甚至修改设备配置&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;更深一层，是把“默认值”当成了“配置”。设备出厂带 &lt;code&gt;public&lt;/code&gt;，装上监控能用，就没人再问这个值意味着什么。SNMPv2c 的团体名本质上是明文密码，抓包就能看到；&lt;code&gt;private&lt;/code&gt; 更是直接给了写权限。再叠加“内网可信”的假设——管理网段对办公网三层可达，却不做任何访问控制——默认值就从“方便”变成了“敞开的门”。&lt;/p&gt;&#xA;&lt;p&gt;还有一层是监控视角的盲区：Zabbix 只关心数据有没有采到，不关心采集通道是否安全；安全巡检只看报告里的端口和口令，很少去 &lt;code&gt;snmpwalk&lt;/code&gt; 一下网络设备。两套体系各看一半，问题就一直悬在中间。&lt;/p&gt;&#xA;&lt;h2 id=&#34;预防措施&#34;&gt;&lt;a href=&#34;#%e9%a2%84%e9%98%b2%e6%8e%aa%e6%96%bd&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;预防措施&#xD;&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;设备入网基线增加“默认团体名/默认口令”检查项，&lt;code&gt;public&lt;/code&gt;、&lt;code&gt;private&lt;/code&gt;、&lt;code&gt;admin&lt;/code&gt; 一律视为不合格，验收后才允许上线。&lt;/li&gt;&#xA;&lt;li&gt;管理面强制 ACL：SNMP、SSH、HTTPS 管理入口只允许监控服务器和跳板机，办公网段默认拒绝。&lt;/li&gt;&#xA;&lt;li&gt;新设备优先 SNMPv3 authPriv；存量设备制定分批升级计划，不能升级的写入风险台账。&lt;/li&gt;&#xA;&lt;li&gt;每季度做一次授权内的 SNMP 自测：从办公网和跳板机各试一次，确认只有预期来源能读。&lt;/li&gt;&#xA;&lt;li&gt;配置变更纳入审计，团体名、ACL、SNMP 用户变更要留记录，避免整改后又被临时需求改回去。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;总结&#34;&gt;&lt;a href=&#34;#%e6%80%bb%e7%bb%93&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;总结&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;监控协议也是攻击面。SNMP 让运维“看得见”设备，也让任何能访问 UDP 161 的人看得见同一批设备——包括 ARP 表、接口拓扑和固件版本。默认团体名不是配置，是欠账；内网也不是安全边界，只是攻击者少走几步路的地方。把管理面收进 ACL 和独立 VLAN，把 SNMPv2c 换成 authPriv，做的其实是一件事：让“能监控”和“谁都能看”彻底分开。&lt;/p&gt;&#xA;&lt;h2 id=&#34;延伸阅读&#34;&gt;&lt;a href=&#34;#%e5%bb%b6%e4%bc%b8%e9%98%85%e8%af%bb&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;延伸阅读&#xD;&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.5772447.xyz/posts/83bf4e7f/&#34; &gt;一次服务器暴露面收敛 Checklist：从端口扫描到凭据治理的落地清单&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.5772447.xyz/posts/37a35d29/&#34; &gt;堵住 NTLM 中继：一次 LLMNR 投毒导致域管理员凭据被窃的排查与加固&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
        </item></channel>
</rss>
