“做了 3 年 Linux 运维,天天用grep查日志、iptables配端口,想转安全运维却不知道从哪切入;听说要学 Wazuh、Splunk,担心又要从头学新工具;面试时被问‘怎么找服务器里的恶意进程’,只会说‘用 ps 看进程’,说不出安全分析思路”—— 这是多数运维转型安全运维的典型困境。
其实安全运维的核心能力,早已藏在你日常的运维操作里:你用grep查应用日志,稍作调整就能分析攻击日志;你用iptables配端口访问,改改规则就能封禁恶意 IP;你部署过 ELK 收集业务日志,换个日志源就是安全日志分析平台。本文帮你把运维技能 “升级” 为安全运维能力,5 个复用命令 + 1 个 ELK 实战,1 周就能上手,不用学复杂新工具。
一、先搞懂:运维转安全运维的 “天然优势”
你不用从零开始,这些运维技能就是你的 “安全敲门砖”:
系统熟度:懂 Linux 文件权限、进程管理、服务配置,能快速定位 “异常文件”“可疑进程”(安全运维的核心场景);
工具复用:会用 ELK、Prometheus 等监控工具,转安全时只需换 “日志源”(从业务日志到安全日志)、改 “分析维度”(从性能指标到攻击行为);
故障思维:日常排查 “应用宕机”“网络不通” 的逻辑,和安全运维 “排查入侵事件” 的思路高度一致(都是 “发现异常→定位原因→解决问题”)。
安全运维不是 “全新领域”,而是运维的 “安全方向深化”—— 你缺的不是技能,而是 “安全场景的技能迁移”。
二、5 个复用命令:从 “日常运维” 到 “安全分析”
这 5 个命令你每天都用,但在安全场景下只需调整参数或思路,就能实现 “漏洞排查、恶意行为溯源、攻击拦截”,每个命令都附 “运维日常用法” vs “安全运维用法” 对比,帮你快速切换思维。
命令 1:grep(日志分析→安全日志溯源)
运维日常用法
查应用错误日志:grep “ERROR” /var/log/tomcat/catalina.out
统计关键词出现次数:grep -c “Timeout” /var/log/nginx/access.log
安全运维用法(核心场景:找攻击 IP、定位入侵痕迹)
- 找 SSH 暴力破解 IP(分析auth.log,运维熟悉的系统日志):
 
# 1. 筛选登录失败记录,提取IP(Failed password是关键词)
grep "Failed password" /var/log/auth.log | awk '{print $11}' > failed_ips.txt
# 2. 统计IP出现次数(降序,找出攻击最频繁的IP)
sort failed_ips.txt | uniq -c | sort -nr | head -10
# 输出示例:203 192.168.1.100(该IP尝试登录203次,大概率是攻击IP)
- 找 Web 后门文件痕迹(分析 Web 访问日志,找可疑路径):
 
# 筛选含webshell、phpmyadmin等关键词的请求(运维熟悉的Nginx日志)
grep -E "webshell|phpmyadmin|eval(" /var/log/nginx/access.log | awk '{print $1,$7}'
# 输出示例:10.0.0.5 /upload/webshell.php(该IP访问可疑路径,需重点排查)
实战价值
不用学新工具,用grep+awk+sort就能完成 “攻击 IP 识别”,比用商业扫描器更灵活,适合应急响应场景。 
命令 2:ps(进程管理→恶意进程排查)
运维日常用法
查指定进程:ps -ef | grep tomcat
看进程资源占用:ps aux --sort=-%cpu | head -5(按 CPU 降序)
安全运维用法(核心场景:查挖矿进程、木马进程)
- 查 CPU / 内存高的可疑进程(挖矿进程常占满 CPU):
 
# 1. 按CPU降序,排除已知正常进程(如ssh、nginx),找陌生进程
ps aux --sort=-%cpu | grep -vE "ssh|nginx|mysql|java" | head -10
# 2. 查看可疑进程的完整命令行(避免进程名伪装,如伪装成"system")
ps auxww | grep 12345  # 12345是可疑进程PID,ww显示完整命令
# 输出示例:root 12345 99.0 5.0 100000 50000 ? R 10:00 2h ./mine.sh -o http://挖矿地址 (确认是挖矿进程)
- 查进程关联的文件路径(定位恶意文件):
 
