VPS 日志安全分析:从海量日志中揪出入侵者的实战技巧


服务器被入侵后,日志是唯一的"案发现场"。但默认日志分散、格式不统一、没有关联分析,想从里面找到入侵痕迹像大海捞针。今天分享一套日志安全分析方案,从收集、分析到告警,全链路覆盖。

img

一、集中化日志收集

用 rsyslog 转发到中央服务器:

# /etc/rsyslog.conf
*.* @@log-server.yvps.cn:514

或用 Filebeat + Elasticsearch:

# filebeat.yml
filebeat.inputs:
- type: log
  paths:
    - /var/log/auth.log
    - /var/log/nginx/access.log
    - /var/log/mysql/slow.log

output.elasticsearch:
  hosts: ["http://es-server:9200"]

二、关键安全日志分析

  1. SSH 暴力破解检测
# 统计失败登录 IP
grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -20

# 统计成功登录的时间和 IP
grep "Accepted" /var/log/auth.log | awk '{print $1,$2,$3,$(NF-3)}'
  1. Web 攻击检测
# SQL 注入尝试
grep -i "union\|select\|insert\|delete\|drop" /var/log/nginx/access.log

# XSS 尝试
grep -i "<script\|javascript\|onerror\|onload" /var/log/nginx/access.log

# 扫描器特征
grep -i "sqlmap\|nikto\|nmap\|masscan" /var/log/nginx/access.log
  1. 异常时间登录
# 非工作时间(22:00-06:00)的登录
awk '$3 >= "22:00:00" || $3 <= "06:00:00" {print}' /var/log/auth.log

三、自动化告警规则

用 ElastAlert 或 Wazuh:

# 示例:SSH 暴力破解告警
name: SSH Brute Force
type: frequency
index: auth-*
num_events: 5
timeframe:
  minutes: 10
filter:
- term:
    event.outcome: "failure"
alert:
- webhook
webhook_url: "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY"

四、日志完整性保护

# 用 auditd 监控日志文件
auditctl -w /var/log/auth.log -p wa -k auth_log_integrity
auditctl -w /var/log/nginx/access.log -p wa -k nginx_log_integrity

# 用 logrotate 保留足够历史
/var/log/auth.log {
    daily
    rotate 90
    compress
    delaycompress
    missingok
    notifempty
    create 0640 root adm
}

五、攻击时间线重建

被入侵后,按时间线梳理事件:

T-0:  攻击者 IP 首次出现(暴力破解)
T+5m: 成功登录(使用窃取密钥或弱密码)
T+10m: 下载恶意脚本(wget/curl 记录)
T+15m: 提权操作(sudo/su 记录)
T+20m: 建立持久化(crontab/ssh key 修改)
T+30m: 数据外传(网络流量异常)

手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

服务器/网站全方位防测速平台探测教程,彻底屏蔽第三方测速

VPS 数据安全指南:加密、备份、容灾一个都不能少

评 论
更换验证码