ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

奇安信2020运维笔试:Linux、K8s与安全运维考点深度解析

2026/9/1 13:33:27 拓冰建站 浏览量
奇安信2020运维笔试:Linux、K8s与安全运维考点深度解析 看到“【2020】奇安信秋招运维方向试卷2”这个标题我第一反应是挺怀念的。2020年正好是云原生在国内大范围落地的节点也是安全厂商对运维岗位期望值发生转变的一年。奇安信这种以安全为主业的公司它出的运维卷子和普通互联网公司的运维卷子有明显区别不只是问你“服务挂了怎么重启”而是会延伸到“服务为什么会被打挂”“日志里哪条记录是入侵痕迹”这类偏安全视角的问题。这份试卷2按当时秋招的节奏大概率是笔试环节里的综合能力卷覆盖Linux、网络、容器、自动化、安全运维几个板块。这篇文章我就结合2020年行业公认的运维能力模型把这类卷子最可能出现的题型、背后考察点、以及复习时容易忽略的细节一次说清楚。1. 安全公司考运维到底在考什么先看懂奇安信的出题逻辑1.1 安全厂商运维岗位的画像如果只看“运维工程师”四个字很多人脑子里浮现的是装系统、配网络、重启服务、处理工单。但安全公司的运维岗画像是完全不同的你需要维护的是安全产品自身的基础设施这些系统本身就有高可用要求而且你还要能读懂攻击日志知道哪些流量是异常流量服务器被入侵后能快速定位问题。所以在奇安信这类公司的笔试里纯“背命令”的题占比不高更多是通过场景化问题来考察思维链路。比如同样问“系统负载很高怎么办”普通公司可能期待你回答“top看CPU、free看内存、iostat看IO”但安全厂商会把场景改造成“某安全平台节点负载飙升同时EDR上报该节点有异常外联行为你如何判断是资源不足还是中了挖矿木马”。这种题考的就不只是命令而是排查节奏、日志敏感度和安全常识。1.2 2020年技术风向对试卷的影响2019年到2020年容器化已经成为运维标配Kubernetes在生产环境的落地案例越来越多。当时很多公司已经开始把业务从虚拟机迁移到容器监控体系也从Zabbix逐步向Prometheus迁移。所以这份试卷里容器和编排相关的内容必然占一定比重而且不会只考“docker run的常用参数”会更倾向考工作原理和排查方法。另一个大背景是国产化和信创的推进奇安信这类公司当时和国产操作系统、国产数据库的适配项目很多。所以试卷里可能会出现一些围绕麒麟、统信UOS等国产系统的题目或者让我们结合等保2.0的要求谈安全运维方案。这两块是当年普通运维培训里很少覆盖的地方如果你是跨行业转岗来考这份卷子这块容易吃亏。2. 高频考点一Linux系统与命令怎么看一个人是不是“真运维”2.1 基础命令其实不基础Linux命令几乎是运维笔试的必考区但2020年秋招的难度已经不是“ls和cd怎么用”这种级别了。试卷往往会用几个细节题来筛人比如ls -l输出的每一个字段分别代表什么硬链接和软链接在inode层面有什么区别du和df看到的大小为什么可能不一致。这些问题表面问命令实际问的是文件系统原理。我当年复习时专门整理了这类容易被忽略的命令细节考察点常见问题需要掌握的原理文件链接硬链接能否跨文件系统inode与目录项的关系磁盘占用df显示100%但du统计很小为什么删除的文件仍被进程占用进程排查如何找到正在监听8080端口的进程ss -lntp/lsof -i日志处理统计access.log中访问量前五的IPawksortuniq -c像“删了文件但磁盘空间没释放”这种题真实场景里非常常见。当你用rm删掉一个大日志文件df -h依旧显示Usage 100%原因是有进程还持有这个文件的文件描述符。处理方式是用lsof | grep deleted找到对应PID再从业务层面决定是重启进程还是直接kill。笔试卷子里这类题就是想看你是不是只停留在“会用rm”还是真的理解文件描述符和磁盘占用的关系。2.2 systemd与内核参数2020年几乎必考2020年systemd已经全面取代SysV init成为主流发行版的默认初始化系统。试卷里关于systemd的题大概率围绕几个点systemctl的常用操作、unit文件的编写、journalctl查看日志的常见过滤方式以及如何设置服务开机自启、设置环境变量、限制资源使用。实际笔试中经常出现下面这种题写一个systemd service unit让某个脚本在开机后自动运行要求服务失败后自动重启。这个时候你需要写出完整的unit内容[Unit] DescriptionMy Custom Service Afternetwork.target [Service] Typesimple ExecStart/usr/local/bin/myservice.sh Restarton-failure RestartSec5 Userappuser EnvironmentJAVA_HOME/usr/local/java [Install] WantedBymulti-user.target除了能写出来还得知道几个关键参数的含义。Typesimple意味着ExecStart启动的进程就是主进程Restarton-failure只在异常退出时重启RestartSec是重启间隔。很多人能背下这段配置但问“如果服务进程fork到后台了还适合用simple类型吗”就答不上来这其实是Systemd核心概念之一的掌握程度测试。内核参数这块高频考的是sysctl.conf里的常用配置比如net.ipv4.ip_forward、fs.file-max、net.core.somaxconn、vm.swappiness。这些参数不是孤立记忆的要能说清每个参数影响什么场景比如net.core.somaxconn调大对高并发短连接服务有什么效果、vm.swappiness调低对数据库服务器有什么意义。安全厂商还会额外关心一些和网络连接状态相关的参数比如net.ipv4.tcp_syncookies在防洪泛攻击中的作用。2.3 用户权限与SELinux安全公司的加试题普通运维笔试里权限类题目通常停留在chmod/chown的数值写法。但安全公司的试卷会增加一个层面sudoer配置、ACL权限、setuid位以及SELinux。这里有个高频场景题某个Web服务无法绑定80端口但二进制文件本身确认没有配置错误你会怎么排查。懂一点的人会想到是权限问题因为1024以下的端口需要root权限。但更完整地回答应该是先看进程是以什么用户启动的再看有没有设置capabilities比如setcap cap_net_bind_serviceep /usr/bin/nginx最后再看SELinux的布尔值是否放行了相关端口绑定。SELinux这个点很多运维在实际工作中一遇到问题就setenforce 0然后在笔试里也这么答分数自然不会高。安全公司的运维卷反而会出这种题服务器业务报错dmesg里出现avc denied的记录问是什么原因、如何在不关闭SELinux的前提下解决。正确思路是用audit2why或audit2allow分析原因再决定是修改上下文类型还是添加布尔值规则。这种题考察的是你是否能在安全约束下完成运维动作而不是简单地用关闭防护来绕过问题。3. 高频考点二网络协议与排查运维的半条命3.1 TCP/IP三件套三次握手、TIME_WAIT、MTU网络题在运维笔试里的地位是稳固的2020年的试卷里也不例外。TCP协议是必考点但考的不是“三次握手各状态叫什么”那种背概念题而是更偏向结合ss、netstat和tcpdump输出判断问题。TIME_WAIT是我几乎每次都要建议死磕的知识点。试卷里常见的问法是压测时发现大量TIME_WAIT状态连接应用响应变慢如何优化。这背后涉及TCP四次挥手的流程、TIME_WAIT存在的两个意义可靠终止连接、让旧报文段在网络中消逝、以及优化手段的取舍。net.ipv4.tcp_tw_reuse能不能开、tcp_tw_recycle为什么在NAT环境下会有坑这些都是值得展开写的。MTU最大传输单元也是容易被忽略的考点。排查思路是你有一个场景两台服务器之间大包通信失败小包正常怀疑是MTU问题。验证方法是用ping -M do -s 1472测试不同大小的包找到临界值再结合中间设备的MTU设置做调整。笔试卷子里如果能完整写出排查链路比只说“MTU不一致”要有说服力得多。3.2 从DNS到HTTP常见故障链路运维面试里“用户反馈网站打不开”的故事是从不缺席的。这类题的考察核心是分层排查思路而不是让你记住某个单一命令。完整链路是先确认是单点问题还是大面积问题大面积问题先想到机房网络和运营商链路。用dig或nslookup查DNS解析是否正常注意本地DNS缓存和hosts文件的干扰。确认解析到的IP后用telnet或nc测试目标IP的端口连通性。连通后再用curl测试HTTP状态码和响应时间关注是不是有重定向循环。最后再深入应用层看后端服务日志和数据库连接。2020年的试卷里DNS缓存投毒、HTTP 502与504的区别、Connection: keep-alive对性能的影响都算高频考点。这里想强调一下HTTP状态码不只是背熟关键要能说清“当前架构某个环节异常时会出现什么码”。比如Nginx后端的PHP服务挂了访问大概率返回502如果负载均衡器把请求转发到没有响应能力的后端节点超时后会返回504。这种“结果反推原因”的能力比单独记住每一个状态码含义更实用。3.3 抓包分析的基本功安全公司运维卷相对普通公司卷的一个明显区别就是抓包分析出现的概率更高。这跟公司业务属性有关安全产品的日常运维里排查网络攻击、验证防护策略都离不开看包。所以tcpdump和Wireshark的知识点很容易出现在笔试里。需要掌握的不只是tcpdump -i eth0 port 80这种基础命令更关键的是会用表达式过滤特定特征比如抓取某个IP方向的流量tcpdump -i eth0 host 10.0.0.5 and tcp port 443 -w capture.pcap试卷里可能会给出一段tcpdump -nn -S输出让你判断这个TCP流的三次握手是否成功、有没有重传、数据包大小是多少等。要能看懂[SYN]、[SYN, ACK]、[ACK]这些标志位还要能从seq/ack号变化看出是否乱序或重传。这块没有捷径我自己复习时是搭了两台虚拟机故意制造丢包、乱序、MTU问题反复抓包对比比死记硬背有用得多。4. 高频考点三容器与Kubernetes2020年绕不开的云原生4.1 Docker基础与镜像瘦身2020年的运维笔试卷Docker基本是必出现但考察的重点已经从“怎么run一个容器”转向“怎么把镜像用好、把存储和网络理清”。比如多阶段构建是镜像瘦身的首选方案出题方式可能是给定一个Dockerfile指出它在生产环境里的问题并给出优化建议。常见问题包括使用latest标签导致不可复现、单层RUN堆积过多导致镜像层数膨胀、构建产物里包含了编译工具链和源码、没有设置.dockerignore把日志和临时文件打进上下文里。一个典型的优化后Dockerfile片段FROM golang:1.17 AS builder WORKDIR /app COPY . . RUN CGO_ENABLED0 go build -o app . FROM alpine:3.14 RUN apk add --no-cache ca-certificates COPY --frombuilder /app/app /usr/local/bin/app CMD [app]这里CGO_ENABLED0是为了静态编译否则在alpine这种精简镜像里跑会缺少动态链接库。为什么用alpine而不用ubuntu作为运行镜像也是笔试卷里爱问的点alpine体积小、攻击面少但它的musl libc和glibc在某些场景下有兼容性问题。能辩证地说出优劣而不是一味说“alpine就是最好的”才是面试官想看到的。4.2 Kubernetes核心概念与调度逻辑Kubernetes在2020年的秋招里已经进入运维笔试的常规范围但考察深度一般不会到源码级别更多是部署、调度、滚动更新和故障排查。Deployment的上线策略是高频题。滚动更新的逻辑是maxUnavailable和maxSurge两个参数控制节奏这俩参数在笔试里会以小计算题出现。比如一个Deployment有10个副本maxUnavailable25%maxSurge25%那么滚动更新期间最多有多少个Pod不可用、最多比期望值多出几个Pod。答案是不可用Pod最多2个总Pod数最多12个。这类计算题考的是你对滚动更新机制的理解而不是背参数名。另一个常见题型是排查Pod调度失败。题干通常会给出kubectl describe pod xxx的错误信息比如0/3 nodes are available: 1 node(s) had taint, 2 node(s) Insufficient cpu让你分析原因和解决办法。这种题要做好需要理解节点taint与toleration的机制、资源请求与限制的关系、以及nodeSelector/nodeAffinity的使用。4.3 containerd 与 CRI 的调用链路近期被反复搜索的技术点热搜词里“kubernetes是如何调用containerd的”是个很有意思的切入点。2020年Kubernetes 1.20版本里dockshim还活着但已经宣布即将被废弃容器运行时全面转向containerd的趋势已经很明显。所以考卷里如果涉及CRIContainer Runtime Interface大概率会问到Kubernetes与容器运行时的调用关系。到现在这个知识点仍然是高频搜索对象说明含金量一直在线。完整的调用链路是这样kubelet - CRI 接口 (gRPC) - containerd - runc (通过 containerd-shim 调用) - 真正的容器进程其中kubelet通过Unix socket通常是/var/run/containerd/containerd.sock以gRPC方式请求containerd创建Pod Sandbox、启动容器、拉取镜像等。containerd本身不是直接干活到底的那个它要再通过containerd-shim拉起一个runc进程由runc负责最终的namespaces、cgroups等内核特性设置创建出真正的容器进程。中间层的containerd-shim存在的意义是让容器的init进程不直接挂到kubelet或containerd的子进程下这样即使kubelet或containerd重启容器进程可以不受影响地继续运行。这道题的关联问法还有containerd和Docker的兼容层是怎么工作的如何用ctr命令操作containerd以及Kubernetes配置里kubelet的--container-runtime-endpoint如何指向containerd。2020年如果能把这层链路讲清楚在同类候选人中会是明显亮点。5. 安全运维的专项题从日志审计到漏洞闭环5.1 日志分析与入侵排查安全厂商的运维卷子总会保留一道“日志分析”题而且难度不会低。常见出题形式是给出一段Linux登录日志或应用访问日志让你指出里面的异常现象和可能原因。Linux登录日志在系统运维里有几个关键路径/var/log/secureCentOS/RHEL系记录认证和授权信息/var/log/auth.logDebian/Ubuntu系对应文件/var/log/wtmp记录成功登录的二进制日志用last查看/var/log/btmp记录失败登录的二进制日志用lastb查看/var/log/journal/systemd的日志目录可用journalctl查询入侵排查的常见思路是找出异常登录行为比如短时间内大量失败的SSH登录尝试、非常规时间点的登录记录、来自异常来源IP的登录。在笔试里如果让你写命令可以用awk系列组合lastb | awk {print $3} | sort | uniq -c | sort -rn | head这条命令统计失败登录来源IP的Top列表lastb输出中的第3列是来源IP。如果有某个IP的失败次数异常高基本可以判断为暴力破解尝试。进一步还可以查看journalctl _COMMsshd来定位具体时间范围内的SSH日志。日志分析里另一个常考点是Web日志比如Nginx访问日志中的SQL注入特征、扫描器特征和异常User-Agent。试卷给一段access_log让你找出疑似攻击请求并说明理由这时你需要关注URL参数中是否有union select、sleep()、eval(等特征串以及请求是否有自动化的高频率特征。5.2 基线检查与安全加固等保2.0在2019年12月正式实施2020年的安全运维笔试里提到“基线”几乎是必然事件。出题方向通常是给你一台新上线的Linux服务器要求按照安全基线完成加固请列出需要检查的要点。常规回答应该覆盖这些层面账号与口令策略设置密码复杂度、有效期90天、连续5次输入错误锁定账号SSH安全禁止root直接登录修改默认端口启用密钥登录限制允许登录用户系统服务禁用不必要的服务删除不必要的默认账号网络防护使用iptables或firewalld限制外部访问关闭无用端口文件系统关键目录如/tmp单独分区设置合适的挂载权限日志配置开启syslog/auditd确保日志保留周期足够内核参数开启net.ipv4.tcp_syncookies、禁用IP转发除非需要、开启反向路径过滤我提醒一下2020年考这类题时很多答案都停留在“禁用root登录、改SSH端口”这种通用层面。如果能在答案里加入“用ss -tlnp检查当前监听端口确认所有监听服务都在预期范围内”会让答案更具实操感。能结合Nmap扫描命令提及用nmap -sV -p- 127.0.0.1做本机端口扫描复核这在安全公司会更加分。5.3 应急响应的标准处置流程应急响应题是安全厂商笔试卷里区分度最高的一类题。试卷不会直接问你“什么是应急响应”而是给你一个虚构事件要求你给出处置计划。比如某业务服务器被入侵并确认有恶意进程如何处理。答题时比较推荐的思路是分段推进隔离立即在交换机或防火墙上限制该服务器对外通信防止数据外泄和横向移动但保留SSH登录和取证通道。保全证据使用sysdig或auditd记录关键操作复制内存镜像、保留原始日志、记录进程列表和网络连接状态。不要急着重启服务器因为重启会丢失内存中的证据。分析判断查进程树和关联的可疑文件、检查计划任务和启动项、排查SSH密钥和后门账号、看日志里的登录和命令执行记录。清除与加固删除恶意文件、清理后门账号和计划任务、修复漏洞来源同时对所有账号启用强口令并更新密钥。恢复验证将服务切回正常持续监控一段时间确保无二次入侵迹象。这道题的核心逻辑是让阅卷人看到你有“先保护现场、再分析、最后恢复”的节奏感。很多人会犯的错误是一上来就kill -9 pid这在真实应急里是大忌因为PID对应的进程信息、文件路径和网络连接都可能随之消失。笔试卷里如果能点出“不能直接kill先保留现场”就能和只有课本知识的人拉开距离。6. 自动化与脚本运维开发的隐形分水岭6.1 Shell脚本的常见考题陷阱运维笔试里写脚本属于基础能力测试而2020年的卷子开始明显加大了对“健壮性”的考察。题目可能是写一个脚本每天凌晨3点备份/data目录保留最近7天的备份并记录日志。很多人能写出基本逻辑但细节处全是坑。一个比较稳妥的版本#!/bin/bash set -euo pipefail BACKUP_DIR/backup SOURCE_DIR/data KEEP_DAYS7 LOG_FILE/var/log/backup.log TIMESTAMP$(date %Y%m%d_%H%M%S) log() { echo $(date %Y-%m-%d %H:%M:%S) $* ${LOG_FILE} } if [ ! -d ${BACKUP_DIR} ]; then log ERROR: backup dir not exist exit 1 fi tar czf ${BACKUP_DIR}/data_${TIMESTAMP}.tar.gz -C ${SOURCE_DIR} . find ${BACKUP_DIR} -name data_*.tar.gz -mtime ${KEEP_DAYS} -delete log backup done: ${TIMESTAMP}这里有几个点是笔试里容易被追问的set -euo pipefail分别是什么意思为什么脚本里要加它tar用-C指定目录后再后面用.而不直接用绝对路径是为了避免备份出“绝对路径解包覆盖根目录”的问题find配合-mtime删除过期备份为什么不建议用rm -f叠foreach硬删。另一个高频坑是Shell变量引号问题。$SOURCE_DIR如果不加双引号一旦路径里有空格并且命中了文件通配符就会造成不可预期的展开。这类细节最能看出平时是否真写过脚本因为默认情况下初学Shell的人都不会加引号。6.2 Python运维场景文本处理与接口交互2020年的运维笔试里Python已经不算是加分项而是隐性要求因为纯粹的Shell脚本在复杂文本处理、调用API、处理多线程任务时效率不高。笔试里的Python题不会太难但会贴近运维场景。比较典型的题是写一个Python脚本从Nginx访问日志中统计状态码为5xx的请求Top 10。这个题可以用正则表达式解析日志也可以用更运维化的方式import re from collections import Counter log_path /var/log/nginx/access.log pattern re.compile(r(\d\.\d\.\d\.\d)\s.*?(\w)\s(\S)\sHTTP/\d\.\d\s(\d{3})) counter Counter() with open(log_path, r, errorsignore) as f: for line in f: m pattern.match(line) if m and m.group(4).startswith(5): counter[m.group(1)] 1 for ip, cnt in counter.most_common(10): print(f{ip}\t{cnt})这里值得展开的考点是为什么要用errorsignore处理日志文件的编码问题re.match和re.search的区别Counter.most_common的返回结构。如果试卷里要求“用一行命令实现同样功能”就要知道awk版本怎么写。两种方式的能力模型是互补的笔试里两种都能写出来才是稳妥状态。Python在运维笔试里还可能结合接口交互出题比如调用某个监控平台的API查询告警列表或者用requests调用内部接口推送消息。2020年正好是运维平台化概念从概念走向落地的阶段这类题的出现是在筛选有“运维开发”潜质的候选人。7. 回顾2020再看当前运维面试的变化7.1 从“会不会”到“懂不懂原理”把2020年的试卷放到现在来看最大的变化是知识深度要求明显提升了。当年可能只要知道“Docker怎么用”就行现在的面试更倾向刨根问底到内核和底层运行时比如容器网络CNI怎么实现、Pod的cgroup如何管理、Kubernetes调度器有哪些可插拔组件。热搜词里“linux常用命令大全运维”和“kubernetes是如何调用containerd的”能同时出现也说明这个行业正在两极分化初级岗位还在背命令高级岗位已经在追底层原理。另一个趋势是AIOps的渗透。前几年聊智能运维还是概念现在从监控告警到日志分析、根因定位AI参与的比重越来越大。奇安信这类安全公司本身就擅长利用大数据和AI做安全分析运维侧的AI能力也会体现在笔面试里比如如何用算法对海量日志做异常检测、如何做告警降噪。这些东西当然不会出现在2020年的试卷里但如果你是现在准备这个方向的岗位建议在复习经典运维知识的基础上额外关注一下机器学习在日志异常检测里的基本方法。7.2 给正在准备运维笔试的人一些实在建议结合这份试卷和这几年的技术变化我总结了几个在准备运维笔试时可以反复用的方法第一以“故障场景”为单位做复习而不是以“命令”为单位。不要单独背20个Linux命令而是把“网站打不开”“磁盘IO爆高”“容器频繁重启”这些场景当作一个整体梳理出从现象到定位再到解决的完整链路。这种思路在面对任何一家公司的运维笔试题时都通用。第二动手搭实验环境把每个命令跑一遍。看十遍tcpdump的教程都不如自己抓一次包看一遍SYN到FIN的完整过程。现在用虚拟机模拟一个多节点环境也不难自己动手搭一个Kubernetes集群实际看一下kubectl describe和kubectl logs在故障场景下的输出比任何背诵都有效。第三关注安全视角这是你和其他运维候选人拉开差距的地方。无论是2020年还是现在安全公司的运维岗一定会在笔试里包含安全元素。平时多积累一些入侵排查的日志特征、系统加固的最佳实践、应急响应的标准流程它们看起来是不是最常用的但在安全厂商的筛选里非常重要。第四重视表达条理。笔试问答题其实不只是考你会不会也考你能不能把已知的东西有条理地说出来。我的习惯是写答案时分步骤写把一个问题的排查链路拆成“先检查什么、再判断什么、最后处理什么”这样阅卷人一眼就能看出你的思路是完整的。准备运维方向的笔试特别是安全厂商的岗位本质上是在证明两件事一是你对系统底层的运行机制真的理解二是在安全事件发生时你能冷静地按流程处理。2020年的试卷是这套逻辑的体现现在只是在这个基础上要求更深、更广。把这个底层逻辑想清楚不管卷子年份是哪年你都能找到复习的主线。