# 用/proc文件系统找进程对应的可执行文件(运维熟悉的系统特性)
ls -l /proc/12345/exe  # 12345是PID,exe是符号链接,指向进程文件
# 输出示例:lrwxrwxrwx 1 root root 0 11月 20 10:00 /proc/12345/exe -> /tmp/mine.sh(恶意文件路径)
实战价值
运维熟悉ps,但安全场景更关注 “陌生进程 + 完整命令 + 文件路径”,这三步能快速定位挖矿、木马等恶意行为,是安全运维的 “基础操作”。 
命令 3:netstat/ss(网络监控→异常连接排查)
运维日常用法
查端口占用:netstat -tuln | grep 8080 或 ss -tuln | grep 8080
查进程对应的端口:netstat -tulnp | grep tomcat
安全运维用法(核心场景:找对外恶意连接、未授权端口)
- 查对外可疑连接(木马常主动连接控制端):
 
# 1. 查所有ESTABLISHED状态的连接,排除内网IP(假设内网是192.168.1.0/24)
netstat -antp | grep ESTABLISHED | grep -v "192.168.1."
# 输出示例:tcp 0 0 10.0.0.10:54321 203.0.113.10:8080 ESTABLISHED 12345/./backdoor(对外异常连接)
# 2. 用ss更高效(大并发场景):
ss -antp | grep ESTAB | grep -v "192.168.1."
- 查未授权开放的高危端口(如 3389、445,易被攻击):
 
# 查监听0.0.0.0(对公网开放)的高危端口(3389 RDP、445 SMB)
ss -tuln | grep -E ":3389|:445" | grep "0.0.0.0"
# 若输出结果,说明端口对公网开放,需用iptables封禁
实战价值
运维每天查端口,安全场景只需多关注 “对外连接 + 非内网 IP + 高危端口”,就能发现木马连接、端口暴露等安全风险,操作零门槛。 
命令 4:iptables(端口控制→恶意 IP 封禁)
运维日常用法
开放端口:iptables -A INPUT -p tcp --dport 80 -j ACCEPT
端口转发:iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
安全运维用法(核心场景:封禁攻击 IP、限制高危端口访问)
- 临时封禁 SSH 暴力破解 IP(结合前面grep找出的攻击 IP):
 
# 封禁192.168.1.100(攻击IP),拒绝所有连接
iptables -A INPUT -s 192.168.1.100 -j DROP
# 若只需封禁SSH端口(22),更精准:
iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j DROP
- 限制高危端口仅内网访问(如 MySQL 3306,只允许内网 IP 连接):
 
# 先拒绝所有IP访问3306
iptables -A INPUT -p tcp --dport 3306 -j DROP
# 再允许内网192.168.1.0/24访问3306
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT
- 保存规则(避免重启失效,运维熟悉的操作):
 
# CentOS:
service iptables save
# Ubuntu:
iptables-save > /etc/iptables/rules.v4
实战价值
iptables是运维的 “老熟人”,转安全后直接用它做 “攻击拦截”,不用学新的 WAF 规则,应急响应时能快速止损。 
命令 5:find(文件管理→恶意文件定位)
运维日常用法
找指定文件:find /var/log -name “*.log”
按修改时间找文件:find /tmp -mtime -1(找 1 天内修改的文件)
安全运维用法(核心场景:找 webshell、挖矿脚本、隐藏文件)
- 找近期新增的可执行文件(恶意脚本常放 /tmp、/var/tmp):
 
# 找/tmp目录下1天内新增的可执行文件(+x权限)
find /tmp -type f -mtime -1 -perm +x -exec ls -l {} ;
# 输出示例:-rwxr-xr-x 1 root root 1024 11月 20 09:30 /tmp/mine.sh(可疑可执行文件,需检查)
- 找含恶意代码的文件(如 webshell 中的 eval、assert 函数):
 
