
刚入行做甲方安全前两周最容易发生的两件事一是被安排去装一个只在教程里见过的产品二是拿到一句「公司有三套系统」的口头信息然后就没事干了。这篇讲安全新人在甲方第一个月该干什么重点落在资产盘点上——它不需要权限、不需要预算、不需要人带全靠自己动手而且是后面所有工作的地基。我见过的新人八成在前三个月都在做这两种事翻博客学工具或者等别人给活。真正拉开差距的是能不能在第一个月把「这家公司到底有什么」摸清楚。这件事不需要权限、不需要预算、不需要人带全靠你自己动手。而且它是后面所有工作的地基——你连资产清单都没有谈基线、谈漏洞、谈应急都是空的。这篇按「第一个月怎么过」写每周有具体动作最后给一份可以直接用的台账字段设计。先补一句如果你还没搞清「安全在甲方到底干什么」可以先看 安全运营体系怎么搭那篇讲的是整个盘子长什么样。一、第一周先搞清楚这公司靠什么赚钱听起来像废话但这一步跳过去的新人后面会反复吃亏。举个具体的你不知道这家公司的订单从哪个系统进、在哪个系统落库那你看到一个数据库告警时根本判断不了它是不是核心。你不知道哪个业务在冲营收就没法在资源冲突时说服业务方接受变更窗口。问六个问题找三类人。三类人是带你的人、一个业务线的产品经理、一个运维老员工。六个问题是公司主要收入来自哪几块业务哪块增长最快一个客户从接触到付钱中间经过哪些系统哪些系统是「停了业务就停」的哪些「停了还能撑几天」哪些数据是不能外流的出事了要报监管的现在最怕出什么事过去一年真出过什么事上一个做安全的人如果有留下了什么为什么走的前四个问题帮你建立业务地图后两个帮你避开坑。第 6 个尤其重要——如果他留下了一堆半成品和一堆承诺你得知道哪些承诺是不能接的。问完把答案画成一张图不用好看白纸手画都行左边业务线中间系统右边数据。这张图就是你后面所有判断的参照。二、第二周资产盘点别从「按分类梳理」开始几乎所有教程都会告诉你「按网络、服务器、应用、终端、数据分类」。这个分类法没错但它解决的是「怎么整理」不是「从哪拿到」。新人真正卡住的地方是我不知道公司有多少台机器。靠问是问不出来的。运维记得住核心系统记不住测试环境HR 有花名册没有设备表采购有发票没有报废记录。所以正确做法是拿多个数据源交叉比对差额就是盲区。我常用的六个数据源按「能覆盖多少」排序数据源能拿到什么常见缺口云平台控制台云主机、RDS、OSS、SLB 全量只管云上且可能有多个账号虚拟化平台vCenter/PVE虚机清单、IP、宿主机只管自建机房DHCP 服务器租约近期活跃的 IP 与 MAC静态 IP 的机器看不到DNS 内网解析记录有哪些域名在内部解析只覆盖有域名的服务堡垒机 / VPN 日志实际有人登录过的机器只覆盖被运维管到的EDR / 终端管理控制台装了 agent 的终端与服务器没装 agent 的就是盲区把六份清单按 IP 和主机名对齐会出现四种情况每种对应不同动作六份都有确认无疑直接进台账只有云平台/虚拟化有其他没有机器存在但从没人登录、也没装 agent这类最危险——通常是测试机、临时扩容、离职人员留下的只有 DHCP/DNS 有没有管理记录可能是员工私接的设备或者某个部门自己搭的服务只有堡垒机/EDR 有资产表里没有说明台账已经过期了六个数据源不是「能拿到就拿」是「找谁要、要什么格式」。新人最容易在这里浪费时间——跑到运维工位说「给我一份资产清单」对方只会给你一份三个月前的 Excel。正确的要法是明确说清要什么字段、什么格式、多久更新一次。数据源找谁要什么格式云平台云账号管理员全部账号下的 ECS/RDS/OSS/SLB 导出CSV含实例名、内网 IP、公网 IP、所属 VPC虚拟化平台机房运维虚机清单导出CSV含虚机名、IP、宿主机、电源状态DHCP网络运维近 7 天租约表CSV 或日志含 IP、MAC、主机名、租约时间内网 DNS网络运维全部 A 记录与 CNAME区域文件导出或截图堡垒机运维负责人近 30 天登录记录日志导出含源 IP、目标 IP、账号、时间EDR终端/桌面运维全部已注册终端CSV含主机名、IP、最后在线时间、agent 版本要的时候顺手问一句「这个数据多久更新一次、谁负责维护」。如果答案是「没人维护」那这份数据本身就说明了一个问题——你后面会反复用到这句话。第二种和第三种是新人最容易立功的地方。找到一台「没人认领但开着 22 端口、密码还是默认」的机器比写十页安全方案有用。补盲区可以用主动扫描但必须先拿到书面授权并限定网段。这一点不要图快扫到不该扫的段你第一个月就会结束。# 1) 先只做存活发现不做端口扫描快、噪声小 nmap -sn 10.10.0.0/22 -oG alive.gnmap # 2) 对存活主机做常见端口探测限速避免打满带宽 nmap -sS -Pn -p 22,80,443,3306,3389,6379,8080,9200 \ --max-rate 500 --open -iL alive.txt -oX ports.xml # 3) 从结果里只挑出资产台账里没有的 IP台账用 CSV第一列是 IP python3 - EOF import csv, re have {row[0].strip() for row in csv.reader(open(assets.csv))} import xml.etree.ElementTree as ET for h in ET.parse(ports.xml).getroot().iter(host): addr h.find(address).get(addr) if addr not in have: ports [p.get(portid) for p in h.iter(port)] print(addr, 未登记, ,.join(ports)) EOF第 3 步输出的那张表就是你第一周能交给 leader 的东西。它比任何汇报都实在。三、资产台账字段设计8 个就够多了没人填新人做台账最爱犯的错是字段设计过度——搞三十多列把「机房位置」「采购日期」「维保到期」「机柜编号 U 位」全列上。结果是谁都不填三个月后变成一张空表。先做最小可用版本八个字段字段说明为什么必须有资产 ID自己编全局唯一永不复用后面所有记录都要挂它主机名 / 系统名实际使用名不是采购名用于和日志、告警对齐IP主 IP多个用逗号用于和扫描结果对齐类型物理 / 虚机 / 云主机 / 网络设备 / 应用系统决定用哪套基线归属业务对应第一条里的业务线出事时判断影响面责任人具体到人不是部门派单、追责的唯一依据等级核心 / 重要 / 一般决定 SLA 和防护强度状态在用 / 闲置 / 待下线闲置机器是最容易被攻破的「责任人具体到人」这条要死守。写「运维部」等于没写因为没人会认。找不到责任人的资产本身就是一条要上报的风险。等级判定也别搞复杂三条标准停机会不会直接影响收钱、上面有没有个人信息、有没有公网可达入口。命中两条及以上算核心命中一条算重要都不中算一般。台账放哪别用本地 Excel。放团队共享的在线表格或 Wiki设两个人有编辑权、全员可读每次变更留一行 CHANGELOG。具体做法可以看 企业网络拓扑图怎么画才不过期那篇里的维护机制对台账同样适用。四、第三周从资产里挑三个系统做一次体检有台账之后最容易犯的第二个错是「想一次全做完」。全量基线核查听起来正确实际上新人推不动——你没权限、没窗口、没说服力。正确做法是挑三个系统做样板。挑的标准一个核心业务系统、一个对外有入口的系统、一个大家都不管的边缘系统。前两个能体现价值第三个能体现你发现了别人没发现的东西。体检不用上工具先做四件手工能查的事端口暴露面这台机器该开哪些端口实际开了哪些差额就是风险。账号与登录有多少个能登录的账号哪些是离职人员的有没有共享账号补丁水位操作系统和中间件版本对照公开漏洞库看有没有能远程打的。日志去了哪这台机器的日志有没有被采集出事后能不能查到 30 天前四件事做完每个系统出一页纸现状、问题、建议动作、需要谁配合。三页纸交给 leader你就有了第二个月的工作授权。两个能当天做完、当天出结论的动作体检项目里最有性价比的两个是端口暴露面和账号清理。它们不需要工具授权、不需要变更窗口只靠命令行就能做完。动作一端口暴露面收敛。拿核心系统的一台机器把它实际开着的端口和「业务上该开的端口」列出来对比。业务该开哪些端口问运维和开发别自己猜。# Linux看实际监听端口与对应进程 ss -tlnp | awk NR1{print $4, $6} # 只看对外可达的0.0.0.0 / ::本机回环的不算暴露面 ss -tlnp | awk NR1 $4 ~ /^(0\.0\.0\.0|\[::\]|\*):/ {print $4, $6} # Windows等同效果 # netstat -ano | findstr LISTENING判读只有一条标准这个端口是给谁用的。给内部管理用的22、3389、数据库端口不该出现在 0.0.0.0 上给公网用户用的80、443必须有前置的 WAF 或 LB。中间地带最常见的问题是「本机装了 Redis为了测试方便绑了 0.0.0.0 且没密码」这类机器在扫描结果里一抓一大把。动作二账号清理。离职人员账号没停、共享账号在用、测试账号带管理员权限这三件事几乎每家公司都有。# Linux列出所有可登录账号及最后登录时间 awk -F: ($31000 || $30) $7 !~ /(nologin|false)$/ {print $1, $3, $7} /etc/passwd lastlog 2/dev/null | awk NR1 || $2**lastlog里显示**且从未登录的账号和你手上花名册一比差额就是要处理的。Windows 侧看Get-LocalUser的LastLogon、以及域账号的「不活跃 90 天」清单。两个动作做下来你会发现的问题都很具体「这台机器 3306 绑在 0.0.0.0 上」比「建议加强网络安全防护」有用一万倍。这里有个心态问题值得说新人容易把「发现的问题多」当成成绩。不是。你列 80 个问题没人会改你列 8 个问题每个都写清「谁在多久内做什么」才会有动静。筛选比发现难也比发现值钱。五、第四周把三份东西沉淀下来第一个月结束你应该手上有三份东西缺一份都说明有环节没做完产物内容用途业务与系统关系图业务线 → 系统 → 数据判断影响面、排优先级资产台账 v1八个字段覆盖核心资产所有后续工作的底座三个系统的体检报告每个一页纸问题带责任人和时限争取第二个月的授权这三份东西的价值不在「好看」在于它们是可交接的。你休假、你离职、换人接手别人拿着能继续干。反过来如果你一个月下来只有一堆聊天记录和脑袋里的印象那这个月等于没做。六、被派去看一个陌生系统从哪下手第一个月里你大概率会接到这个活「这个系统是外包做的早没人维护了你看看有没有安全问题。」新人常见的错误是上来就扫漏洞扫出一堆结果但说不清这些结果在业务上意味着什么。正确顺序是先把它跑起来的样子搞清楚从外往里推。步骤看什么回答什么问题1. 入口前置的 Nginx / LB / 网关配置外网能访问到哪些路径转发到哪台机器2. 进程监听端口、启动参数、运行用户服务跑在什么身份下配置从哪加载3. 配置配置文件里的数据库、中间件、密钥依赖了什么有没有硬编码口令4. 日志日志写到哪、留存多久、有没有被采集出事了能不能查5. 数据连的哪个库、表里有什么、有没有个人信息泄露的影响面有多大第 1 步最关键因为暴露面由入口决定不是由应用决定。应用本身再安全网关把它整个转发到公网一样是问题。# 1) 看监听端口与对应进程先搞清这台机器上有几个服务 ss -tlnp # 2) 拿进程的启动参数找配置文件位置和运行身份 ps -eo pid,user,args | grep -E java|node|python|nginx | grep -v grep # 3) 顺藤摸瓜找配置以 Java 为例启动参数里通常带 -D 或 --spring.config ls -l /proc/$(pgrep -f java | head -1)/cwd find / -maxdepth 4 -name application*.yml -o -maxdepth 4 -name application*.properties 2/dev/null # 4) 看它开了到哪的对外连接依赖了哪些下游 ss -tnp state established | awk {print $5} | cut -d: -f1 | sort | uniq -c | sort -rn | head第 4 步的输出特别有用它直接告诉你这个系统依赖哪些下游。如果里面有公网地址那这条出站链路就是数据外流的可能路径也是应急时要优先封的方向。配置里看到硬编码的数据库口令、AK/SK别急着改。先记录再确认有没有别的地方在用。新人第一周就改生产配置是最容易出事的一种「积极」。走到第 5 步你基本能回答一句关键的话「这个系统如果被拿下会泄露什么、影响谁。」这句话是给业务方和领导听的比「存在 12 个高危漏洞」有用。七、新人最容易踩的五个坑第一先学工具再学业务。工具三个月就换代业务逻辑三年不变。你把这家公司的业务摸透了换个工具两周就上手反过来不成立。第二把「合规要求」当「安全目标」。等保要求什么就做什么做完发现该被攻破还是被攻破。合规是下限不是目标。等保具体怎么落可以看 等保 2.0 定级备案全流程。第三不敢问「蠢问题」。新人最大的优势就是可以问「这个系统为什么要这么设计」。这个问题老员工不敢问你问出来没人会怪你但答案往往指向真正的问题。第四一上来就想改流程。你还不了解现有流程为什么长这样。先按现有流程走一遍走不通的地方记下来三个月后再提。第五只跟安全团队的人说话。安全在甲方是支撑部门你的价值取决于业务方愿不愿意配合你。第一个月就认识几个业务和运维的人比多做十份报告有用。八、三个月后怎么证明你做的东西有用新人最怕的是「干了很多活但说不清价值」。给三个能拿数字说话的抓手盲区收敛台账覆盖的资产数 / 实际扫描发现的资产数第一个月可能只有 60%第三个月做到 90% 以上就是成果暴露面收敛核心系统对外暴露的高危端口数从多少个降到多少个响应能力随便挑一台核心机器问「它昨天谁登录过」从查不到到 5 分钟内能答上来这三个数都不需要预算也不需要采购全看你有没有把前面几周的事做实。最后说一句实话甲方安全新人前三个月最难受的不是技术难是没人给你明确的任务。这时候别等自己找一件「有台账、能量化、能交接」的事做起来。做完它你就从「新人」变成了「知道这家公司长什么样的人」——这个差别比会几个工具大得多。