插件窝 干货文章 Linux环境下的日志分析与威胁检测

Linux环境下的日志分析与威胁检测

日志 log sudo var 900    来源:    2025-04-14

Linux环境下的日志分析与威胁检测

一、Linux日志系统概述

Linux系统通过多种日志机制记录系统活动,主要日志来源包括:

  1. 系统日志服务

    • rsyslog (现代Linux发行版默认)
    • syslog-ng (替代方案)
    • journald (systemd系统的日志服务)
  2. 主要日志文件位置

    • /var/log/messages - 常规系统消息
    • /var/log/auth.log - 认证相关日志
    • /var/log/kern.log - 内核日志
    • /var/log/syslog - 系统日志
    • /var/log/secure - 安全相关日志(RHEL/CentOS)
    • /var/log/apt/ - 包管理日志(Debian/Ubuntu)
    • /var/log/yum.log - 包管理日志(RHEL/CentOS)

二、日志分析工具

1. 基础命令行工具

# 查看日志文件
cat /var/log/syslog
less /var/log/auth.log
tail -f /var/log/messages  # 实时监控

# 日志过滤
grep "Failed password" /var/log/auth.log
grep -i "error" /var/log/syslog
journalctl -u sshd --since "1 hour ago"  # 查看sshd服务最近1小时日志

# 统计工具
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr  # 统计IP访问量

2. 高级日志分析工具

  • Logwatch - 每日日志摘要报告

    sudo apt install logwatch  # Debian/Ubuntu
    sudo yum install logwatch  # RHEL/CentOS
    
  • GoAccess - 实时Web日志分析

    goaccess /var/log/nginx/access.log -a
    
  • Lnav - 高级日志文件查看器

    lnav /var/log/syslog /var/log/auth.log
    

三、威胁检测技术

1. 异常登录检测

# 检查失败的登录尝试
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr

# 检查成功登录
grep "Accepted password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr

# 检查sudo使用
grep "sudo:" /var/log/auth.log

2. 文件完整性监控

使用AIDE(Advanced Intrusion Detection Environment):

sudo apt install aide  # Debian/Ubuntu
sudo aideinit
sudo aide --check

3. 进程监控

# 查看异常进程
ps aux | grep -E '(nmap|nikto|sqlmap|hydra|john|medusa)'

# 检查网络连接
netstat -tulnp
ss -tulnp
lsof -i

四、安全信息与事件管理(SIEM)工具

1. OSSEC - 开源主机入侵检测系统

安装与配置:

# Ubuntu/Debian
sudo apt install ossec-hids

# RHEL/CentOS
sudo yum install ossec-hids

# 基本配置
sudo vi /var/ossec/etc/ossec.conf

2. Wazuh - OSSEC的分支与发展

# 安装Wazuh管理器
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | sudo apt-key add -
echo "deb https://packages.wazuh.com/4.x/apt/ stable main" | sudo tee /etc/apt/sources.list.d/wazuh.list
sudo apt update
sudo apt install wazuh-manager

3. ELK Stack (Elasticsearch, Logstash, Kibana)

用于集中式日志管理和分析:

# 安装Elasticsearch
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install elasticsearch

# 安装Logstash和Kibana
sudo apt-get install logstash kibana

五、自动化威胁检测脚本示例

#!/bin/bash

# 检查可疑的cron作业
echo "=== 检查可疑的cron作业 ==="
sudo grep -r "wget\|curl\|chmod\|sh \|\.\/" /etc/cron* /var/spool/cron/

# 检查SUID/SGID文件变化
echo "=== 检查SUID/SGID文件 ==="
sudo find / -perm -4000 -o -perm -2000 -type f -exec ls -la {} \; 2>/dev/null

# 检查最近修改的文件
echo "=== 检查最近24小时内修改的文件 ==="
sudo find / -mtime -1 -type f -exec ls -la {} \; 2>/dev/null | grep -vE "/var/log|/proc|/sys"

# 检查隐藏进程
echo "=== 检查隐藏进程 ==="
ps -ef | awk '{print $2}' | sort -n | uniq > /tmp/ps_all.txt
ls /proc | grep -E '^[0-9]+$' | sort -n | uniq > /tmp/proc_all.txt
diff /tmp/ps_all.txt /tmp/proc_all.txt

# 清理临时文件
rm /tmp/ps_all.txt /tmp/proc_all.txt

六、最佳实践建议

  1. 日志集中管理:将所有主机的日志发送到中央日志服务器
  2. 日志轮转:配置logrotate防止日志文件过大
  3. 日志保留策略:根据合规要求设置适当的保留期限
  4. 实时监控:设置关键事件的实时告警
  5. 基线建立:了解正常系统行为以便识别异常
  6. 定期审计:安排定期的日志审查和安全评估
  7. 最小权限原则:限制对日志文件的访问权限

通过综合运用这些工具和技术,可以有效提高Linux环境下的安全态势感知能力,及时发现和应对潜在威胁。