# 筛选含webshell、phpmyadmin等关键词的请求(运维熟悉的Nginx日志)
grep -E "webshell|phpmyadmin|eval(" /var/log/nginx/access.log | awk '{print $1,$7}'
# 输出示例:10.0.0.5 /upload/webshell.php(该IP访问可疑路径,需重点排查)
0- 找隐藏文件(文件名以。开头,恶意文件常伪装隐藏):
 
# 筛选含webshell、phpmyadmin等关键词的请求(运维熟悉的Nginx日志)
grep -E "webshell|phpmyadmin|eval(" /var/log/nginx/access.log | awk '{print $1,$7}'
# 输出示例:10.0.0.5 /upload/webshell.php(该IP访问可疑路径,需重点排查)
1实战价值
运维用find管理文件,安全场景只需加 “权限、时间、内容特征” 筛选条件,就能定位 webshell、挖矿脚本等恶意文件,比用专业查杀工具更灵活。 
三、1 个 ELK 实战:SSH 暴力破解日志分析(1 周上手)
ELK(Elasticsearch+Logstash+Kibana)是运维常用的日志分析平台,转安全运维后,用它做 “安全日志分析” 不用学新工具,只需换 “日志源”(从业务日志到系统安全日志)。本实战以 “SSH 暴力破解溯源” 为场景,全程用 Docker 部署(运维熟悉的方式),1 周即可完成从环境搭建到安全分析的全流程。
实战目标
用 Filebeat 收集 Linux 的/var/log/auth.log(SSH 登录日志);
用 Elasticsearch 存储日志,Logstash 过滤字段(提取 IP、登录结果);
用 Kibana 做可视化分析(攻击 IPTOP10、登录失败趋势图);
产出《SSH 暴力破解分析报告》,定位攻击源并提出防护方案。
实施步骤(分 5 天,每天 1-2 小时)
Day1:环境搭建(Docker-compose 一键部署 ELK)
运维熟悉 Docker,用 Docker-compose 避免复杂的依赖配置:
新建docker-compose.yml文件(复制即用): 
# 筛选含webshell、phpmyadmin等关键词的请求(运维熟悉的Nginx日志)
grep -E "webshell|phpmyadmin|eval(" /var/log/nginx/access.log | awk '{print $1,$7}'
# 输出示例:10.0.0.5 /upload/webshell.php(该IP访问可疑路径,需重点排查)
2配置 Logstash(过滤auth.log字段): 
新建logstash/pipeline/logstash.conf: 
# 筛选含webshell、phpmyadmin等关键词的请求(运维熟悉的Nginx日志)
grep -E "webshell|phpmyadmin|eval(" /var/log/nginx/access.log | awk '{print $1,$7}'
# 输出示例:10.0.0.5 /upload/webshell.php(该IP访问可疑路径,需重点排查)
3配置 Filebeat(收集auth.log): 
新建filebeat.yml: 
# 筛选含webshell、phpmyadmin等关键词的请求(运维熟悉的Nginx日志)
grep -E "webshell|phpmyadmin|eval(" /var/log/nginx/access.log | awk '{print $1,$7}'
# 输出示例:10.0.0.5 /upload/webshell.php(该IP访问可疑路径,需重点排查)
4启动 ELK: 
# 筛选含webshell、phpmyadmin等关键词的请求(运维熟悉的Nginx日志)
grep -E "webshell|phpmyadmin|eval(" /var/log/nginx/access.log | awk '{print $1,$7}'
# 输出示例:10.0.0.5 /upload/webshell.php(该IP访问可疑路径,需重点排查)
5Day2:验证日志采集
访问 Kibana:浏览器打开http://你的IP:5601(运维熟悉的 Web 界面);
创建索引模式:
左侧菜单→Stack Management→Index Patterns→Create index pattern;
输入ssh-log-*(匹配 ES 中的索引),按提示完成创建;
验证字段: 
左侧菜单→Discover→选择ssh-log-*索引,查看日志是否包含ssh_ip(登录 IP)、ssh_result(success/failed)字段 —— 有则说明采集成功。 
Day3:Kibana 可视化分析(安全场景核心)
运维熟悉 Kibana 的可视化功能,重点做 3 个安全分析图表:
- SSH 登录失败 TOP10 IP(定位攻击源):
 
