第249篇:安全基线检查清单
关键词:安全基线、配置核查、等保合规、CIS Benchmark、配置审计、自动化巡检、配置标准化
一、引言
安全基线(Security Baseline)是一组最低限度的安全配置要求,定义了网络设备在上线前必须满足的安全标准。没有基线的网络安全建设如同没有标准的建筑工程——每台设备的配置因人而异,安全隐患无法系统性排查,合规审计无从下手。
安全基线检查不是"一次性任务",而是贯穿设备全生命周期的常态化工作。从设备初始化、上线前核查、定期巡检到变更后的回归检查,基线检查为网络安全提供了可量化、可审计的保障机制。
二、安全基线框架
2.1 基线分类体系

2.2 交换机安全基线检查清单
2.2.1 访问控制检查项
| 序号 | 检查项 | 要求 | 检查命令 | 合规标准 |
|---|---|---|---|---|
| AC-01 | 无默认账号 | 禁用 initial 默认账号 | display local-user initial |
等保三级 |
| AC-02 | 管理员密码复杂度 | ≥8 位,含大小写字母+数字+特殊字符 | display local-user verbose |
CIS |
| AC-03 | 密码有效期 | ≤90 天 | display local-user verbose |
CIS |
| AC-04 | 密码历史检查 | 至少记住最近 5 次密码 | display aaalimit password |
CIS |
| AC-05 | 登录失败锁定 | ≤5 次失败锁定 ≥15 分钟 | display aaalimit login |
CIS |
| AC-06 | 账号权限分级 | 非所有账号均为 level 15 | display local-user |
最小权限 |
| AC-07 | 首次登录强制改密 | 启用 first-login | display local-user verbose |
CIS |
2.2.2 协议安全检查项
| 序号 | 检查项 | 要求 | 检查命令 | 合规标准 |
|---|---|---|---|---|
| PR-01 | Telnet 禁用 | VTY 仅允许 SSH | display this interface vty 0 |
等保三级 |
| PR-02 | SSH 版本 | 仅启用 SSHv2 | display ssh server status |
CIS |
| PR-03 | HTTP 禁用 | 仅启用 HTTPS | display http server |
CIS |
| PR-04 | SNMP 版本 | 使用 SNMPv3 | display snmp-agent |
CIS |
| PR-05 | SNMP ACL | 限制 SNMP 访问源 | display snmp-agent |
CIS |
| PR-06 | CDP/LLDP | 非必要接口关闭 | display this interface |
CIS |
2.2.3 网络安全检查项
| 序号 | 检查项 | 要求 | 检查命令 | 合规标准 |
|---|---|---|---|---|
| NW-01 | VLAN 划分 | 至少划分管理 VLAN 和业务 VLAN | display vlan |
等保三级 |
| NW-02 | 管理 ACL | VTY 接口配置管理 ACL | display this interface vty 0 |
CIS |
| NW-03 | DHCP Snooping | 启用,信任端口正确配置 | display dhcp snooping |
CIS |
| NW-04 | 端口安全 | 接入端口限制 MAC 数量 | display port-security |
CIS |
| NW-05 | STP 保护 | BPDU 保护/根保护启用 | display stp brief |
CIS |
| NW-06 | 广播风暴抑制 | 启用 storm-control | display storm-control |
CIS |
| NW-07 | 未用端口关闭 | 未使用端口 shutdown | display port |
CIS |
2.2.4 审计日志检查项
| 序号 | 检查项 | 要求 | 检查命令 | 合规标准 |
|---|---|---|---|---|
| AU-01 | Syslog 启用 | 配置远程 Syslog 服务器 | display info-center loghost |
等保三级 |
| AU-02 | 时钟同步 | 配置 NTP 服务器 | display ntp status |
CIS |
| AU-03 | 操作日志 | 记录配置变更 | display log configuration |
CIS |
| AU-04 | 日志级别 | ≥ informational | display info-center source |
CIS |
| AU-05 | 配置备份 | 定期自动备份 | display timer task |
CIS |
2.2.5 系统安全检查项
| 序号 | 检查项 | 要求 | 检查命令 | 合规标准 |
|---|---|---|---|---|
| SY-01 | Banner 配置 | 显示安全警告信息 | display banner |
CIS |
| SY-02 | 固件版本 | 使用最新稳定版本 | display version |
CIS |
| SY-03 | 无用服务关闭 | 关闭 unused 服务 | display this |
CIS |
| SY-04 | 文件权限 | 配置文件权限保护 | display file |
CIS |
2.3 防火墙安全基线检查清单
| 序号 | 检查项 | 要求 | 检查命令 | 合规标准 |
|---|---|---|---|---|
| FW-01 | 默认策略 | 区域间默认 deny | display security-policy |
等保三级 |
| FW-02 | 策略最小化 | 无 service any 策略 | display security-policy all |
CIS |
| FW-03 | 策略日志 | 所有策略启用日志 | display security-policy |
等保三级 |
| FW-04 | NAT 策略 | 仅必要的地址转换 | display nat session |
CIS |
| FW-05 | IPS 启用 | 入侵防御功能启用 | display ips status |
等保三级 |
| FW-06 | 应用识别 | 启用应用识别引擎 | display application status |
CIS |
| FW-07 | 防病毒 | 启用防病毒扫描 | display av status |
等保三级 |
| FW-08 | URL 过滤 | 启用 URL 分类过滤 | display url-filter status |
CIS |
| FW-09 | 会话超时 | 合理的会话超时时间 | display firewall session aging |
CIS |
| FW-10 | 管理界面 | 仅 HTTPS + SSH 管理 | display this |
CIS |
三、自动化基线检查实施
3.1 基线检查脚本(Python + Netmiko)
#!/usr/bin/env python3
"""
网络设备安全基线自动检查脚本
支持华为 VRP 设备(交换机/路由器/防火墙)
"""
from netmiko import ConnectHandler
import json
import csv
from datetime import datetime
# 设备清单
devices = [
{"host": "10.10.100.10", "username": "admin", "password": "xxx", "device_type": "huawei"},
{"host": "10.10.100.11", "username": "admin", "password": "xxx", "device_type": "huawei"},
]
# 基线检查项定义
baseline_checks = {
"AC-01_Default_Account": {
"name": "默认账号检查",
"command": "display local-user initial",
"pass_condition": "不存在", # 如果命令报错则通过
},
"PR-01_Telnet_Disabled": {
"name": "Telnet 禁用检查",
"command": "display this interface vty 0",
"fail_pattern": "telnet", # 如果输出包含 telnet 则失败
"pass_pattern": "protocol inbound ssh",
},
"PR-02_SSH_Version": {
"name": "SSH 版本检查",
"command": "display ssh server status",
"pass_pattern": "version 2",
},
"AU-01_Syslog": {
"name": "Syslog 配置检查",
"command": "display info-center loghost",
"pass_pattern": "loghost", # 如果存在 loghost 配置则通过
},
"AU-02_NTP": {
"name": "NTP 配置检查",
"command": "display ntp status",
"pass_pattern": "synchronized",
},
"SY-01_Banner": {
"name": "Banner 检查",
"command": "display banner",
"pass_pattern": "warning|authorized|unauthorized",
},
}
def check_device(device, checks):
"""检查单个设备的安全基线"""
results = []
try:
conn = ConnectHandler(**device)
conn.enable()
for check_id, check in checks.items():
try:
output = conn.send_command(check["command"], read_timeout=30)
# 判断合规状态
passed = False
if "fail_pattern" in check:
passed = check["fail_pattern"] not in output.lower()
if "pass_pattern" in check:
passed = check["pass_pattern"] in output.lower()
if "pass_condition" == check.get("pass_condition"):
passed = True # 命令报错视为通过
results.append({
"check_id": check_id,
"name": check["name"],
"status": "PASS" if passed else "FAIL",
"output_snippet": output[:200].strip(),
})
except Exception as e:
results.append({
"check_id": check_id,
"name": check["name"],
"status": "ERROR",
"error": str(e)[:200],
})
conn.disconnect()
except Exception as e:
return {"error": str(e), "results": []}
return results
def generate_report(all_results):
"""生成基线检查报告"""
report = {
"report_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
"summary": {},
"device_results": all_results,
}
# 统计
total = 0
passed = 0
failed = 0
for device_result in all_results.values():
for r in device_result:
total += 1
if r["status"] == "PASS":
passed += 1
elif r["status"] == "FAIL":
failed += 1
report["summary"] = {
"total_checks": total,
"passed": passed,
"failed": failed,
"compliance_rate": f"{(passed/total*100):.1f}%" if total > 0 else "N/A",
}
return report
if __name__ == "__main__":
all_results = {}
for device in devices:
print(f"Checking {device['host']}...")
all_results[device["host"]] = check_device(device, baseline_checks)
report = generate_report(all_results)
# 输出 JSON 报告
with open("baseline_report.json", "w") as f:
json.dump(report, f, indent=2, ensure_ascii=False)
# 输出 CSV 摘要
with open("baseline_summary.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow(["Device", "Check_ID", "Check_Name", "Status"])
for host, results in all_results.items():
for r in results:
writer.writerow([host, r["check_id"], r["name"], r["status"]])
print(f"\n合规率: {report['summary']['compliance_rate']}")
print("报告已保存: baseline_report.json, baseline_summary.csv")
3.2 华为设备基线核查命令速查
# ===== 一键基线核查命令集 =====
# 1. 访问控制
display local-user
display local-user verbose
display aaalimit all
# 2. 协议安全
display this interface vty 0
display ssh server status
display snmp-agent
display http server
# 3. 网络安全
display vlan brief
display current-configuration | include acl
display dhcp snooping brief
display stp brief
# 4. 审计日志
display info-center loghost
display ntp status
display log configuration
# 5. 系统信息
display version
display device
display banner
# 将核查结果导出
display current-configuration > running.cfg
3.3 基线检查报告模板
╔════════════════════════════════════════════════════════╗
║ 网络设备安全基线检查报告 ║
╠════════════════════════════════════════════════════════╣
║ 设备名称: Core-SW-01 ║
║ 设备型号: Huawei S6730H-52XC-EI ║
║ 检查时间: 2024-07-25 14:30 ║
║ 检查人: 安全运维组 ║
║ 合规率: 92.3% (12/13 PASS, 1 FAIL) ║
╠════════════════════════════════════════════════════════╣
║ 检查项 状态 说明 ║
╠════════════════════════════════════════════════════════╣
║ AC-01 默认账号 PASS 已禁用 ║
║ AC-02 密码复杂度 PASS 满足要求 ║
║ AC-03 密码有效期 PASS 90天 ║
║ PR-01 Telnet禁用 PASS 仅SSH ║
║ PR-02 SSH版本 PASS SSHv2 ║
║ PR-03 HTTP禁用 FAIL HTTP服务仍开启 ← 需整改 ║
║ AU-01 Syslog PASS 已配置 ║
║ AU-02 NTP PASS 已同步 ║
║ ... ║
╚════════════════════════════════════════════════════════╝
四、基线管理与持续改进
4.1 基线检查频率
| 检查类型 | 频率 | 执行方式 | 说明 |
|---|---|---|---|
| 新设备上线前检查 | 每次上线 | 人工 + 脚本 | 上线前必须全部 PASS |
| 定期巡检 | 每月 | 自动化脚本 | 发现偏离基线的配置 |
| 变更后回归检查 | 每次变更后 | 自动化脚本 | 确认变更未引入偏差 |
| 合规审计前检查 | 每季度 | 人工 + 脚本 | 全面核查,准备审计材料 |
| 安全事件后检查 | 事件发生后 | 人工 + 脚本 | 排查配置被篡改 |
4.2 基线偏离处理流程

4.3 基线豁免管理
| 豁免编号 | 检查项 | 设备 | 豁免原因 | 审批人 | 有效期 | 状态 |
|---|---|---|---|---|---|---|
| EX-001 | PR-01 Telnet禁用 | Legacy-SW-01 | 旧网管系统仅支持 Telnet | CISO | 2024-12-31 | 有效 |
| EX-002 | NW-06 风暴抑制 | Core-SW-01 | 核心交换机高带宽不需要 | 安全主管 | 永久 | 有效 |
| EX-003 | PR-04 SNMPv3 | Monitor-SW-01 | 监控代理不支持 v3 | 安全主管 | 2024-09-30 | 待审批 |
五、总结
| 维度 | 要点 |
|---|---|
| 基线价值 | 标准化配置、降低安全盲区、支撑合规审计 |
| 检查分类 | 访问控制、协议安全、网络安全、审计日志、系统安全 |
| 检查频率 | 上线前必查、每月定期查、变更后回归查 |
| 自动化工具 | Python + Netmiko、Ansible、专用基线检查平台 |
| 基线偏离 | 分析原因、及时修复、特殊场景申请豁免 |
| 持续改进 | 通过检查数据驱动安全加固优先级排序 |
| 参考标准 | CIS Benchmark、等保 2.0、企业自定义基线 |
核心结论:安全基线是网络安全建设的"地基"。一份完善的基线检查清单不仅为设备安全提供了最低保障,也为安全运营提供了可量化的度量指标。通过自动化基线检查,将安全配置从"人工记忆"升级为"系统保障",是网络安全管理从粗放走向精细化的必经之路。
思考
-
如何平衡安全基线的严格性与业务灵活性?当业务部门要求"例外"时应该如何处理?
-
安全基线检查发现大量设备不合规时,应该优先修复哪些项?排序原则是什么?
-
在容器化/云计算环境中,传统的网络设备安全基线检查还有哪些适用?哪些需要调整?
下篇预告:第250篇:一次完整的企业网安全渗透测试案例——从外到内的实战演练