简介:《信息安全管理制度网络安全设备配置规范》是一份面向信息安全管理与网络运维人员的规范类PDF文档,源自企业实际安全管理制度,内容以防火墙和交换机为核心,逐项列出设备配置的安全基线。文档详细规定了防火墙管理员分级、关闭不安全远程管理方式、访问控制规则次序、审计日志留存、应急响应与灾难恢复;同时覆盖交换机端口安全、VLAN划分、禁用不必要服务、SSH加密管理、日志集中上报等关键操作点,并以清单式检查项呈现,便于直接用于设备入网自查、日常巡检、内部安全培训或制度修订参考。资源包为单份PDF文件,大小仅681KB,内容紧凑,可方便打印分发或存档备查。这份文档当前已有349人学习/下载,适合正在搭建或完善网络安全设备配置规范的企业信息安全团队、网络管理员及等保合规建设人员。
1. 一份给安全管理员照抄的设备加固总纲:防火墙、交换机、路由器逐项落地
做信息安全这一行,最怕的不是攻击者有多厉害,而是你接手一套网络设备时,根本不知道上一任留下了多少后门。前几天整理资料翻出一份《网络安全设备配置规范》,2011年的老文档,X先生编写,版本号1.0,内容却一点不过时——它把防火墙、交换机、路由器三类设备的安全配置拆成了可逐条检查的清单,从管理员分级、ACL次序到关闭Telnet、封禁异常端口,全都有明确说法。这份资料适合谁?不是刚入行的理论派,而是要给内网做基线检查、写整改报告、或者刚接手一堆思科设备不知道从哪下手的从业者。它能解决的核心问题就一个:把"安全"从口号变成一张能照着执行的配置表。今天我就把它拆开,结合我自己的加固经历,把能直接抄作业的部分给你落下来。
2. 防火墙配置规范拆解:管理员分级、规则次序与审计缺一不可
防火墙是内网的第一道门,但很多人配完之后就再也不管了。这份规范把防火墙拆成五个维度:管理员分级、变化控制、规则检查、审计监控、应急响应。我按这个顺序讲,重点放在规则检查上——那是翻车最多的地方。
2.1 管理员分级与变化控制:先把人和配置管住
规范第一条就要求管理员分级,至少分成超级管理员、安全管理员、日志管理员。这个不是走形式。超级管理员负责改配置,安全管理员负责审规则,日志管理员只管看日志,三者权限互斥,出了问题才能追责。实际操作中我会在防火墙管理界面里建三个账号,分别授予不同权限级别,并关闭默认的admin账号的远程登录。
管理方式上,规范明确要求关闭Telnet、HTTP、Ping、SNMP,改用SSH做远程管理。这条在2011年是建议,现在基本是底线了。我一般会顺手把管理口的HTTPS也限制来源IP,只允许跳板机的地址访问。配置备份这块,规范问"配置文件是否备份、如何进行配置同步",我的做法是每天凌晨用脚本抓一次配置,存到专门的备份服务器,保留90天版本。这个习惯救过我一次——有一次防火墙HA切换后配置被覆盖,直接从备份拉回来恢复了。
变化控制里有一条容易被忽略:加固防火墙操作系统,并使用软件的最新稳定版本或补丁,确保补丁来源可靠。很多人图省事,设备买回来三年不升级。我的建议是至少每个季度看一次厂商的安全公告,评估是否有需要紧急修补的漏洞。升级前一定要在测试环境验证,别直接在生产上刷,否则出问题连回滚都难。
2.2 规则检查的细节:规则次序、反欺骗过滤与地址封禁
防火墙规则这条是全文含金量最高的部分。规范明确要求访问控制规则集依从防火墙策略,并且要有正确的次序。它给出的参考次序是:
- 反电子欺骗的过滤(阻断私有地址、从外口出现的内部地址)
- 用户允许规则(允许HTTP到公网Web服务器)
- 管理允许规则(允许管理员SSH到防火墙)
- 拒绝并报警(向管理员报警可疑通信)
- 拒绝并记录(记录用于分析的其它通信)
为什么这个次序重要?因为防火墙是首次匹配机制,规则从上往下执行,第一条命中就不再往下走。如果把"拒绝并报警"放在最前面,所有流量都会先被匹配到,后面的允许规则全废了。我见过有人把拒绝规则堆在前面导致业务全部中断的,排查了半天才发现是规则次序的问题。
反电子欺骗过滤针对的地址段,文档列得很清楚,我在实际配规则时直接照抄:
- 标准的不可路由地址:255.255.255.255、127.0.0.0
- 私有RFC1918地址:10.0.0.0–10.255.255.255、172.16.0.0–172.31.255.255、192.168.0.0–192.168.255.255
- 保留地址:224.0.0.0
- 非法地址:0.0.0.0
注意原文有个笔误"172.16.0.0–172.31..255.255",多了一个点,实际应该是172.31.255.255。使用时要自己纠正。
外出过滤也是必须做的:只允许源IP是内部网的通信通过,源IP不是内部网的直接丢弃并记录。防止内网用户伪造源地址往外发包。NAT方面,规范要求任何和外网有信息交流的机器都必须经过地址转换,外网访问内部机器只能访问NAT后的IP,这样可以隐藏内部拓扑。这个我后面在路由器ACL部分还会讲到具体命令。
防火墙还应该支持"拒绝所有服务,除非明确允许"的默认策略。这条在配置时要注意,很多防火墙默认策略是允许所有,你得手动改成拒绝模式再逐条放行。改的时候一定要先确认自己有远程访问的备用通道,否则可能把自己锁在外面。
2.3 审计监控与应急响应:日志是你唯一的事后证据
审计这块,规范强调特权人员的活动必须鉴别、监控和检查,记录不能修改。对应到操作就是把防火墙的日志发送到独立的日志主机,别存在设备本地——设备重启或被人清了配置,日志就没了。日志传输建议走独立的日志网段或用加密方式,防止被中间人截获篡改。
时间同步是审计的前提。规范要求精确设置并维护防火墙时间,日志记录中要包括时间信息。我一般在防火墙上配置NTP客户端,同步到内网的时间服务器,这样后续追踪攻击时日志时间线才靠谱。没有时间同步的日志,到了应急响应阶段基本没法用。
应急响应这块,规范提了两件事:重大事件要设置报警,比如配合IDS使用;要有灾难恢复计划,并且恢复计划要测试过。很多单位写了灾备方案但从来没演练过,真出事的时候备份不知道怎么恢复。我建议至少半年做一次防火墙配置恢复演练,从备份文件恢复到设备上,确认业务能起来。
3. 交换机加固二十八条:VLAN隔离、端口安全和管理面收敛
交换机这部分原文列了28条要求,条目多但每条都不长。我把它归成三个类别来讲:VLAN与端口隔离、关闭不必要服务、管理面加固。这样操作起来更清晰。
3.1 VLAN与端口安全:从VLAN 1隔离到端口安全
交换机规范里最值钱的一条是"VLAN 1中不允许引入用户数据,只能用于交换机内部通讯"。为什么要这样?因为VLAN 1是所有交换机的默认VLAN,Trunk端口默认放行VLAN 1,如果用户数据放在VLAN 1里,攻击者就能通过Trunk链路跳到其他VLAN。我的做法是把用户端口划到VLAN 10、20这样的业务网段,VLAN 1只保留设备管理,而且管理VLAN单独用一个,不与业务混杂。
VLAN 配置示例(以思科交换机为例)
! 创建业务VLAN,不使用VLAN 1承载用户流量 vlan 10 name Office_Users vlan 20 name Server_Farm vlan 99 name Management ! 将Trunk口native VLAN改为99,避免VLAN 1暴露 interface GigabitEthernet0/1 switchport mode trunk switchport trunk native vlan 99 switchport trunk allowed vlan 10,20,99 ! 关闭未使用端口,并放入隔离VLAN interface range GigabitEthernet0/2-24 shutdown switchport mode access switchport access vlan 99 ! 启用端口安全,限制MAC地址数量 interface GigabitEthernet0/2 switchport mode access switchport port-security switchport port-security maximum 2 switchport port-security violation shutdown switchport port-security mac-address sticky这段配置的逻辑:先把Trunk的原生VLAN从默认的1改成99,防止VLAN 1暴露在Trunk上;再把所有不用的端口shutdown并划进管理VLAN,这样即使有人插网线也进不了业务网;最后在接入端口上启用端口安全,限制最多学习2个MAC地址,超出就shutdown端口。sticky关键字的作用是把第一次学习到的MAC地址固化下来,重启不丢。
关于VTP,规范建议如果可能就关闭VTP,否则设置管理域、口令和pruning并设为透明模式。VTP是用来在交换机间同步VLAN数据库的协议,但它有个知名问题——如果接入一台VTP域配置错误的交换机,整个VLAN数据库可能被清空。所以生产环境我基本都关闭VTP,VLAN配置靠手动或自动化脚本下发,反而更可控。
3.2 关闭不必要服务与管理面加固:把设备自家后门关上
交换机出厂开了很多默认服务,CDP、finger、HTTP server、TCP/UDP小服务,这些在规范里都要求关闭。我实际加固时还会顺手关掉LLDP(如果不用),因为这些协议都会在二层广播设备信息,攻击者抓包就能摸清网络拓扑。
管理面加固这块,规范列得很细:保护管理接口安全、加强con/aux/vty端口安全、密码加密并使用用户方式登录、SSH替代Telnet、设置会话超时、使HTTP server失效。我在给客户做基线检查时,发现大量交换机还是开着HTTP管理,用户名密码还是admin/admin,这等于把管理后门敞开。
交换机管理面加固配置
! 加密所有口令,包括明文密码 service password-encryption ! 关闭HTTP server,只保留HTTPS no ip http server ip http secure-server ! 配置SSH替代Telnet hostname SW-CORE-01 ip domain-name corp.local crypto key generate rsa modulus 2048 ip ssh version 2 ! 关闭辅助端口 line aux 0 no exec transport input none exec-timeout 0 1 ! 加固VTY线路,只允许SSH,不允许Telnet line vty 0 4 transport input ssh login local exec-timeout 5 0注意crypto key generate rsa需要先配置hostname和domain-name,否则会报错,这是很多新手卡住的点。SSH的RSA密钥长度至少要2048位,1024位现在已经被认为不够安全了。VTY线路的transport input ssh是关键,这条命令直接封死Telnet,只允许SSH进入。exec-timeout 5 0表示5分钟无操作自动断开,防止有人挂在终端上不退出。
3.3 交换机日志与AAA:让设备行为可追溯
交换机规范最后几条提到了日志和AAA:打开logging功能并发送日志到专用安全日志主机,配置NTP与时间戳,使用AAA为本地和远程访问提供认证。这几个配置关联在一起,我一般是先配NTP,再配日志输出,最后配AAA。
交换机日志与AAA配置
! 配置NTP时间同步 ntp server 192.168.10.5 ntp update-calendar ! 配置日志远程发送 logging host 192.168.10.20 logging trap warnings logging facility local6 ! 启用AAA认证 aaa new-model aaa authentication login default local aaa authentication enable default enable username admin privilege 15 secret StrongP@ss2024logging trap warnings表示只发送warnings级别及以上的日志,避免日志量过大。如果内网有SIEM平台,logging facility local6可以指定日志设备类型,方便SIEM端做解析。AAA配置里的privilege 15是给管理员账号最高权限级别,secret关键字确保密码以加密形式存储。我见过不少交换机上直接写username admin password admin123的,这在配置里是明文存储,任何能读到配置文件的人都能看到密码。
4. 路由器访问控制实战:ACL配置、端口封禁与物理安全
路由器这章是整份文档里代码最密集的部分,原文给出了完整的ACL配置示例。我把这些命令整理成可直接落地的版本,重点讲三块:入站/出站过滤、关闭辅助线路、外部端口封禁策略表。
4.1 内外网双向ACL:拦截欺骗与非法地址
路由器ACL的核心逻辑是双向过滤:出站方向拒绝源IP不是内网地址的流量,入站方向拒绝源IP是内网地址、保留地址、非法地址的流量。原文给的出站ACL 102和入站ACL 100示例,我整理成更完整的版本。
出站ACL:防止内网伪造源地址(ACL 102)
! 出站过滤:只允许合法内网网段出去,其余拒绝并记录 no access-list 102 access-list 102 permit ip 14.2.6.0 0.0.0.255 any access-list 102 deny ip any any log ! 应用到内网接口的in方向,流量从内网发出经过此接口 interface eth 0/1 description "internal interface" ip address 14.2.6.250 255.255.255.0 ip access-group 102 in入站ACL:拦截伪造内网地址与保留地址(ACL 100)
! 入站过滤:拒绝所有伪造内网源IP的数据包 no access-list 100 access-list 100 deny ip 14.2.6.0 0.0.0.255 any log access-list 100 deny ip 127.0.0.0 0.255.255.255 any log access-list 100 deny ip 10.0.0.0 0.255.255.255 any log access-list 100 deny ip 0.0.0.0 0.255.255.255 any log access-list 100 deny ip 172.16.0.0 0.15.255.255 any log access-list 100 deny ip 192.168.0.0 0.0.255.255 any log access-list 100 deny ip 192.0.2.0 0.0.0.255 any log access-list 100 deny ip 169.254.0.0 0.0.255.255 any log access-list 100 deny ip 224.0.0.0 15.255.255.255 any log access-list 100 deny ip host 255.255.255.255 any log access-list 100 permit ip any 14.2.6.0 0.0.0.255 ! 应用到外网接口的in方向,外部流量进入时先经过此ACL interface eth0/0 description "external interface" ip address 14.1.1.20 255.255.0.0 ip access-group 100 in这两条ACL的逻辑要点:ACL 102应用在内网接口,只放行源地址为14.2.6.0/24的流量,其他全部拒绝并记录日志;ACL 100应用在外网接口,先把所有伪造内网地址、保留地址、组播地址的流量拦掉,再放行外部访问内网的流量。注意ACL 100里每条规则都带了log关键字,这些日志会输出到日志主机,用于事后分析。
通配符掩码和子网掩码是反的,这是配置ACL最容易出错的地方。比如192.168.0.0 0.0.255.255匹配的是192.168.0.0到192.168.255.255整段,千万不要写成0.0.255.0这种,那匹配的就不是你想要的地址段。另外一个常见的坑是ACL 100中deny ip 224.0.0.0 15.255.255.255匹配的是224.0.0.0到239.255.255.255,这是组播地址段,15.255.255.255不是随便写的,刚好覆盖224到239共16个B段地段的通配符掩码。
4.2 端口封禁清单:外部接口必须堵住的服务
原文列了一份很长的端口封禁表,这些是常见攻击木马和危险服务使用的端口。我整理成表格,方便直接对照配置。
| 端口 | 协议 | 服务名称 | 封禁原因 |
|---|---|---|---|
| 1 | TCP/UDP | tcpmux | 潜在DoS放大 |
| 7 | TCP/UDP | echo | 流量反射攻击 |
| 9 | TCP/UDP | discard | 流量反射攻击 |
| 13 | TCP/UDP | daytime | 流量反射攻击 |
| 19 | TCP/UDP | chargen | 流量反射攻击 |
| 37 | TCP/UDP | time | 潜在反射攻击 |
| 69 | UDP | tftp | 无认证文件传输 |
| 111 | TCP/UDP | sunrpc | RPC远程调用风险 |
| 135 | TCP/UDP | loc-srv | DCOM RPC漏洞 |
| 137-139 | TCP/UDP | netbios | SMB攻击面 |
| 161/162 | TCP/UDP | snmp | 弱口令风险 |
| 445 | TCP | netbios(ds) | SMB永恒之蓝等 |
| 512-515 | TCP/UDP | rexec/lpr/rlogin | 远程执行风险 |
| 2049 | UDP | nfs | 无认证文件共享 |
| 6000-6063 | TCP | X Window | 远程显示控制 |
| 6667 | TCP | irc | 僵尸网络C2 |
| 12345 | TCP | NetBus | 木马远控 |
| 31337 | TCP/UDP | Back Orifice | 木马远控 |
配置的时候把这些规则加进外网接口的入站ACL里,用deny语句逐条写。我一般会在ACL 100后面追加:
! 追加封禁高风险端口 access-list 100 deny tcp any any eq 135 access-list 100 deny udp any any eq 135 access-list 100 deny tcp any any range 137 139 access-list 100 deny udp any any range 137 139 access-list 100 deny tcp any any eq 445 access-list 100 deny tcp any any range 6000 6063 access-list 100 deny tcp any any eq 31337 access-list 100 deny udp any any eq 31337注意range关键字后面跟起始和结束端口,用于封禁连续端口段。这里放在ACL 100的末尾时要注意顺序——ACL是顺序匹配的,如果前面有permit语句命中了这些端口,后面的deny就永远不会执行了。所以正确的做法是把这些deny语句放在permit语句之前,或者至少在permit之前放一个deny any any把尾巴封住。
4.3 关闭辅助线路与会话超时:物理接口的隐藏风险
路由器上除了常规接口,还有con、aux、vty三条管理通道。原文给了关闭辅助线路和加固VTY的配置,我把它们修正整理成可直接用的版本。
路由器的控制台、辅助线路和VTY加固
! 关闭辅助端口 line aux 0 transport input none login local exec-timeout 0 1 no exec ! 配置VTY只允许建立SSH连接,并且从ACL 90放行的源地址进来 no access-list 90 access-list 90 deny any log line vty 0 4 access-class 90 in transport input none login local exec-timeout 0 1 no exectransport input none直接把Telnet和SSH都禁了,适用于辅助端口;VTY上transport input none再配合access-class 90 in,表示VTY端口不接受任何远程连接请求,因为ACL 90是deny any。如果确实需要远程管理,就把transport input none改成transport input ssh,并把ACL 90的第一条改成permit来源IP。
no exec是关闭这条线路的执行权限,如果有人物理接入console口,看到的只是提示符但无法执行命令。exec-timeout 0 1表示1分钟无操作自动断开。这段配置的价值在于:即使攻击者物理接触了设备,也无法直接进入配置模式。
5. 设备加固常见问题与排错:基线检查时最容易翻车的五个点
做基线检查做了这么多年,我把最常见的翻车场景整理成踩坑记录,每一条都是真实发生过的问题。
5.1 现象:防火墙规则一改,业务全部中断
原因:把拒绝规则放在了允许规则前面,防火墙首次匹配机制直接命中拒绝规则,所有流量被拦死。
解决:严格按照"反欺骗过滤→用户允许规则→管理允许规则→拒绝并报警→拒绝并记录"的次序配置。改规则前保存当前配置,用show access-list查看当前规则的命中次数,确认哪些规则是真正在使用的。改完后先在非业务高峰期切换,并准备回滚命令。
5.2 现象:交换机VLAN数据库神秘清空
原因:VTP域配置错误或者有人接了一台VTP域ID相同的交换机进网络,VLAN数据库被同步覆盖。
解决:在生产环境禁用VTP,vtp mode transparent或直接vtp mode off。手动维护VLAN列表,用自动化脚本批量下发配置,而不是依赖VTP同步。如果必须使用VTP,设置独立的管理域、强口令,并开启pruning减少不必要的VLAN广播。
5.3 现象:SSH登录失败,提示没有hostkey
原因:执行crypto key generate rsa之前没有配置hostname和ip domain-name,导致密钥生成失败或者RSA密钥长度太短。
解决:按顺序先设置hostname,再设置ip domain-name,最后生成RSA密钥。建议用crypto key generate rsa modulus 2048,生成后用show crypto key mypubkey rsa确认密钥存在。如果之前生成过弱的密钥,先crypto key zeroize rsa清掉再重新生成。
5.4 现象:ACL配置后日志量爆炸,日志主机存储很快打满
原因:ACL规则带了log关键字,但没有限流或者没有设置日志级别,每秒成千上万条日志涌向日志服务器。
解决:把logging trap级别调到warnings或errors,避免info级别全量记录;配置日志速率限制,logging rate-limit console和logging rate-limit all。另外优先在ACL前面加一条permit语句放行正常业务流量,这样只有被拒绝的可疑流量才产生日志,日志量能减少90%以上。
5.5 现象:交换机timeout导致远程配置中断
原因:加固时把vty的exec-timeout 0 1配得太短,管理员操作稍微慢一点就被踢下线,配置没保存完就断开了。
解决:exec-timeout设置一个合理值,比如控制台用exec-timeout 10 0(10分钟),VTY用exec-timeout 5 0(5分钟),在安全和易用性之间取平衡。关键是所有远程加固操作都要先写reload in 5留一条后路,万一配置错了还能自动回滚。
6. 把规范落成可执行的Checklist:三种验证方法与自动化巡检
这份文档每一条都能执行,但真正难的是让它变成持续运行的检查机制,而不是检查时翻一遍纸质文档。我从这个规范里抽出了可自动化的部分,做成了一套我自己在用的验证方法。
物理安全与账号口令检查是每月一次的硬动作。我会用脚本批量登录设备,检查是否有未关闭的console端口、是否有默认口令、是否有共享账号。带外管理是规范反复强调的点,如果条件允许,每个机房的设备管理口都走独立的带外网段,不与业务网混跑。有些不方便做带外的环境,至少给管理面分配一个独立的VLAN,禁止业务网段直接访问。
配置基线核查可以用Python脚本实现,思路是SSH登录设备后拉取running-config,和基线配置做比对。我用Paramiko写过一个简单的巡检脚本:
import paramiko import difflib def check_device(ip, username, password, baseline_file): # 连接设备,拉取运行配置 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(ip, username=username, password=password, look_for_keys=False) stdin, stdout, stderr = ssh.exec_command('show running-config') running_config = stdout.read().decode().strip() # 读取基线配置 with open(baseline_file, 'r') as f: baseline = f.read().strip() # 做差异比对,输出不一致的配置项 diff = difflib.unified_diff( baseline.splitlines(), running_config.splitlines(), fromfile='baseline', tofile='running', lineterm='' ) changes = [line for line in diff if line.startswith('+') or line.startswith('-')] if changes: print(f'{ip} 存在配置漂移:') for change in changes: print(f' {change}') else: print(f'{ip} 基线检查通过') ssh.close() # 批量检查设备,设备列表存于devices.txt if __name__ == '__main__': with open('devices.txt', 'r') as f: devices = [line.strip() for line in f if line.strip()] for device in devices: # 设备格式为 ip,username,password ip, user, pwd = device.split(',') check_device(ip, user, pwd, 'baseline.cfg')这个脚本的逻辑很简单:SSH登录设备执行show running-config,拿输出和基线文件做diff,任何增删都视为配置漂移并输出。参数说明:set_missing_host_key_policy允许自动接受主机密钥,在生产环境建议改成严格校验模式,防止中间人攻击;look_for_keys=False避免在本地目录找密钥文件,确保走密码认证。
跑这个脚本前有两个坑要知道:一是设备必须开SSH服务,最好用独立的管理账号,权限只给只读(privilege 1或level 1),避免巡检账号有配置权限;二是部分老设备不支持Paramiko默认的SSH算法,需要在ssh.connect里指定allow_agent=False和disabled_algorithms参数。我从那以后每次做基线巡检,都强制走一遍这个脚本——先拉配置,再做diff,最后把结果发到群里让大家确认。这个习惯坚持了三年,帮我抓住了至少五次配置漂移,每一次都是差点酿成事故的隐患。
最后提醒一点:这份2011年的规范在SNMP的建议上还停留在SNMPv2,现在更稳妥的做法是直接启用SNMPv3并配置认证和加密参数,或者干脆关闭SNMP。规范的价值在于框架和思路,具体到实施细节,还是要结合厂商当前版本的安全建议。希望这份整理帮你在做设备加固时少走一些弯路。
本文还有配套的精品资源,点击获取