左侧菜单→Visualize Library→Create visualization→选择 “Horizontal Bar”;
聚合方式:Y 轴选 “Terms”,字段选ssh_ip.keyword,排序选 “Count” 降序;
筛选条件:添加过滤器ssh_result: failed(只看失败记录);
保存图表,命名为 “SSH 暴力破解 IP TOP10”—— 能直观看到攻击最频繁的 IP。
- SSH 登录失败趋势图(看攻击时间分布):
 
Create visualization→选择 “Line”;
X 轴选 “Date Histogram”,字段选@timestamp,间隔选 “1 小时”;
筛选条件:ssh_result: failed;
保存图表,命名为 “SSH 登录失败每小时趋势”—— 能看到攻击高峰时段(如凌晨 2-4 点)。
- SSH 登录结果饼图(看整体安全态势):
 
Create visualization→选择 “Pie”;
聚合方式:“Terms”,字段选ssh_result.keyword;
保存图表,命名为 “SSH 登录结果分布”—— 若失败占比过高(如 > 80%),说明存在严重暴力破解。
Day4:攻击溯源与防护
- 定位攻击 IP:
 
从 “TOP10 IP” 中选排名第一的 IP(如 192.168.1.100),在 Discover 中筛选ssh_ip: 192.168.1.100;
查看该 IP 的登录记录:攻击时间(如每天凌晨 2 点)、尝试的用户名(如 root、admin、test)—— 这些是溯源关键信息。
- 实施防护:
 
