ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

等保测评命令行速查手册:Linux/Windows/网络设备/数据库全覆盖

等保测评命令行速查手册:Linux/Windows/网络设备/数据库全覆盖

等保测评这事儿,说白了就是在有限窗口期内,把一堆服务器、网络设备、数据库翻个底朝天,找出不符合项,给出整改建议。干这行的时间长了你会发现,知道查什么是基础,知道用什么命令去查才是效率关键。尤其面对几十上百台设备,图形界面点来点去根本不现实,命令行是唯一靠谱的路径。这篇东西就是我自己在等保测评现场反复用到的命令汇总,覆盖Linux、Windows、网络设备和主流数据库,按检查项维度做了整理,测评人员可以直接当速查手册用,运维同学拿去做自查整改也同样适用。

直接说命令之前,先把等保测评的检测逻辑理清楚,不然光记命令很容易忘,也不知道为什么要这么查。

1. 先理解等保测评的检测逻辑

1.1 测评对象与高频检查项

等保测评的检查对象可以分为主机(Linux/Windows)、网络设备(路由器/交换机/防火墙)、数据库、中间件和应用系统。其中主机、网络设备、数据库这三个层面,绝大多数检查项都能通过命令行完成验证。高频检查项有几个大类:身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范、数据完整性、数据保密性、数据备份恢复。

身份鉴别看的是账号口令策略、登录失败处理、双因素认证这些;访问控制看的是权限分配是否合理、是否存在越权路径;安全审计看的是日志有没有开启、审计记录能不能覆盖关键行为;入侵防范看的是危险服务、端口、异常进程;数据保密性看的是传输和存储是否加密;数据备份恢复则直接关系到业务连续性。

1.2 为什么命令速查比图形界面高效

测评分两种方式:访谈和检查。检查环节要在设备上做实际验证,图形界面虽然直观,但有两个致命问题:一是慢,一台台点过去,几十台设备做完黄花菜都凉了;二是证据留存困难,图形界面截图能截,但不如命令输出好归档。命令行的输出结果是纯文本,可以直接重定向到文件里,后期整理测评记录、填写不符合项报告都方便得多。

还有一个关键场景是远程测评。测评人员很多时候只能拿到一个SSH终端、一个远程桌面,甚至只有命令行接入条件,图形界面根本起不来。这时候你的命根子就是命令速查表。

注意:命令行操作必须获得信息系统管理方的书面授权,尤其是涉及查看口令文件、导出配置这类敏感操作,测评进场前授权流程一定要走完。

2. Linux系统关键命令速查

Linux服务器在等保测评里出现频率极高,而且发行版五花八门。下面这套命令覆盖了CentOS/RHEL、Ubuntu/Debian、SUSE等主流发行版,个别命令在不同发行版上路径和参数会略有出入,用法我在后面标注清楚。

2.1 身份鉴别与口令策略检查

用户账号梳理:

cat /etc/passwd awk -F: '{print $1, $3, $4, $7}' /etc/passwd

第一行看全部用户信息,第二行精简输出用户名、UID、GID、登录Shell。这里重点排查两个问题:是否存在长期不使用的僵尸账号;是否存在异常UID为0的账号(这是超级权限账号,正常系统里不应该有多个)。

awk -F: '$3==0 {print $1}' /etc/passwd

这个命令直接列出所有UID为0的用户,正常情况只应该有root。如果在生产环境里看到uid=0的账号叠加了其他用户名,这是典型的后门特征。

口令策略:

cat /etc/login.defs | grep -E 'PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_MIN_LEN|PASS_WARN_AGE' cat /etc/shadow | awk -F: '{print $1, $2}' chage -l root

login.defs里定义了新建用户的密码全局策略,PASS_MAX_DAYS代表密码最长使用天数,等保要求一般是90天以内;PASS_MIN_LEN是最小长度,现在一般要求8位以上。另外检查/etc/shadow里有没有空的密码字段,如果某个用户的密码位显示为空白或仅一个感叹号,说明该账号存在空口令风险。

密码复杂度:现在很多系统通过PAM模块控制密码复杂度,要检查:

