
上周帮客户做一批戴尔OS10交换机的安全基线核查用的还是那套老流程先批量登进去看配置再对照等保要求逐项找差距。本以为就是个走流程的活结果登录第一台设备就发现SSH还开着默认端口、管理口acl没写、SNMP用的是缺省社区串而且是一整批设备都这样。那一刻我就知道这份“加固攻略”又得从头写到尾了。戴尔的OS10全称Dell EMC Networking OS10是一套基于Linux内核的企业级网络操作系统主打开放可编程支持原生Bash、Python脚本也有类似传统交换机的命令行分层结构。它和思科IOS、华为VRP最大的区别在于当你敲完配置默认是写到running-configuration里但如果不执行保存操作设备一重启全部打回原形。这一点听着简单却是很多人做安全加固时改完没保存、最后白忙一场的根因。这篇内容不打算只扔命令我会把OS10安全加固这件事拆开讲先讲清楚这系统的配置机制再讲管理面、数据面、协议面、审计面四个维度的加固方法最后用基线核查的完整落地流程把前后串起来。适合正在做等保整改、护网前自查或者第一次接触OS10、想在设备上建立一套可复用安全基线的人参考。1. 先摸清OS10的脾气配置体系与传统交换机的关键差异做安全加固第一步不是急着敲命令而是搞清楚这台设备听谁的、配置是怎么存的、改错了怎么回滚。OS10在这几个方面和传统交换机差别很大很多人踩坑都踩在这一步。1.1 为什么OS10让不少老运维发怵如果你已经习惯在思科或者华为设备上写命令第一次登上OS10通常会有两个不适应第一命令层级粗看差不多但细节完全不同。OS10虽然是命令行分层结构但很多配置语句和IOS并不通用。比如进入端口配置用的是interface ethernet1/1/1而不是GigabitEthernet0/1查看运行配置用的是show running-configuration不是简写的show run。我第一次从IOS切过来时手比脑子快敲了三个Tab都补不出来才意识到这是另一个物种。第二它底层是Linux意味着系统里有一套完整的shell工具链。默认情况下OS10允许你通过system bash直接跳进Linux shell可以看进程、看网络栈、甚至能自己写Python脚本调OpenAPI。这个能力很强大但同时也意味着如果管理面的认证和访问控制没做好攻击者一旦攻破交换机不只是拿到CLI权限还可能拿到一个可交互的系统shell。所以OS10的加固本质上比传统交换机多了一层“主机安全”的考虑。建议第一次接触OS10的人先别急着做业务配置花半小时把show running-configuration、show startup-configuration、write memory这几个基本操作摸熟再谈加固。设备都操作不顺写出来的基线也是空中楼阁。1.2 配置提交与持久化改错了怎么回滚OS10的配置生效机制可以分为“立即生效”和“保存持久化”两步。你在configure terminal下改的配置默认是即时写入内存中的running-configuration的但如果不主动保存重启后就丢了。保存命令在OS10里是write memory或者写成完整形式copy running-configuration startup-configuration。这里有个非常关键的实践点OS10的配置提交可以做差异化回滚。就是说你不一定非要凭记忆去删配置可以先把改动前的running-configuration备份出来再去做加固变更。如果后续发现配置有问题直接对比备份文件把差异部分逐条改回即可。实际操作中我习惯用TFTP或者SCP把原始配置拉到本地文件名按“设备号日期”命名保存至少两份。另外OS10还支持配置回滚点类似快照的思路。在版本较新的OS10上可以通过配置文件管理功能在写入前自动生成备份但不同版本命令略有差异所以最稳妥的做法还是自己手动备份。安全加固最怕的就是改K了别的都白搭。我把几个最常见的操作命令整理成了对照表方便老手快速适应操作意图IOS/华为VRP习惯OS10命令查看运行配置show runshow running-configuration查看启动配置show startshow startup-configuration保存配置write / savewrite memory进入端口配置interface Gi0/1interface ethernet1/1/1查看端口状态show int statusshow interfaces status进入Linux shell无对应功能system bash表格看着简单但每一条都对应着一次“手滑敲错”的机会。尤其是show run所有IOS运维都刻在肌肉记忆里了刚到OS10上会不断打错。我的习惯是给自己一周的适应期重要操作前先敲看命令提示而不是凭肌肉记忆盲打。2. 管理面加固把设备入口锁到最小交换机的管理通道是最容易被外部攻击的入口。OS10默认开放了SSH、HTTPS、HTTP、SNMP、Telnet等多个管理服务如果不对这些入口做最小化控制设备基本等于裸奔在网络上。管理面加固我做四件事管账号、管登录方式、管访问来源、管服务开关。2.1 账号密码策略默认账号和弱密码是第一颗雷戴尔OS10设备出厂时的默认管理员账号通常是admin部分旧版本默认密码是admin新版本要求首次登录修改但如果通过带外管理或者厂家预配置很容易留下默认密码。等保核查里最容易被直接判不合规的一项就是设备存在弱口令或默认口令。账号密码加固的做法分两步第一步关闭或禁用不使用的默认账号。如果设备上存在用不上的内置管理账号直接进入配置模式禁用别留着当后门。OS10(config)# user admin disable第二步为需要保留的账号设置强密码策略并在设备本地开启密码复杂度校验。OS10支持配置最小长度、字符组合要求命令大致如下OS10(config)# system-password complexity enable OS10(config)# system-password minimum-length 12 OS10(config)# system-password minimum uppercase 1 OS10(config)# system-password minimum lowercase 1 OS10(config)# system-password minimum numeric 1登录超时和失败锁定也要一并设置。网络设备管理口长期挂着空闲会话看着没什么实际上等于给别人留了一扇开着的门。我一般把空闲超时调到10分钟以内连续失败次数超过3次锁定5分钟。OS10(config)# system login timeout 10 OS10(config)# system login failed threshold 32.2 SSH算法收紧与密码登录限制现在应该没有任何理由再用Telnet管理交换机了。OS10默认SSH是关闭的需要手动启用这一步很多人会忘。启用后还要做两件事第一关闭密码登录改用密钥认证如果运维团队具备条件的话第二把SSH算法收紧到目前主流的强加密套件。先看SSH是否启用以及用了哪些算法OS10# show ip ssh如果看到允许了比较弱的KEX算法或者CBC模式的加密算法需要显式收紧OS10(config)# ip ssh server enable OS10(config)# ip ssh server algorithms encryption aes256-ctr aes128-ctr chacha20-poly1305 OS10(config)# ip ssh server algorithms mac hmac-sha2-512 hmac-sha2-256 OS10(config)# ip ssh server algorithms kex ecdh-sha2-nistp256严格的生产环境我建议直接禁用密码登录只用密钥。OS10支持把SSH验证方式调整为publickey优先这样即使账号口令被撞库没有私钥也登不进来。提示SSH算法调整前必须确认你的运维终端支持对应算法。很多老版本SecureCRT和某些Linux发行版里较老的OpenSSH客户端对新算法列表会直接罢工。我吃过一次亏把算法收紧后发现自己本机登不上去了最后还是通过带外口进去把算法临时放宽才恢复。正经做法是先改一台终端验证再批量下发。2.3 管理ACL只让运维网段进门管理面加固性价比最高的一项就是给管理通道加ACL限制来源地址。OS10里有专门的管理访问列表机制可以针对SSH、HTTPS、SNMP等管理服务统一限定源网段。我通常会在设备上建一个标准ACL只放行堡垒机或运维跳板机的网段其他地址一律拒绝。OS10(config)# ip access-list standard MGMT-ACL OS10(config-acl)# permit 10.96.10.0/24 OS10(config-acl)# deny any OS10(config-acl)# exit OS10(config)# management access-list MGMT-ACL加了这条之后即使账号密码泄露攻击者也得先过了ACL这道闸才能碰到SSH端口。这是成本最低、收益最高的一道防线不管设备在核心还是接入层都应该配上。这里补充一个容易被忽略的细节管理ACL不仅管SSH和HTTPS要确认它把SNMP、NTP等服务的来源也覆盖进去。SNMP虽然看起来只是监控用的但很多攻击者会拿它做信息收集读一下sysName、sysLocation、路由表设备指纹就摸清了。所以SNMP的来源限制和管理ACL最好是一体的。2.4 关闭清退不必要的管理服务OS10默认会开启一堆管理服务包括HTTP、HTTPS、Telnet、SNMP、FTP等。安全基线里有一个铁律用不到的服务全部关。尤其是HTTP和Telnet明文协议在管理通道上是绝对的红线。OS10(config)# no http server OS10(config)# no telnet server enable如果确实需要图形界面管理只保留HTTPS并且后续也建议通过ACL限制来源。至于SNMP如果监控系统还没接或者暂时不需要也先关掉等需要时再开。提示OS10的Web管理界面在部分版本是通过web-management系列命令控制的不同版本关键字不同。操作前先用show running-configuration | grep -i http之类的命令看一下当前开了哪些服务再逐个关别凭记忆把事情做错。服务面最小化做到位后续发现异常流量的排查面会小很多。3. 接入层的二层安全防护防的不是入侵是内部攻击扩散管理面加固解决的是“从外面进来”的问题但做过护网的人都明白真正的麻烦往往从内部开始有人插了一台陌生设备、公司内部出现DHCP欺骗、某个端口接到了一台私接路由。二层安全防护的价值就在这里——它防的不是传统意义上的入侵而是攻击在内部的横向移动。3.1 DHCP Snooping与动态ARP检测必须成对出现接入层交换机最典型的攻击场景有两种一种是攻击者私接一台DHCP服务器给同网段用户分配恶意网关或DNS把流量引到自己的机器上另一种是伪造ARP报文宣称自己就是网关IP实现中间人劫持。单纯靠人工排查很难抓到必须从二层设备层面做防护。DHCP Snooping的原理并不复杂它把端口分成信任端口和非信任端口信任端口通常连接上联交换机或DHCP服务器允许接收DHCP Offer等消息非信任端口是接普通终端的交换机只允许它发DHCP Discover收到任何DHCP Offer或DHCP Ack响应都直接丢弃。这样一来私接的假DHCP服务器发的Offer根本到不了用户终端。DAI的机制则是在ARP协议层面做过滤交换机通过DHCP Snooping建立的IP-MAC绑定表来校验每一条ARP报文如果报文的IP-MAC映射不在绑定表里直接丢弃。在OS10上先开DHCP Snooping再开DAI顺序很重要OS10(config)# ip dhcp snooping OS10(config)# ip dhcp snooping vlan 10,20,30 OS10(config)# interface ethernet1/1/49 OS10(config-if)# ip dhcp snooping trust OS10(config-if)# exit OS10(config)# ip arp inspection OS10(config)# ip arp inspection vlan 10,20,30 OS10(config)# ip arp inspection validate src-mac dst-mac ip这里有一个必须提醒的坑如果你的接入交换机上存在静态IP设备比如打印机、服务器、部分摄像头这些设备的IP-MAC不在DHCP Snooping表里DAI会直接把它发出去的ARP报文丢掉导致设备“上不了网”。我处理过太多类似的故障最后查下来都是DAI误伤静态IP终端。稳妥的做法是在启用DAI之前先用一段时间的DHCP Snooping学习IP-MAC绑定表导出核对一遍把静态IP设备单独加到白名单里或者给对应端口配置静态绑定然后再打开DAI校验。生产环境千万别把这两个功能一次性全量开一定是在测试交换机上验证没问题后分VLAN灰度放量。3.2 端口安全与STP BPDU Guard接入区腹地封锁接入层端口最大的问题就是“插上就能用”。端口安全这个老功能至今仍然有效核心作用有两个限制端口能学到的MAC地址数量限制未经授权的MAC地址接入。在OS10上接入端口通常这样配置OS10(config)# interface ethernet1/1/1 OS10(config-if)# port-security OS10(config-if)# port-security maximum 2 OS10(config-if)# port-security violation shutdown OS10(config-if)# port-security mac-address sticky解释一下maximum 2表示这个端口最多学习两个MAC地址适合接一台PC加一台IP电话的场景violation shutdown表示超出的MAC地址直接触发端口关闭而不是仅仅丢弃报文。端口shutdown之后需要手动no shutdown恢复让管理员介入处理而不是让攻击者换个MAC继续试。如果办公室有访客临时接入的需求可以单独划分一个Guest VLAN那个VLAN下关掉端口安全或者把阈值调大避免员工正常使用被误伤。STP BPDU Guard是另一道重要防线专门对付有人私接交换机。正常情况下接入端口不应该收到任何STP BPDU报文如果收到了说明有人接了一台交换机形成潜在的二层环路风险。在接入端口上开启BPDU Guard后一旦收到BPDU报文端口会直接进入error-disable状态。OS10(config)# interface ethernet1/1/1 OS10(config-if)# spanning-tree bpduguard enable接入层端口全部开启BPDU Guard是我对每一台接入交换机的强制要求。它不需要依赖任何外部系统纯本地防护效果极好。3.3 风暴控制坏终端也能拖垮整个VLAN广播风暴的根源不一定是恶意攻击一台网卡故障的终端、一个错误的环路、一个陷入死循环的软件都可能让广播流量在几分钟内打满带宽。风暴控制在OS10上可以按广播、组播、未知单播三种类型分别设置阈值。OS10(config)# interface ethernet1/1/1 OS10(config-if)# storm-control broadcast level 5 OS10(config-if)# storm-control multicast level 10 OS10(config-if)# storm-control unicast level 30这里的level是一个近似百分比。接入层终端的广播流量占比通常很低设为5%比较合适组播和未知单播可以稍微宽松一些但也不建议超过20%-30%。阈值设太紧正常业务可能被误伤设太松等于没防护。特别提醒一点风暴控制的阈值和端口带宽有关千兆口和万兆口上同样的数值实际触发的流量大小完全不同。如果你用的是万兆下联口做服务器接入最好根据历史正常流量重新评估阈值别直接抄千兆口的配置。4. 容易被忽视的服务面收紧SNMP、NTP、LLDP与未用端口管理面和数据面加固做完很多人的核查就结束了。但实际上还有一层容易被忽视的服务面它不起眼却常常是审计里被挑毛病的地方。4.1 SNMP默认社区字符串是递给攻击者的钥匙SNMPv1/v2c本身不加密社区字符串就是唯一的“密码”而且很多设备初始配置里用的是public/private这种缺省值。OS10也不例外如果不主动修改设备上的SNMP默认配置可能维持着非常危险的水平。正确做法分三步第一尽量升级到SNMPv3使用认证和加密第二如果监控系统只支持v2c就用高强度随机字符串作为社区字符串不要用public/private/switch这类常见词第三把SNMP只读权限和写权限分开生产环境绝大多数只需要只读权限。OS10(config)# snmp-server community ro ks#8f9d2!zv3q restricted OS10(config)# snmp-server host 10.96.10.20 traps version 3 authpriv monitor在OS10上restricted关键字的作用是限制该社区字符串的访问来源具体可以结合ACL使用。审计时如果发现SNMP还开着v1/v2c并且用的是默认字符串几乎一查一个准。你的监控系统可能只用了几条简单的OID但攻击者拿到社区字符串后能读取整个设备的运行状态和配置摘要这等于把设备底裤给别人看了。4.2 LLDP和未用管理协议信息泄露的隐门LLDP是网络设备之间交换链路信息的协议主要用于拓扑发现。运维角度它很有用但安全角度它同样会把设备型号、端口标识、系统名称、管理地址送给同一链路里的任何人。对于接入层设备面临的威胁模型这些信息是不该暴露的。我建议在接入端口上关闭LLDP只保留上联端口开启甚至可以直接全局关掉。OS10关闭方式比较简单OS10(config)# no lldp enable如果部分端口还需要LLDP做拓扑发现就全局开着在不需要的接入端口上单独no lldp transmit/receive。这里的原则很明确设备对外暴露的信息越多被精准定向攻击的概率就越大。同理还要检查设备是否开启了其他不必要的协议例如FTP server、TFTP server、HTTP server。一个简单的检查思路是show running-configuration里找出所有带server/service/listen的关键字逐个确认还有没有存在的必要发现没有业务依赖的直接关。4.3 NTP看似无关安全审计却离不开它很多做安全加固的人会忽略NTP认为它只是对时。但等保核查里有一条很明确——设备应配置可靠的时间同步。更深一层如果设备日志里的时间戳不准事后追溯攻击路径时根本没法把多个设备的事件串起来安全日志等于白记。OS10配置NTP很简单OS10(config)# ntp server 10.96.10.130 OS10(config)# ntp source 10.96.10.5配置完了验证一下同步状态OS10# show ntp status这里要提醒的是NTP服务器本身也可能成为攻击目标。如果有可能尽量支持NTP认证或者至少从管理网段指定NTP服务器别随便指向公网NTP池毕竟公网NTP服务器的可用性、安全性都不受你控制。还有一个细节如果有多个管理VLAN或VRF确认NTP报文的source地址选择正确否则回包路径不对同步永远不成功。5. 日志与审计面安全加固最后一块拼图很多设备加固做完了却发现遇到安全事件时什么都查不了原因就一个日志没留存。安全加固不只是让设备“防住攻击”还要让设备在发生攻击后能“讲清楚发生了什么”。审计面是整个加固体系的兜底。5.1 本地日志和远程Syslog必须同时配置OS10默认会把日志写到本地缓冲但缓冲容量有限设备重启后日志会丢。合规的做法是配置远程syslog服务器把日志实时推送到集中日志平台。先看当前日志配置OS10# show logging确认本地缓冲开启再配置远程syslogOS10(config)# logging on OS10(config)# logging syslog-server 10.96.10.140如果不同模块的日志优先级不同可以分开配置OS10(config)# logging syslog-server 10.96.10.140 level informational这样设置之后所有info级别及以上的日志都会推送到日志服务器。如果日志平台支持按设备分类入库记得在syslog配置里带上设备标识不然后续检索时几十台设备混在一起对比起来特别痛苦。5.2 日志分级、时间戳与关键告警门限日志级别设置太泛会浪费存储太窄又会漏掉关键信息。我的建议是安全相关模块全部开到informational包括AAA认证、配置变更、接口状态变化、STP事件、端口安全事件转发面里那些高频的debug级别就别开了否则系统负载上不去。时间戳是日志里最容易被忽略的细节。如果设备没配置正确的时区和夏令时日志里的事件时间和实际时间可能差好几个小时事后分析会被这个时间差坑到怀疑人生。OS10可用以下方式确认时间正确性OS10# show clock再配合NTP同步确保设备、NTP服务器、日志平台三方时间基准一致。日志平台本身也要启NTP不然终端时间一致而平台不一致还是白搭。端口安全事件和登录失败告警这类日志建议在日志平台上单独拉一个告警通道。平时不觉得真到出事的时候这几条告警就是最快的定位线索。比如端口安全触发shutdown日志里会明确记录违规MAC地址和端口号直接顺藤摸瓜找到是哪台设备接入了非法终端。5.3 审计记录登录行为和配置变更一个都不能少OS10默认会记录CLI操作和登录事件但需要确认这些日志真的被保存下来。等保测评里经常要求提供“网络设备日志留存至少六个月以上”这个要求单靠设备本地存储是做不到的必须依赖远程syslog归档。我在核查时一定会确认三件事第一AAA认证日志是否记录了下发账号的操作时间第二配置变更操作是否在syslog服务器里有连续记录第三设备管理员执行过的命令是否有迹可循。如果追求更强审计能力可以开启OS10的配置审计标记具体命令不同版本有差异但核心思路是一致的所有写操作都要留痕。提示如果现场条件不具备集中日志平台至少要在设备本地把logging缓冲调大并且在每次变更前后手动备份配置和日志。虽然没有远程日志审计严谨但好过什么都没有。别等到事后被问“当时谁改了什么”才意识到日志根本不存在。6. 基线核查落地流程从采集现状到整改验证配置思路都清楚了最后一步是把“安全加固”真正落到一批设备上。这一步我更愿意把它叫做基线核查落地因为它不是一个一次性动作而是“采集现状—对比基线—分级整改—验证回滚”的完整闭环。6.1 采集现状先摸清每台设备的家底核查的第一步是采集每台设备的现状信息。我习惯用一组固定命令把设备的基础信息整理成清单比如设备型号和OS10版本show version运行配置show running-configuration当前设备资源状态show system statusSSH状态和算法show ip sshSNMP配置show snmp-serverNTP状态show ntp status日志配置与当前缓冲show logging管理ACLshow running-configuration | grep management采集过程建议用脚本批量执行避免手动登一台抄一台的低效。OS10本身支持Python脚本可以通过SSH批量拉取配置也可以借助现成的自动化工具。没有自动化条件的至少写好Shell脚本循环登入把输出按设备名归档。这一步做好了后面所有差距分析才有数据基础。6.2 差距分析与分级整改紧急项、重要项、建议项拿到现状数据后对照基线逐项打勾差异部分按风险分级。我一般会做成这样的表格整改项现状判定整改动作优先级默认账号/弱口令存在admin弱口令禁用默认账号设置强密码策略紧急管理ACL缺失未配置管理ACL添加MGMT-ACL限制运维网段紧急SSH算法过弱允许CBC算法收紧到强加密套件紧急SNMP默认社区串存在public改为高强度随机字符串或SNMPv3紧急DHCP Snooping未启用接入VLAN未配置按VLAN分批次启用先试点后放量重要BPDU Guard缺失接入端口未配置全接入端口启用重要风暴控制缺失无配置按端口带宽评估阈值重要syslog未配置只有本地缓冲接入集中日志平台重要NTP未配置时间不同步配置NTP服务器重要LLDP全局开启信息暴露全局关闭或按端口限制建议紧急项意思很明确涉及设备当前能否被直接攻破比如弱口令、管理ACL缺失、SSH弱算法。这些必须在当天处理完。重要项是在攻击链路上起作用的防护项比如DHCP Snooping、DAI、BPDU Guard可以安排在用维护窗口做。建议项通常不影响直接安全比如LLDP关闭可以随日常变更随手处理。6.3 灰度变更与业务验证先试点、再分批、留回滚批量加固最容易翻车的方式就是一股脑把所有设备全改一遍。设备数量一大总有那么几台配置特殊有的跑着老版本OS10命令语法和当前版本不同有的下联设备是特殊终端DAI一开就炸有的业务用了私有协议风暴控制阈值稍紧就误伤。这些只有实际操作时才会暴露。我的执行顺序是找一台最典型的接入交换机做试点把全部改动做完包含配置保存然后观察一个业务周期确认没告警、没投诉、日志正常才扩大到同一个型号的小批量设备。每完成一批执行diff对比变更前后配置导出一份变更报告留档。变更窗口执行时的固定动作我列一下照着做基本不会漏先备份原配置再做加固变更保存配置验证管理通道可用观察业务流量和日志记录变更前后差异。如果验证阶段发现严重异常直接回滚到备份配置事后再排查原因。提示部分OS10版本的命令在保存时会对配置做解析校验直接报错的配置说明当前版本不支持。出现这种情况不要硬扛先查这台设备的OS10版本号再确认正确的命令写法。我在现场遇到过同一批设备存在两个大版本的情况同一个DHCP Snooping配置在一台能敲进去、另一台直接语法错误。所以统一样本很重要。最后说点我个人的习惯。做这些安全加固我从来不会只依赖一份检查表因为设备到了现场总有超出预期的变化。真正起作用的是“每台设备都按同样的流程走一遍、每一步都留档”这个笨办法。如果你现在手里正有一批OS10要做整改建议先从一台设备把整条链路跑通再批量复制。先把SSH算法、管理ACL、账号策略这三项改掉设备管理入口就安全了大半再花一个维护窗口把二层防护和服务面收紧做完最后把日志和NTP调通收尾。整个过程不必追求一天做完但每一步都要能随时回退。网络安全加固也不例外。