用iptables封禁攻击 IP(复用前面的命令): 
# 筛选含webshell、phpmyadmin等关键词的请求(运维熟悉的Nginx日志)
grep -E "webshell|phpmyadmin|eval(" /var/log/nginx/access.log | awk '{print $1,$7}'
# 输出示例:10.0.0.5 /upload/webshell.php(该IP访问可疑路径,需重点排查)
6长期防护:修改 SSH 配置(/etc/ssh/sshd_config),禁用 root 登录(PermitRootLogin no)、限制密码尝试次数(MaxAuthTries 3),重启 SSH 服务(systemctl restart sshd)。 
Day5:输出分析报告
整理实战成果,撰写《SSH 暴力破解日志分析报告》(运维熟悉的报告格式),核心内容:
分析背景(监控 SSH 登录日志,排查暴力破解);
攻击现状(TOP10 攻击 IP、攻击高峰时段、失败占比);
溯源结果(攻击 IP、尝试用户名、攻击频率);
防护措施(临时封禁 IP、长期 SSH 配置优化);
后续建议(开启 SSH 密钥登录、部署 fail2ban 自动封禁)。
实战成果(简历可写)
✅ “基于 ELK(Docker 部署)完成 SSH 暴力破解日志分析实战:
日志采集:用 Filebeat 收集 Linuxauth.log,Logstash 过滤提取ssh_ip(登录 IP)、ssh_result(登录结果)字段,存储到 Elasticsearch;
可视化分析:在 Kibana 制作 3 个安全图表(攻击 IP TOP10、失败趋势图、登录结果分布),定位出 2 个高频攻击 IP(192.168.1.100/101),攻击高峰集中在凌晨 2-4 点;
防护落地:用 iptables 封禁攻击 IP,修改 SSH 配置禁用 root 登录、限制密码尝试次数,后续登录失败率下降 90%;
成果输出:撰写《SSH 暴力破解分析报告》,含 5 张图表、3 条防护方案,具备安全日志分析与应急响应能力。”
四、简历写法:突出 “运维 + 安全” 的复合能力
1. 技能栏(复用运维技能,强调安全场景)
✅ 正确写法:
“Linux 运维:熟练使用 grep/ps/iptables/find 等命令进行安全日志分析(如 grep 分析 auth.log 找暴力破解 IP)、恶意进程排查(ps 查挖矿进程)、攻击 IP 封禁(iptables);
日志分析:精通 ELK 部署与配置,能用 Filebeat 收集安全日志(auth.log/nginx 访问日志),通过 Kibana 可视化分析 SSH 暴力破解、Web 攻击等场景;
安全防护:熟悉 Linux 系统安全配置(SSH 密钥登录、密码复杂度、日志轮转),能独立完成服务器安全基线检查与应急响应。”
❌ 错误写法:
“会用 Linux 命令,懂 ELK,了解安全运维。”
2. 项目经验(ELK 实战的完整表述)
✅ 正确写法:
“Linux 服务器 SSH 暴力破解分析与防护项目
背景:针对服务器频繁 SSH 登录失败,需定位攻击源并实施防护;
行动:
用 Docker-compose 部署 ELK,配置 Filebeat 收集/var/log/auth.log,Logstash 提取ssh_ip、ssh_result字段;
在 Kibana 制作攻击 IP TOP10、登录失败趋势图,发现 2 个高频攻击 IP(尝试登录超 200 次 / IP);
用 iptables 临时封禁攻击 IP,修改 SSH 配置(禁用 root 登录、MaxAuthTries=3),部署 fail2ban 自动封禁工具;
成果:登录失败率从 85% 降至 10%,输出含可视化图表的分析报告,形成《SSH 安全配置规范》,可复用至 10 台服务器。” 
五、避坑指南(运维转安全运维常踩的 3 个问题)
1. 坑 1:ELK 日志采集不到auth.log
原因:Filebeat 容器没有读取auth.log的权限(Linux 系统日志默认权限是 600,只有 root 能读);
解决:
docker-compose.yml中给 Filebeat 加user: root(如本文配置);
本地auth.log权限调整为 644(chmod 644 /var/log/auth.log),确保容器内 root 能读取。
2. 坑 2:grep分析日志时关键词匹配不到
原因:auth.log格式因系统版本不同有差异(如 CentOS 和 Ubuntu 的字段顺序不同);
解决:
先看auth.log的实际格式(head -10 /var/log/auth.log);
调整grep关键词,比如 Ubuntu 的 Failed 记录是 “Failed password for”,CentOS 是 “Failed password”,可加-E模糊匹配(grep -E “Failed password”)。
3. 坑 3:iptables封禁 IP 后重启失效
原因:未保存 iptables 规则,Linux 重启后规则默认清空;
解决:
CentOS:service iptables save 或 iptables-save > /etc/sysconfig/iptables;
Ubuntu:iptables-save > /etc/iptables/rules.v4,并安装iptables-persistent(apt install iptables-persistent)确保开机加载。
最后:运维转安全运维的 “1 个月进阶路线”
第 1 周:熟练 5 个复用命令的安全用法,完成 ELK SSH 日志分析实战,产出分析报告;
第 2 周:学习服务器安全基线(如 CIS 基线),用find+grep做基线检查(如找世界可写文件、空密码账户);
第 3 周:部署 fail2ban(自动封禁暴力破解 IP)、ossec(主机入侵检测),复用 Docker 简化部署;
第 4 周:整理所有实战成果(命令脚本、ELK 配置、基线报告),上传 GitHub,优化简历。
运维转安全运维,不是 “放弃原有技能”,而是 “在熟悉的领域加安全维度”—— 你每天用的命令、部署的工具,都是转型的 “垫脚石”。重点是从 “关注业务可用性” 转向 “关注业务安全性”,1 周上手,1 个月就能形成竞争力。
网络安全学习包
成长路线图&学习规划
配套视频教程
SRC&黑客文籍
护网行动资料
黑客必读书单
面试题合集
关注公众号:扳手讲安全
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……


		
		
		

还没有评论,来说两句吧...