cat /etc/pam.d/system-auth cat /etc/pam.d/password-auth cat /etc/security/pwquality.conf

pwquality.conf里的minlen、dcredit、ucredit、lcredit、ocredit参数分别控制最小长度、数字、大写字母、小写字母、特殊字符的要求。等保三级评测对密码复杂度参数一般要求minlen不低于8,同时包含字母和数字。

登录超时与失败锁定:

cat /etc/profile | grep TMOUT cat /etc/pam.d/system-auth | grep pam_tally2 cat /etc/pam.d/system-auth | grep pam_faillock

TMOUT设置终端空闲超时时间,一般要求600秒以内。失败锁定通过pam_tally2或pam_faillock实现,检查是否配置了deny=5、unlock_time=300这样的策略。

2.2 账号权限与访问控制

sudo配置检查:

cat /etc/sudoers grep -r "NOPASSWD" /etc/sudoers /etc/sudoers.d/

重点看两处:有没有普通用户被赋予了NOPASSWD的全部root权限;sudoers文件本身权限是否644且属主root。用visudo -c可以校验sudoers文件语法是否正确。

特殊权限文件排查:

find / -perm -4000 -type f 2>/dev/null find / -perm -2000 -type f 2>/dev/null

这两个命令分别查找SUID和SGID文件。SUID程序以文件属主身份运行,如果发现异常二进制文件带SUID位,且路径不在系统标准目录下,基本可以判定存在问题。查完之后顺手检查一下系统关键目录的权限:

ls -ld /etc /usr /bin /sbin /var /tmp

/tmp目录需要带sticky bit(1777),/etc目录不允许普通用户写。

umask值:

umask cat /etc/profile | grep umask

umask 022是常规配置,代表创建文件默认权限644、目录755。如果umask为000或002,说明新建文件权限过宽,需要整改。这个检查点经常被忽略,但确实是等保检查项里明文有要求的内容。

2.3 安全审计与日志

审计服务状态:

systemctl status auditd rsyslog auditctl -s cat /etc/audit/audit.rules

auditd和rsyslog必须处于运行状态,这个是硬性要求。audit.rules里应该能看到对关键系统文件、关键目录、权限变更行为的审计规则。等保三级一般要求对/etc/passwd、/etc/shadow、/etc/sudoers等文件做实时审计。

日志完整性与保留期:

