
简介面向运维工程师、系统管理员及安全从业者的服务器安全巡检实操文档围绕日常巡检的落地方法展开帮助读者建立规范化的检查流程降低因疏漏导致的安全风险。资源包共1个docx文件约163KB采用A4打印排版可直接编辑套用。内容覆盖巡检重要性、关注点、检查范围与执行步骤逐项讲解系统进程、用户账户与权限、系统服务、防火墙例外、防病毒更新、系统日志、数据库列表、备份任务等检查要点并给出异常情况的处置原则与跟踪记录方式附巡检表模板便于按用户和组、系统服务、磁盘权限、FTP权限、补丁升级等条目逐项登记。已有168人学习适合需要快速搭建巡检制度或对照查漏补缺的读者参考使用。1. 服务器安全巡检一份 5 页 Word 文档能撑起多少落地动作凌晨两点被告警叫醒登上去一看多了一个从没见过的账户UID 是 0家目录挂在/tmp下面。翻系统日志三天前就有登录记录只是没人看。这种事不是靠某个扫描器一键解决的它暴露的是例行巡检缺位。这份《服务器安全巡检内容及方法》就是干这个的一份 5 页的 Word 文档把巡检的重要性、关注点、覆盖范围、九步操作流程、异常处置原则和一张巡检表全部串起来编号 SY-AQ-09819A4 排版可直接打印也能在 Word 里改成自己团队的版本。它适合谁手上管着几台到几十台服务器、没有专职安全岗、又必须拿出可追溯巡检记录的系统管理员和运维。文档给的是骨架和检查项真正值钱的是把它变成每天能跑一遍的动作下面按这个思路拆。2. 巡检表拆解13 个检查项背后的原理与命令文档最实用的部分不是前面几段论述而是末尾那张巡检表。它把检查范围压成 13 行用户和组、系统服务、系统进程、系统防火墙、防病毒系统、系统日志、数据库、备份执行情况、磁盘权限、网站上传目录、FTP 用户及权限、系统补丁升级、其他检查点。每一行对应一个「内容 参考标准 原纪录 检查情况」的四栏结构这个结构本身就是设计参考标准是基线原纪录是上次的值检查情况是本次的差异。没有基线巡检就退化成「看一眼觉得没问题」这是最常见的翻车点。2.1 为什么先做基线镜像再谈巡检文档第二节讲得很直白安全巡检的主要关注点是系统异常所以一台服务器上线前做好一份系统状态的镜像就必须了。这句话是整个方法论的根。巡检的本质是比对不是发现——你没法凭空判断一个进程是不是可疑除非你知道正常状态下跑着哪些进程。常见做法是在系统交付、业务上线、重大变更这三个时间点各留一份基线快照内容包括账户列表、服务列表、监听端口、计划任务、关键目录权限。基线不用多复杂几条命令导出成文本存到独立位置即可后面每次巡检拿当前值和基线做 diff差异项就是重点。# 采集账户基线UID、家目录、登录 shell 全部落盘 awk -F: {print $1,$3,$6,$7} /etc/passwd /opt/baseline/passwd_$(date %F).csv # 采集服务基线只保留 enabled 状态避免被 disabled 的干扰 systemctl list-unit-files --typeservice --stateenabled /opt/baseline/services_$(date %F).txt # 采集监听端口基线-tulnp 同时看 TCP/UDP 和对应进程 ss -tulnp /opt/baseline/ports_$(date %F).txt这三条命令分别对应巡检表里的「用户和组」「系统服务」和隐含的进程检查。awk -F:按冒号切/etc/passwd输出用户名、UID、家目录、shell 四列UID 为 0 的非 root 账户一眼就能看出来--stateenabled过滤掉未启用的服务减少噪音ss -tulnp里的-t-u是 TCP/UDP-l只看监听态-n不做域名解析-p带进程名。基线目录建议放在业务盘之外权限设成 700否则攻击者进来第一件事就是改你的基线。2.2 账户、进程、服务三项的实操检查文档第四节的九步流程里第 2 到第 4 步是账户、进程、服务的检查顺序有讲究先看进程是因为可疑进程往往由可疑账户拉起先看账户是因为账户是权限的源头。实际操作中我一般按「账户 → 进程 → 服务」走因为账户异常最容易确认。# 1. 找出 UID 为 0 的账户正常只应有 root awk -F: $30 {print $1} /etc/passwd # 2. 找出最近 7 天内有登录记录的账户 lastlog -b 7 | grep -v Never logged in # 3. 列出所有监听端口及对应进程和基线 diff ss -tulnp | diff /opt/baseline/ports_latest.txt - # 4. 检查计划任务攻击者常在这里留后门 crontab -l; ls -la /etc/cron.*/ /var/spool/cron/第 1 条是账户检查的核心$30直接筛出 root 权限账户多出来任何一个都要登记。第 2 条lastlog -b 7列出 7 天内登录过的账户grep -v去掉从未登录的剩下的逐个核对是否本人操作。第 3 条用diff对比端口基线新增的监听端口就是重点排查对象。第 4 条容易被忽略/etc/cron.*/和/var/spool/cron/两处都要看前者是系统级后者是用户级。发现可疑项按文档要求处理登记、禁用账户、改密码、清权限、结束进程、停止服务每一步都留记录这就是「原纪录」栏的用途。2.3 防火墙、日志、备份的检查口径防火墙检查文档写的是「是否开启例外列表异常」落到命令上就是看规则集和默认策略。日志检查文档强调「关注安全日志可以备份后下载至本地进行分析」这个「下载至本地」很关键——服务器上的日志可能被篡改本地留存才是证据。备份检查则是看任务是否按时执行、产物是否可恢复很多人只检查「有没有备份文件」不检查「能不能恢复」这是另一个坑。# 防火墙确认默认策略和规则数量 iptables -L -n --line-numbers | head -30 # 或 firewalld 环境 firewall-cmd --list-all # 安全日志导出最近登录失败记录本地留存 grep Failed password /var/log/secure | tail -50 /tmp/auth_fail_$(date %F).log # 备份检查看最近一次备份文件的时间戳和大小 ls -lh /backup/db/ | tail -5iptables -L -n --line-numbers带行号列出规则方便对照基线看有没有新增的 ACCEPT 规则firewall-cmd --list-all是 firewalld 环境下的等价操作。日志那条命令针对 CentOS/RHEL 系的/var/log/secureDebian 系换成/var/log/auth.logtail -50只取最近 50 条避免文件过大。备份检查用ls -lh看时间戳和大小正常备份的文件大小应该在一个稳定区间内突然变小往往意味着备份失败但任务没报错。3. 把 Word 巡检表变成可执行脚本字段映射与自动化文档给的是纸质表格13 行检查项、四栏结构手工填一遍大概 20 分钟服务器一多就填不过来而且手填容易漏项。我的做法是把表格字段映射成脚本输出让脚本生成一份带「检查项 / 参考标准 / 当前值 / 判定」四列的文本报告人只需要复核判定为异常的行。这样既保留了文档的表格结构又把重复劳动压下去。3.1 巡检表字段到脚本输出的映射先明确映射关系再写脚本否则容易写成一个大杂烩。文档表格的「内容」对应检查项名称「参考标准」对应基线值或合规要求「原纪录」对应上次巡检值「检查情况」对应本次判定。脚本输出用管道符分隔方便后续导入表格软件。巡检表字段脚本输出列数据来源内容check_item固定字符串对应 13 个检查项参考标准baseline基线文件或合规阈值原纪录last_value上次巡检报告中的对应值检查情况verdict当前值与基线比对结果PASS/FAIL/UNKNOWN这个映射的好处是脚本报告可以直接贴回 Word 表格不需要二次整理。verdict只有三种值避免出现「大概没问题」这种模糊判定逼着检查者给出明确结论。3.2 一个可复用的巡检脚本骨架下面这个骨架覆盖账户、端口、服务、计划任务、磁盘权限五项其余项按同样模式扩展。脚本不追求一次写全追求每次跑完能生成一份可归档的报告。#!/bin/bash # 服务器安全巡检脚本骨架输出管道符分隔报告 REPORT/var/log/inspect/report_$(date %F).txt BASELINE/opt/baseline mkdir -p /var/log/inspect # 检查项 1UID 为 0 的账户 root_users$(awk -F: $30 {print $1} /etc/passwd | tr \n ,) if [ $root_users root, ]; then v1PASS; else v1FAIL; fi echo 用户和组|仅 root|$root_users|$v1 $REPORT # 检查项 2监听端口与基线差异 port_diff$(ss -tulnp | diff $BASELINE/ports_latest.txt - | grep ^ | wc -l) if [ $port_diff -eq 0 ]; then v2PASS; else v2FAIL; fi echo 系统进程|端口无新增|新增 $port_diff 个|$v2 $REPORT # 检查项 3计划任务数量 cron_count$(ls /etc/cron.d/ 2/dev/null | wc -l) echo 计划任务|与基线一致|$cron_count 个|UNKNOWN $REPORT # 检查项 4关键目录权限 perm$(stat -c %a /etc/passwd) if [ $perm 644 ]; then v4PASS; else v4FAIL; fi echo 磁盘权限|/etc/passwd 为 644|$perm|$v4 $REPORT echo 巡检完成报告$REPORT脚本逻辑说明每个检查项独立成段先取值、再判定、最后追加到报告互不干扰某一项命令失败不影响其他项。tr \n ,把多行账户名压成一行方便表格展示。端口差异用diff的^行数统计新增项grep ^只数当前文件多出来的行。计划任务那项标UNKNOWN是故意的——数量一致不代表内容一致需要人工复核脚本不替人做判断。stat -c %a取八进制权限位和标准值直接比对。参数上REPORT和BASELINE两个变量放在开头换环境只改这两处。3.3 定时执行与报告归档脚本写好后挂到计划任务里建议每天凌晨业务低峰跑一次报告按日期命名归档保留 90 天。文档强调「巡检可以做为一项例行的工作来做」例行化的关键就是定时和归档否则又会回到「想起来才查」。# 加入 root 的 crontab每天 03:30 执行 echo 30 3 * * * /opt/scripts/inspect.sh /var/log/inspect/cron.log 21 | crontab - # 归档清理删除 90 天前的报告 find /var/log/inspect -name report_*.txt -mtime 90 -delete30 3 * * *是分、时、日、月、周的 cron 表达式 ... 21把标准输出和错误都追加到日志方便排查脚本本身的问题。find -mtime 90 -delete清理旧报告避免磁盘被巡检报告撑满——这个细节很多人栽过。4. 避坑与排查巡检落地时最容易翻车的五件事4.1 没有基线巡检变成「看着还行」现象每次巡检都填「正常」但真出事时说不清哪里不正常。原因文档第二节强调的上线前镜像没做检查者只能凭印象判断。解决补做基线至少覆盖账户、端口、服务、计划任务四类基线文件权限设 700每次重大变更后更新基线并记录变更原因。4.2 只查文件在不在不查能不能恢复现象备份目录里文件齐全真需要恢复时发现备份是空的或者损坏。原因巡检表「备份执行情况」只看了任务状态没做恢复验证。解决每月抽一次备份做恢复演练恢复到临时目录比对数据量把「可恢复」写进参考标准而不是「有备份文件」。4.3 日志只在本机看不留本地副本现象发现异常后去查日志关键时间段记录缺失。原因日志被轮转覆盖或被入侵者清理文档要求的「备份后下载至本地」没执行。解决巡检时固定导出安全日志到独立存储导出动作本身也记入巡检报告形成证据链。4.4 脚本报 FAIL 就紧张不区分误报现象巡检报告一片红逐条排查后发现大半是正常变更。原因基线没随变更更新或者脚本判定条件过严。解决建立变更登记流程变更后 24 小时内更新基线脚本判定分三级PASS/FAIL/UNKNOWN拿不准的归 UNKNOWN 交人工不要硬判。4.5 巡检记录只存本地没有审批和留痕现象出了事故要追溯拿不出当时的巡检记录。原因文档表格的「巡检时间」「操作人员」两栏被省略报告散落在各人电脑里。解决报告统一存到指定目录文件名带日期操作人员字段由脚本自动填入当前登录用户定期打包归档。5. 从巡检表到处置闭环异常跟踪的验证方法与一个习惯文档第五节讲异常管理原则是「先保护现场留下证据然后切断异常同外部的联系」。这句话顺序不能反——很多人一发现可疑进程直接 kill进程没了它拉起的子进程、改过的文件、连过的外链全断了线索。我一般按「取证 → 隔离 → 处置 → 复核」四步走取证阶段把进程树、网络连接、打开的文件、相关日志全部导出隔离阶段断网或封端口不急着删文件处置阶段按巡检表登记的问题逐项修复复核阶段隔 24 小时再跑一次巡检脚本确认异常项归零。验证巡检是否真的有效有个简单办法拿一台测试机故意制造三类异常——加一个 UID 为 0 的账户、起一个监听高位端口的进程、改一个关键目录的权限然后跑巡检脚本看三类异常是否都被判 FAIL。三类全中说明脚本的检测逻辑是通的漏一类就回去补对应检查项。这个自测建议每季度做一次因为脚本会随环境变化慢慢失效比如系统从 iptables 换到 firewalld防火墙检查那段就静默失败了不测根本发现不了。还有一个容易忽略的点巡检报告本身要能被审计。文档表格里的「审批」栏不是摆设报告生成后由第二个人复核签字异常项的处理结果要回填到同一份报告里形成「发现 → 登记 → 处置 → 复核」的闭环。没有闭环的巡检只是打卡出了问题照样说不清。从那以后我每次接手一批新服务器第一件事不是装监控而是先跑一遍基线采集、把巡检脚本挂上定时任务再拿测试机做一轮异常注入验证。这套动作花不了半天但后面每次告警来的时候手里有基线、有报告、有处置记录排查起来心里有底。这份 5 页的 Word 文档给的是检查项和表格结构真正让它生效的是把每一项落到命令、落到定时任务、落到归档目录里。希望帮到你。本文还有配套的精品资源点击获取