尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

安全厂商IT工程师笔试复盘:从Linux加固到应急响应全解析

安全厂商IT工程师笔试复盘:从Linux加固到应急响应全解析 2020年秋招我投了奇安信的IT工程师岗位。简历过了之后收到的不是普通笔试而是一份标着“试卷2”的在线测评。当时我以为会和网上那些渗透测试题库一样全是注入、XSS、提权结果真正打开页面的时候人有点懵。这张卷子更接近“企业内部IT运维基础安全”的混合体纯攻防的题只占一部分反倒是Linux命令、网络故障排查、系统加固占了很大比例。做完一遍我对这个岗位的理解才真正清晰IT工程师不是网上说的“修电脑的”而是要能撑起安全公司内部的IT基础设施还要能用安全产品的视角去处理运维问题。这篇文章我就以这套试卷为引复盘当时的答题思路、踩过的坑以及考完之后总结的复习方向给准备冲安全厂商运维/IT岗的同学一个参考。1. 试卷2的题量结构和考点权重和我预判的差异先说结论这套试卷如果完全按“安全工程师”去准备大概率会吃亏按“懂安全的IT运维工程师”去准备反而顺手很多。1.1 题型和分值分布我拿到的试卷2大体由六类题组成题型数量单题分值考察方向单选题252分网络、Linux、Windows、安全基础多选题103分场景判断、易混淆概念判断题101分细节知识点、命令参数简答题35-8分系统加固、日志分析、网络故障排查编程题210分Python脚本、字符串处理综合场景题115分终端安全事件处置流程总分我记得是145分左右具体分数已经模糊了但结构很清晰。从知识点占比来看网络基础约30%Linux/Windows系统约30%安全基础约25%编程脚本约15%。这个比例和我预想的“安全厂商笔试攻防技术”完全不同。1.2 安全厂商IT工程师的笔试为什么会这么出奇安信的IT工程师岗位不是安全研究员也不是渗透测试工程师。它的定位更像“企业内部的甲方IT”需要维护公司办公网络、员工终端、服务器权限、账号体系同时因为公司本身做安全产品IT部门还承担着内部安全基线的落地。所以笔试里大量出现“员工电脑卡顿怎么排查”“服务器被上传了Webshell怎么办”这类题本质上是在模拟这个岗位的日常工作。反而我提前背的那些漏洞利用payload、渗透测试工具参数基本没用上。后来复盘我才意识到笔试题也好面试题也好都希望考察你能不能从“运维视角”处理安全风险而不是只停留在“工具人”层面。这一点贯穿了整张试卷尤其是简答和综合题背后的逻辑都是遇到问题先做什么再做什么怎么闭环。2. Linux运维与系统加固最容易丢分的基础题这套试卷真正拉开差距的是Linux基础题。不是考你“会不会用rm -rf”而是考你有没有在生产环境里处理过权限、防火墙和加固问题。2.1 iptables规则题你以为命令写对就完了有一道题大概是这样某台Linux服务器上跑了Web服务现在要求只允许办公网段192.168.10.0/24访问80端口管理网段10.10.0.0/16可以SSH登录其他来源一律拒绝。请写出iptables规则。很多人一上来就写iptables -P INPUT DROP iptables -A INPUT -s 192.168.10.0/24 -p tcp --dport 80 -j ACCEPT iptables -A INPUT -s 10.10.0.0/16 -p tcp --dport 22 -j ACCEPT这个顺序看起来很合理但有坑。因为默认策略已经是DROP你放行SSH和80之后服务器主动向外发起的连接和响应报文也进不来了比如更新软件、访问外部接口都会卡住。正确做法要先把回环接口和ESTABLISHED,RELATED状态放行再放行具体服务端口iptables -P INPUT DROP iptables -P FORWARD DROP iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -s 192.168.10.0/24 -p tcp --dport 80 -j ACCEPT iptables -A INPUT -s 10.10.0.0/16 -p tcp --dport 22 -j ACCEPT这题考的不只是命令语法更重要的是规则匹配顺序和“状态防火墙”的概念。iptables按顺序匹配一旦匹配就执行目标如果前面没有放行已建立的连接后面的放行规则对出站响应的回包是不生效的。我当时在“默认策略DROP”还是“默认策略ACCEPT然后最后拒绝”之间犹豫了很久最终选择了DROP加状态放行因为更安全也更贴合生产环境。2.2 文件权限和SUID送分题背后的提权风险另一道Linux题是找出系统中所有SUID文件并解释其风险。这题表面上是命令考察实际是安全加固的经典场景。找SUID文件的命令是find / -perm -4000 -type f -ls难点在于解释原因。SUID位的作用是当用户执行带有SUID的程序时该进程的有效身份会变成文件属主。典型例子是passwd命令普通用户通过它修改密码时需要临时获得root权限去写/etc/shadow。如果某个二进制文件不该有SUID却带了SUID位攻击者一旦找到利用方式就能直接提权。考试时我还补充了一句需要结合业务确认哪些SUID文件是必要的不必要的用chmod -s移除。比如某些老的sudo、mount、ping命令按最小权限原则都应该检查。这种题答到“为什么有风险、怎么发现、怎么处理”三层基本就是满分答案了。2.3 系统加固简答题从“会操作”到“能答题”简答题里有一道“Linux服务器上线前需要做哪些安全配置”这题没有标准答案但踩分点很集中。我当时的回答大概覆盖了修改默认SSH端口禁止root直接远程登录使用密钥认证设置密码复杂度策略和登录失败锁定策略最小化安装软件卸载不需要的服务配置防火墙仅放行必要端口定期安装安全补丁开启auditd审计日志统一收集日志到平台部署主机安全Agent比如奇安信天擎这类终端管理软件用于检测恶意进程、Webshell和异常外联。这里要提醒一点安全厂商的笔试不希望你只背加固项而是希望你理解每一项加固背后的威胁场景。比如“禁用root远程登录”防的是暴力破解后拿到最高权限“部署主机安全Agent”防的是单点防护不足。我在答题时把每个措施和对应风险串起来写面试官后来的反馈也说这样的答案更完整。3. 网络基础题里那些教科书不会明说的细节网络基础题占比很高但考察的不是大规模网络设计而是企业内网里每天都会遇到的场景。3.1 交换机VLAN和Trunk别把接口类型记混有一道VLAN划分题场景是公司有两个部门VLAN10和VLAN20分别接入两台交换机要求跨交换机通信。核心考点是Access口和Trunk口的区别。Access口只属于一个VLAN用于连接终端Trunk口用于交换机之间承载多个VLAN的流量。配置大致是这样# 交换机A vlan 10 vlan 20 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 10 20容易丢分的是忘了在Trunk口放行对应VLAN列表。如果Trunk口没有允许VLAN 20那么VLAN20的跨交换机通信直接就断了而且这类问题在真机上很隐蔽因为Trunk口本身状态还是up的。答题时我额外提了一句“Trunk口默认PVID是VLAN1不要把它和一个具体的业务VLAN混在一起”算是把常见坑也带上。3.2 OSPF邻居状态选择题的送命规律网络选择题里有一道OSPF邻居状态题广播网络中OSPF邻居稳定后处于什么状态答案是Full。但选项里很可能放一个2-Way这就是送命题。OSPF邻居状态机大概是Down - Init - 2-Way - ExStart - Exchange - Loading - Full。在广播网络中DR指定路由器和BDR备份指定路由器与所有邻居达到Full状态非DR/BDR之间停留在2-Way即可因为它们之间不直接交换链路状态信息。这个考点如果没做过实验纯背很容易混。我记这个状态机的技巧是把它拆成“邻居发现到2-Way、数据库同步ExStart到Loading、完全同步Full”三段。选择题考的是状态名简答题考的是同步过程同一个知识点其实有两层考法。3.3 “能ping通但网页打不开”这类问题怎么答还有一道综合题问内网某台服务器能ping通但通过浏览器访问业务系统一直超时可能原因有哪些这题没有标准答案但考察的是排查思路。我当时的回答分了几个方向防火墙拦了TCP端口比如80/443被策略拦截ICMP放行了但业务端口没放行Web服务本身没起来或者监听地址是127.0.0.1而不是0.0.0.0DNS解析到错误地址浏览器访问的域名解析结果和实际服务器IP不一致MTU问题业务数据包较大时触发分片异常小包ping正常而大包不通本地代理或浏览器插件干扰。排查步骤我会先测端口telnet IP 80或者curl -v看响应再查服务进程最后抓包看TCP握手是否完成。这道题让我吃了不少甜头因为面试官后来说他们特别看重这种“能用最简单的手段定位问题”的能力而不是一上来就抓包。4. 安全基础与业务场景题从漏洞判断到事件处置安全基础部分比想象中友好但更偏向“你能不能用安全产品的视角解决问题”。4.1 Web漏洞辨析三种场景怎么区分笔试题给出几个URL和现象让你判断分别属于什么漏洞。我又一次因为读题太快差点选错后来强迫自己逐个关键词标注。一个URL参数里出现“id1 and 11”明显是SQL注入测试语句一个网站的搜索框输入“ ”后弹窗是XSS一个应用参数里传入内网IP地址服务端去请求了这个内网资源是SSRF。这些概念本身不难但考试里不会直接写“这是什么漏洞”而是给一段描述。比如SQL注入那道题给的是“某系统登录接口收到异常请求数据库日志发现多条union查询”。你要从请求特征里识别出“union查询”这类注入特征。我的建议是不要只背漏洞名字要把每个漏洞的“触发点”和“核心特征”绑在一起记比如SQL注入查的是数据库交互层XSS查的是前端渲染层SSRF查的是后端发起HTTP请求的地方。4.2 终端告警处置完整链路这道题我觉得答得最好综合场景题给了一个很真实的场景员工反馈电脑卡顿、CPU占用率很高同时安全平台比如奇安信天擎的终端管理后台产生了一条告警某进程频繁向外部IP发起连接。作为IT工程师你怎么处置我当时没有直接回答“把电脑断网杀毒”而是分成了五步立即隔离终端在终端安全管理后台把该设备断网或隔离防止横向扩散保留现场采集进程信息、父子进程、启动项、服务列表、网络连接状态必要时把可疑文件复制出来做样本分析用本地杀毒引擎或沙箱检测可疑文件判断是木马还是误报排查影响面看同网段、同账号、同时间段有没有其他设备出现类似告警结合日志确定传播路径恢复与加固清理恶意文件、修改受影响账号密码、补丁更新并在全公司范围排查同类风险。这道题本质上考的是应急响应流程。答题时一定要有层次先控制影响再分析原因最后修复加固。我见过很多同学上来就说“重装系统”虽然也是一种解决方案但在企业环境里重装之前必须先搞清楚怎么进来的、有没有扩散否则很快会复发。奇安信本身就是做终端安全的公司这道题我答得最顺也让我意识到IT工程师必须懂应急响应的基本套路。4.3 密码学基础一张表记牢四类概念密码学考得不多但有一道选择题涉及对称加密、非对称加密、哈希和数字签名。四个概念容易混我自己总结过一张对比表类型密钥特点典型算法主要用途对称加密加密解密同一把密钥AES、DES数据加密传输非对称加密公钥加密、私钥解密RSA密钥交换、数字信封哈希算法不可逆SHA-256、MD5完整性校验数字签名私钥签名、公钥验证RSA签名身份认证、抗抵赖选择题问“哪种算法可以保证数据完整性”答案是哈希“哪种机制可以抗抵赖”答案是数字签名。这两类题只要把概念拆开记就不会错。在实际笔试中这类题就是送分题前提是你真能分清“加密”和“摘要”的区别。5. 编程与脚本能力我在这部分浪费了太多时间编程题一共两道限时都不长。我因为一开始在算法题上纠结太久导致第二道脚本题差点没写完。5.1 日志统计脚本实战比刷算法题更值钱第一道编程题是给一个nginx访问日志统计所有请求中404状态码的占比并输出访问次数最多的5个请求路径。这题很贴近IT运维日常。我的思路是读文件、按行拆分、提取状态码和请求路径、用字典统计。核心代码大概是这样from collections import Counter total 0 not_found 0 path_counter Counter() with open(access.log, r, encodingutf-8) as f: for line in f: parts line.split() if len(parts) 9: continue # nginx默认日志格式remote_addr - - [time] request status body_bytes_sent ... request parts[5].strip() # 请求方式比如 GET path parts[6] # 请求路径 status parts[8] # HTTP状态码 total 1 path_counter[path] 1 if status 404: not_found 1 if total 0: print(no data) else: print(404占比: {:.2f}%.format(not_found / total * 100)) for path, count in path_counter.most_common(5): print(path, count)这题其实不难但有几个小坑。日志列位置对不对如果日志格式不是默认格式字段索引会偏移。我用split粗暴切分适合默认格式如果带引号的request字段里有空格切分就会出问题。我当时注意到了所以加了字段长度判断。另外如果一行日志格式不完整直接按索引取会崩溃所以if len(parts) 9就跳过。这些“防御性写法”在阅卷时很加分。5.2 最长公共前缀算法题考的是边界第二道编程题是最长公共前缀给一个字符串数组返回所有字符串的公共前缀。我一开始想用“水平扫描”写后来又改成“垂直扫描”因为垂直扫描对边界更友好。def longest_common_prefix(strs): if not strs: return prefix strs[0] for i in range(len(prefix)): c prefix[i] for s in strs[1:]: if i len(s) or s[i] ! c: return prefix[:i] return prefix边界条件包括输入为空列表、列表里只有一个字符串、某个字符串比第一个短。这种题在LeetCode上属于简单级别但笔试时紧张起来很容易漏掉空列表判断。我在这题上花了太多时间纠结算法复杂度其实对于安全运维岗位能写出清晰、健壮的代码比追求最优解更重要。如果重新来一次我会先写边界判断再写核心逻辑最后再检查复杂度。5.3 安全厂商IT岗的刷题方向建议通过这套卷子我总结出安全厂商IT岗的编程题特点不考难题偏题更看重文件处理、字符串解析、正则表达式的应用。与其天天刷动态规划不如多练习用Python统计日志、提取关键字段写脚本批量修改文件权限或批量执行远程命令处理CSV、JSON格式的数据简单的字符串匹配、进制转换、URL解析。我是2020年秋招时才发现这个规律的当时已经来不及系统刷题。后来我把LeetCode简单题里所有“字符串操作、数组遍历、哈希表应用”的题都过了一遍明显踏实很多。6. 面试复盘考完试卷后我重新规划了复习路线笔试只是第一关真正让我对这份工作理解更深的是考完后重新梳理岗位要求的过程。6.1 笔试暴露的短板Windows域环境储备不足奇安信的IT工程师岗位日常要维护的员工终端大概率是Windows环境所以“AD域”相关知识点几乎是必须的。试卷里有一道题问“域用户被锁定如何在域控上解锁”我答得磕磕绊绊。还有一道题问组策略如何下发软件安装包我当时只写了“在GPO里配置”完全没有展开具体步骤。复盘后我专门补了Active Directory相关知识域控搭建、DNS集成、组策略编辑、账号锁定策略、OU组织单元设计。后来面试时被问到“员工离职后账号怎么安全处理”我能答出“禁用账号、移出所有组、重置密码、转移邮箱和文件权限”这串操作面试官明显点头了。6.2 梳理奇安信产品线让面试回答更贴合业务考完笔试后我把奇安信的产品线整体捋了一遍不追求深入但至少知道每个产品解决什么问题终端安全产品覆盖防病毒、EDR、桌面管理边界安全产品有下一代防火墙、入侵检测平台类产品有态势感知、安全管理平台还有漏洞扫描、代码审计等辅助产品。这样做的好处是面试聊到安全运营场景时我能自然地提到“如果把终端告警接入态势感知平台可以结合南北向流量做交叉分析”这就是业务贴合度。我不建议把产品功能介绍背下来而是把产品放在“安全事件处理链路”里去理解端点检测与响应负责终端侧防火墙负责边界侧SIEM/SOC负责整体分析。这样回答问题时就不再是“为了考试背产品”而是真的理解安全运维的架构。6.3 时间和资料分配建议如果现在有人要准备安全厂商的IT工程师岗位我的时间分配建议是30%时间给Linux命令、服务、权限、防火墙、系统日志25%时间给网络基础VLAN、路由、OSPF基础、TCP/IP协议栈25%时间给安全基础OWASP Top 10、应急响应流程、日志分析、终端安全概念20%时间给脚本编程Python文件处理、正则、简单算法题。资料方面Linux可以看鸟哥的私房菜基础篇网络可以看《TCP/IP路由技术》第一卷安全应急响应可以看奇安信官网的技术博客和公开的应急响应案例编程就直接在LeetCode刷“简单”难度下的字符串、数组、哈希表专题。关键是每学一个知识点都要动手做实验尤其是iptables和VLAN光看命令不搭环境过两天就忘。最后再分享一个小技巧。考完这套试卷以后我把所有错题按“原理没懂”和“粗心看错”分类发现一半以上是因为看题太快尤其是多选题里“选择不正确的”和“选择正确的”完全相反一不留神就掉坑。安全厂的笔试时间紧张题目里又经常玩文字游戏真得逐字读题。还有一个经验遇到不会的简答题别空着把你想到的关键词、排查步骤、处置环节写上去按点给分多少能拿一点。这套试卷让我把求职方向从“安全运维”修正成了“企业IT与安全兼备”回头看反而更值钱。
返回列表