cat /etc/logrotate.conf cat /etc/logrotate.d/* ls -l /var/log/messages /var/log/secure /var/log/audit/audit.log

logrotate配置需要确认日志轮转周期和保留份数。另外常见问题是/var/log分区空间耗尽导致auditd停止写入,顺手检查一下磁盘空间:

df -h /var/log

登录记录追溯:

last lastlog faillog

last显示最近登录记录,lastlog显示所有用户最后一次登录时间,faillog显示失败登录记录。如果一个很久不用的账号突然有登录记录,或者管理员的账号存在大量夜间登录行为,这是需要进行重点排查的线索。

2.4 入侵防范与网络安全

监听端口与服务:

ss -tlnp netstat -tulnp systemctl list-unit-files --type=service --state=enabled

检查是否存在ssh、telnet、ftp、rsh等明文或高危服务。等保明确要求关闭telnet、rlogin等服务,远程管理必须使用SSH。对监听端口要看有没有意外暴露的数据库端口、Redis端口到外网,尤其是6379、3306、5432、27017这类常见数据库端口。

防火墙状态:

firewall-cmd --state firewall-cmd --list-all iptables -L -n systemctl status firewalld

不同发行版不一样,CentOS 7及以上用firewalld,CentOS 6及Ubuntu部分版本用iptables。等保检查关注的是主机防火墙是否开启、入站规则是否按最小化原则配置。很多开发环境主机防火墙直接关了,这一项基本就是不符合,得当场记录。

SELinux状态:

getenforce

如果输出是Disabled,某些等保测评里会记为不符合项。SELinux开启在强制模式(Enforcing)才是合规状态。不过实际运维中很多业务因为SELinux导致程序起不来,就随手关掉了,这个能整改就整改,确实兼容性有问题的,测评时也要能说清楚补偿措施。

SSH安全配置:

cat /etc/ssh/sshd_config | grep -E 'PermitRootLogin|PasswordAuthentication|Protocol|AllowUsers|MaxAuthTries'

PermitRootLogin应设为no,PasswordAuthentication建议设为no(如果条件允许应该走密钥登录),MaxAuthTries应设置较小值防止暴力破解。这里要注意:如果把root远程登录禁掉,一定要提前确认你有sudo权限的非root账号,不然容易把自己锁在外面。

2.5 Linux实操心得

Linux命令执行有个比较实用的习惯:测评过程中用script命令把整个操作过程录制下来,这样事后复盘、出报告都不用担心遗漏细节。另外现场执行命令一定要确保字符集统一,特别是通过Xshell、SecureCRT这类终端连国际化系统时,经常出现中文乱码导致返回值无法识别,先执行:

export LANG=en_US.UTF-8

把系统语言临时切换到英文环境,命令输出显示会稳定很多。

3. Windows系统关键命令速查

Windows服务器的检查同样集中在账号口令、补丁、审计策略、共享服务这几块,但命令体系跟Linux完全是两套。下面命令大部分需要在管理员命令行(CMD)或PowerShell下执行。

3.1 账号口令与策略检查

用户与账户状态:

net user net user administrator net localgroup administrators

net user列出所有本地账户,查看指定账户详情能看到账户是否禁用、密码是否过期。配合net localgroup administrators可以找出所有本地管理员组成员,重点关注有没有非授权人员账号被加进了管理员组。

密码策略:

net accounts

这条命令会显示系统当前的密码策略,重点关注“密码最长使用期限”“密码最短使用期限”“强制密码历史”“锁定阈值”这几个参数。等保要求密码最长90天、密码历史至少5个、锁定阈值一般不超过5次。

更详细的策略导出可以用:

secedit /export /cfg secpol.cfg type secpol.cfg

secedit把本地安全策略导出到secpol.cfg文件,这个文件里直接能看到PasswordPolicy和AccountLockoutPolicy的具体配置。这个方法的优势是一次性拿到全部策略快照,方便归档留证。

3.2 补丁与系统信息

补丁列表:

wmic qfe list brief /format:table systeminfo

wmic qfe列出已安装的安全补丁(KB编号),systeminfo一次输出系统版本、补丁信息、网卡配置等全量信息。测评时补丁检查重点关注最近一年的安全更新是否安装。

注意:较新版本的Windows系统可能已经移除了wmic命令(Windows 11 22H2及部分Server版本)。如果提示wmic不是内部或外部命令,改用PowerShell:

Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 20

3.3 审计策略与日志

审计策略查看与设置:

auditpol /get /category:* auditpol /get /subcategory:"登录审核" /r

auditpol查看当前审计策略,等保检查要求“登录/注销”“账户登录”“账户管理”“策略更改”“系统事件”等关键类别都要有成功和失败审计。如果某一类别显示禁用,用下面命令开启:

auditpol /set /subcategory:"登录审核" /success:enable /failure:enable auditpol /set /subcategory:"账户管理" /success:enable /failure:enable

Windows版本中文名称可能略不同,在中文系统上类别名为“登录/注销”(Logon/Logoff)、“账户管理”(Account Management),英文系统用英文原名。

事件日志状态:

wevtutil gl Security wevtutil gl System wevtutil gl Application

输出信息里重点看logEnabled是否为true、retention是否为true、maxSize是否足够。安全日志如果被禁用,等保测评直接判不符合,没有任何商量余地。日志大小建议至少设置为80MB以上,避免高流量环境下日志被覆盖。

登录日志查询:

wevtutil qe Security "/q:*[System[(EventID=4624 or EventID=4625)]]" /c:20 /rd:true /f:text

4624是成功登录、4625是失败登录,这条命令查询最近20条登录成功和失败事件,快速判断系统是否存在暴力破解或异常登录。

3.4 服务、共享与网络安全

服务排查:

net start wmic service get name,startmode,state

对比查看目前运行的服务、可执行文件路径、启动类型。重点排查可疑服务名和未知路径下的服务。如果服务启动类型为自动但二进制路径指向用户目录或临时目录,很可能被植入了恶意程序。

共享资源检查:

net share

查看默认共享(C$、ADMIN$、IPC$)和管理共享。默认共享在域环境下一般是正常的,但如果open共享指向非系统目录,或者存在普通用户共享的目录,需要进一步核实。关闭默认共享的命令是net share C$ /delete(但是注意:服务器场景重启后可能还会自动启用)。

防火墙状态:

netsh advfirewall show allprofiles

这个命令显示域、专用、公用三种配置文件下的防火墙状态。等保检查要求防火墙必须全部开启。如果返回“防火墙配置已启用”,可以直接截图留证;如果显示“防火墙配置未启用”,意味着防火墙处于关闭状态。

LM Hash检查:

reg query HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v NoLMHash reg query HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v LimitBlankPasswordUse

NoLMHash值为1代表禁止存储LM Hash,LimitBlankPasswordUse值为1代表禁止空密码远程登录。这两个注册表项在等保检查中属于密码存储安全的检查点。

3.5 Windows实操注意点

Windows上执行命令,命令行窗口要用管理员权限启动,否则net accounts、systeminfo、auditpol这些命令要么没权限、要么输出不全。PowerShell如果执行策略受限,可以先运行Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass临时放行当前会话,不需要触碰系统级策略。

另外一点经验:Windows事件日志经常出现“日志记录服务未运行”的情况,可以先执行net start EventLog确认日志服务状态,如果服务停了,审计策略开得再全也没用。

4. 网络设备关键命令速查

网络设备在等保测评里主要检查路由器、交换机、防火墙的安全配置。不同厂商的命令体系不一样,主流的A厂商和B厂商分别用display和show开头,但检查的配置项是相通的。下文以通用思路为主,写清每个检查项对应的功能,具体命令以设备实际厂商为准。

4.1 版本与基础信息

查看设备基础信息:

display version display device

这两条命令确认设备的软硬件版本、运行时间、设备型号。版本信息要记入测评记录,用于判定是否存在公开漏洞版本问题。部分设备一个命令能同时显示硬件和软件信息,比如B厂商的show version。

4.2 登录与身份鉴别配置

远程管理方式:

display telnet server status display ssh server status display http server status display https server status

等保检查要求:远程管理必须使用SSH等加密协议,Telnet和HTTP这类明文协议不应开放。如果看到telnet server status是enable、ssh server status是disable,这一项直接不符合。部分设备需要到vty用户界面配置下确认:

display user-interface display user-interface vty 0 4

查看VTY登录的协议配置、认证方式和ACL限制。重点检查:VTY是否只允许SSH接入;是否配置了ACL只允许管理网段的源IP访问;登录超时时间是多少。设备登录超时建议配置为10分钟以内。

AAA和口令策略:

display aaa configuration display authentication-scheme display domain configuration

检查是否配置了AAA认证、登录失败锁定策略、口令加密存储方式。这里要看的是:设备本地口令不能明文存储、登录尝试次数有上限、特权切换需要密码且密码强度足够。

4.3 访问控制与安全策略

ACL配置:

display acl all display acl 2000 display acl 3000

ACL是网络设备最核心的访问控制手段。等保检查关注两个层面:一是ACL规则是否按最小化授权原则放行地址;二是ACL是否实际应用到了接口或VTY上。如果设备上配置了很宽松的any any放行规则,或者ACL配置了但从没在接口下发,都属于安全短板。

接口状态与配置:

display interface brief display ip interface brief

检查是否存在物理接口直接暴露到外网、接口下是否配置了IP和NAT、管理接口是否单独隔离。重点排查设备上的管理接口是否配置了公网可达地址。

端口服务:

display tcp status display udp status

查看设备自身开放的服务端口。网络设备常见的风险端口包括snmp(161)、http(80)、telnet(23),SNMP服务如果使用了默认public/private团体字符串,这基本是每轮测评必查必中的问题。

4.4 日志与审计

日志功能:

info-center enable display logbuffer display trapbuffer display loghost

等保检查要求网络设备启用日志功能,并能将日志发送到远程日志服务器。display logbuffer查看设备本地日志缓冲区内容,display loghost查看是否配置了日志服务器。部分设备还需要确认会话日志(NAT会话日志、流量日志)是否开启。

4.5 配置备份与高可用

display saved-configuration display current-configuration

saved-configuration是已保存的启动配置,current-configuration是当前正在运行的配置,两者不一致说明运行配置没有被保存,设备一旦重启,所有整改配置全部丢失。测评尾声阶段,可以提醒现场运维人员把整改后的配置save一下,这是很多团队容易忽略的动作。

4.6 设备差异处理建议

网络设备命令差异是测评现场头疼的事。这里有个经验:无论A厂商还是B厂商,基本都能用这几个命令摸底:

  • 看版本:display version / show version
  • 看配置:display current-configuration / show running-config
  • 看接口:display interface brief / show ip interface brief
  • 看ACL:display acl all / show access-lists

真遇到不会的命令,也别瞎猜。先display current-configuration把配置导出来,结合配置逐项核对安全策略,比在命令行里猜命令靠谱得多。测评不是背命令大赛,重要的是对配置的安全含义有判断力。

5. 数据库关键命令速查

数据库的等保检查,核心集中在身份鉴别、访问控制、审计、备份恢复、数据加密这几个维度。下面按主流数据库分别列命令,MySQL部分写全面一点,其他数据库列关键检查命令。

5.1 MySQL

版本与补丁:

SELECT VERSION(); SHOW VARIABLES LIKE 'version_comment';

评测时记录版本号,用于判断是否存在已知高危漏洞。MySQL大版本低于5.7.22或8.0.16这种老版本,一般会被要求升级。

账号与口令策略:

SELECT user, host, authentication_string, password_lifetime FROM mysql.user; SELECT user, host, authentication_string FROM mysql.user WHERE authentication_string = ''; SHOW VARIABLES LIKE 'validate_password%';

第一句看所有账号和对应的host,重点排查存在host为%的弱访问限制账号;第二句查是否存在空密码账号;第三句查看密码验证插件策略。MySQL 5.7以上需要装validate_password组件才能检查密码复杂度,没装的话这项也是不符合。密码有效期的检查:

SHOW VARIABLES LIKE 'default_password_lifetime';

等保要求数据库密码有效期不超过90天。

权限最小化:

SELECT user, host, Grant_priv, Super_priv FROM mysql.user; SHOW GRANTS FOR 'appuser'@'%';

检查是否存在不必要的超级权限账号。数据库账号应遵循最小权限原则,应用账号原则上不应有Super、Grant、File这些危险权限。SHOW GRANTS能直接看到某账号的完整授权,测评时对每个高权限账号都要做核对。

审计日志:

SHOW VARIABLES LIKE 'log_bin'; SHOW VARIABLES LIKE 'general_log'; SHOW VARIABLES LIKE 'log_error';

log_bin为ON代表启用了二进制日志(用于备份恢复),general_log代表通用查询日志,log_error代表错误日志。等保三级以上还要求开启MySQL审计插件(如audit_log插件),没有开启审计插件的场景,至少要有binlog和general_log中的一种作为补充。注意general_log在低负载系统可以开着,但生产高并发环境如果长时间开,会严重影响性能,这个点要结合业务场景在测评记录里说明。

5.2 Oracle

版本信息:

SELECT * FROM v$version; SELECT banner FROM v$version WHERE banner LIKE 'Oracle%';

账号状态与口令策略:

SELECT username, account_status, lock_date, expiry_date FROM dba_users; SELECT username, profile FROM dba_users; SELECT resource_name, limit FROM dba_profiles WHERE profile='DEFAULT' AND resource_name IN ('PASSWORD_LIFE_TIME', 'FAILED_LOGIN_ATTEMPTS', 'PASSWORD_GRACE_TIME');

dba_users看账号状态,重点排查account_status字段不是OPEN的账号、是否长期锁定、密码是否过期。dba_profiles里DEFAULT的PASSWORD_LIFE_TIME默认是180天,但等保要求90天,所以很多Oracle系统这项需要单独调整。

审计配置:

SELECT name, value FROM v$parameter WHERE name = 'audit_trail'; SELECT * FROM dba_audit_trail WHERE rownum <= 20; SHOW PARAMETER AUDIT_SYS_OPERATIONS;

audit_trail参数为NONE表示未开启审计,不符合要求;应为DB或OS级别。AUDIT_SYS_OPERATIONS控制sys用户操作是否记录,等保要求开启。

权限与角色:

SELECT grantee, granted_role FROM dba_role_privs; SELECT grantee, privilege FROM dba_sys_privs WHERE grantee IN ('APP_USER');

检查是否有普通用户被授予DBA角色,应用账号是否拥有SYSDBA系统权限。

5.3 SQL Server

版本与登录账号:

SELECT @@VERSION; SELECT name, is_disabled FROM sys.server_principals WHERE type IN ('S','U'); SELECT name, is_policy_checked, is_expiration_checked FROM sys.sql_logins;

sys.server_principals查看服务器级账号,is_disabled判断是否禁用。is_policy_checked和is_expiration_checked分别是密码策略和密码过期是否启用,等保要求SQL Server账号必须启用密码策略强制,如果这两个值为0则存在弱口令风险。SQL Server 2017开始还多了一个is_must_change字段需要关注。

审计配置:

SELECT name, is_enabled FROM sys.database_audit_specifications; SELECT name, is_state_enabled FROM sys.server_audits; SELECT * FROM sys.server_file_audits;

SQL Server审计功能如果完全没有在服务器级别开启审计,等保一般记为不符合项。服务器审计开启后,还要确认有对应的审计规范(audit specification)覆盖核心操作。

5.4 PostgreSQL

版本与账号:

SELECT version(); SELECT rolname, rolcanlogin, rolsuper, rolcreaterole FROM pg_roles;

rolsuper= t 表示超级用户,检查是否存在不必要的超级用户账号。

认证与口令存储:

SHOW password_encryption; SHOW logging_collector;

查看pg_hba.conf文件检查客户端认证方式,重点看是否允许trust认证(无需密码)。PostgreSQL的密码加密方式现在建议scram-sha-256,如果password_encryption=md5则强度不够。

审计配置:

SHOW logging_collector; SHOW log_destination; SHOW log_statement; SHOW log_connections; SHOW log_disconnections;

PostgreSQL默认不记录所有SQL语句,需要开启log_statement=all或者至少mod,log_connections和log_disconnections记录会话审计。很多PostgreSQL生产库都没开这几项,测评时需要注意。

5.5 数据库通用检查思路

数据库检查虽然命令不同,但思路是同一套:

  • 版本补丁:尽量到最新稳定版或主流支持版本
  • 账号口令:杜绝空口令、弱口令、默认口令,开启密码有效期和失败锁定
  • 权限最小化:数据库超级管理员严格控制,应用账号只能访问业务库和必要权限
  • 审计能力:能记录登录、操作、权限变更行为,日志不被轻易篡改
  • 备份恢复:定期备份,备份数据异地存放,定期做恢复演练

6. 常见问题与排查技巧实录

命令检查过程中,实际操作总会碰到各种意外情况,这里把我在现场踩过的一些坑整理一遍。

6.1 命令权限不足

Linux下查看/etc/shadow需要root权限,普通用户直接执行会得到“Permission denied”。这时候需要sudo执行,前提是提前向对方运维确认授权。数据库命令也一样,查询dba_users视图需要DBA权限账号,用普通业务账号查询会提示权限不足。现场操作原则是:只做需要做的检查,拿到最小必要权限,避免触碰业务敏感数据。

6.2 中文乱码导致结果无法识别

Windows中文系统和Linux中文系统的编码不一样,终端里经常出现乱码。Windows下先执行chcp 65001切换为UTF-8编码,再执行其他命令;Linux下执行export LANG=en_US.UTF-8,把系统语言临时切换为英文。数据库返回的中文数据如果乱码,先检查客户端字符集设置,MySQL执行SET NAMES utf8mb4;,Oracle执行ALTER SESSION SET NLS_LANG='SIMPLIFIED CHINESE_CHINA.UTF8';。

6.3 不同版本命令差异

同样的检查点在老版本和新版本系统里,命令可能完全不一样。比如Linux查看防火墙,CentOS 6用iptables -L -n,CentOS 7以上用firewall-cmd --list-all;Windows查看补丁,老版本用wmic qfe,新版本就得用PowerShell。应对办法是先确认系统版本,再选择对应命令。Windows可以用ver或systeminfo | findstr /C:"OS",Linux可以用cat /etc/os-release。

6.4 证据记录不规范

测评记录是后续出具报告的依据,命令输出必须完整保存。推荐两种方式更稳妥的方式:一是Linux下用script -q -c "命令" result.log记录执行过程,二是把所有输出重定向到文件再统一归档:

command > /tmp/check_log.txt 2>&1

重定向时最好加上时间戳,方便后期回溯。

date +"%Y-%m-%d %H:%M:%S" >> /tmp/check_log.txt

6.5 避免对生产环境造成影响

这个值得单独拎出来讲。检查命令有个铁律:优先使用只读命令,修改命令要谨慎。Linux的find查找、ss监听、cat查看都是安全的;审计策略里auditctl -e 1(临时启用审计但立即失效)这类会改变系统状态的命令,不要在业务高峰期乱用。数据库的SHOW、SELECT操作没有破坏性,但SELECT全表如果数据量大也会吃IO,尽量加LIMIT或过滤条件后再查询,别拿生产库做压力测试。

7. 等保测评配合经验与个人心得

写到这儿,最后分享一些我经历多次测评周期之后沉淀下来的经验。

7.1 测评前自查比测评中整改高效得多

每次测评进场前,先让运维团队按检查项做一轮自查,用上面这些命令把结果导出来,逐条比对。大部分问题在自查阶段就能发现,比如密码策略没更新、审计日志没开、多余账号没有清理。测评中整改的代价远高于测评前自查,一方面测评期间整改的动作容易被认定为“应付检查”,另一方面测评现场的发现项是要写进报告的,有些在报告里一旦出现,后续整改材料也要跟着补。

7.2 测评记录要留痕完整

每个检查项的命令输出、截图、时间点、操作人,全部整理归档。我之前就吃过这个亏,一个端口扫描的结果在处理后忘了截图留证,结果报告阶段评审组质问这个发现项当初是怎么判断的,翻遍记录也找不到,只能重新补测一遍。现在养成的习惯是:每次操作结束,立刻把输出重定向到标记好日期和设备名的文件里,检查结束后干脆把整个操作日志打包。

7.3 评测检查要懂一些运维底座常识

评测人员如果能预先了解服务器上跑了哪些应用、数据库有哪些业务表、网络设备之间的链路关系,检查过程发布命令的准确度会高很多。举例来说,一台Redis端口6379在公网监听,如果你不知道这台机器是给前端页面做缓存用的,检查时直接建议关闭Redis服务,业务方当场就会炸。理解底座的业务逻辑,再结合安全基线给出判断和整改建议,这个检查才有实际落地价值。

7.4 命令速查表要持续更新

安全基线、系统版本、终端环境都在变,整个命令表过一年多就会有一些命令失效(比如wmic退役这类事)。把这篇速查表存好之后,建议在实际操作时顺手把新学到的命令补充进去,和自己的检查习惯形成闭环。有几次我去到新环境,发现对方用了一些没见过的审计插件,命令路径完全不同,靠临时查文档反而耽误时间,最后还是凭借对检查项逻辑的理解,一步步推出来的。命令只是手段,理解你要检查的对象是什么、风险在哪里,手里的命令才会真正好用。

等保测评这门活,说到底是在有限时间里快速定位安全问题。速查表解决的是第一层需求——怎么查;而更深一层的价值在于,把“查”变成习惯,定期自查基线,而不是等测评来了才按命令一顿操作。希望你拿到这套命令之后,不仅测评期间能用上,日常运维巡馆也可以跑一跑,真到测评节点,手上有数据、心里不慌,这个比任何速查表都金贵。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进