ELK日志分析实战:从异常流量定位提权攻击
摘要:本文通过模拟真实攻防场景,结合ELK技术栈(Elasticsearch+Logstash+Kibana),演示如何从海量服务器日志中快速定位异常流量并追踪提权攻击行为。包含完整的日志收集方案、攻击特征分析及可视化告警实践。
一、环境准备与数据采集
1.1 实验组件
- 攻击机:Kali Linux 2023
- 靶机:CentOS 7.6(暴露Web服务)
- ELK集群:Elasticsearch 8.5 + Logstash 8.5 + Kibana 8.5
- 数据采集器:Filebeat 8.5
1.2 日志收集配置
通过Filebeat采集关键日志源:
# filebeat.yml
filebeat.inputs:
- type: filestream
id: nginx-access
paths:
- /var/log/nginx/access.log
fields:
log_type: "nginx_access"
- type: filestream
id: syslog
paths:
- /var/log/secure
- /var/log/messages
fields:
log_type: "system"
Logstash添加安全日志解析规则:
filter {
if [fields][log_type] == "system" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:hostname} %{DATA:process}\[%{POSINT:pid}\]: %{GREEDYDATA:message}" }
}
date {
match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
二、异常流量特征分析
2.1 高频404错误(漏洞探测)
在Kibana中创建统计视图:
{
"query": {
"bool": {
"must": [
{ "match": { "response_code": "404" } },
{ "range": { "@timestamp": { "gte": "now-15m" } } }
]
}
},
"aggs": {
"src_ip": {
"terms": { "field": "source.ip.keyword", "size": 10 }
}
}
}
攻击特征:同一IP在5分钟内触发超过100次404响应,且请求路径包含/wp-admin
、/phpmyadmin
等敏感路径。
2.2 Webshell上传行为识别
Nginx日志关键字段过滤:
filter {
if [request] =~ "(\.php|\.jsp|\.war)(\?|$)" {
mutate { add_tag => [ "webshell_upload" ] }
}
}
三、提权攻击行为追踪
3.1 可疑特权操作
在系统日志中监控sudo提权:
process.name: "sudo" AND message: ("/bin/bash" OR "chmod +s" OR "passwd")
3.2 异常用户创建检测
通过audit日志捕获用户变更:
{
"query": {
"match": {
"message": {
"query": "useradd|usermod",
"operator": "OR"
}
}
}
}
3.3 SUID权限异常变更
设置定时检测任务:
*/10 * * * * find / -perm -4000 -type f -exec ls -l {} \; | diff /etc/suid.list -
四、攻击场景复现与分析
4.1 攻击链还原
- 攻击者通过
/manager/html
爆破进入Tomcat后台 - 上传包含反弹Shell的WAR包
- 通过
sudo -l
探测可用特权 - 利用CVE-2021-3156进行本地提权
4.2 日志关联分析
在Kibana中构建关联视图:
{
"query": {
"bool": {
"must": [
{ "match": { "source.ip": "192.168.1.100" } },
{ "range": { "@timestamp": { "gte": "now-30m" } } }
],
"should": [
{ "match": { "tags": "webshell_upload" } },
{ "match": { "event.type": "privilege_escalation" } }
]
}
}
}
五、防御加固建议
- 实时告警配置:使用ElastAlert对关键事件设置阈值告警
- 日志存储优化:敏感操作日志单独存储,保留至少180天
- 权限最小化:定期审计sudoers文件和SUID/SGID权限
- 进程监控:使用Auditd记录所有特权命令执行
附录:常用安全分析语句
// 检测密码暴力破解
event.category: "authentication" AND event.outcome: "failure" | stats count by source.ip
// 查找短时间内多主机登录
user.name: "root" | timechart span=10m count by host.name