插件窝 干货文章 如何进行Linux系统的安全审计和日志分析

如何进行Linux系统的安全审计和日志分析

sudo 日志 echo 审计 757    来源:    2025-04-10

Linux系统安全审计与日志分析指南

一、系统安全审计

1. 使用auditd框架

auditd是Linux内核的审计框架,可以记录系统调用和文件访问:

# 安装auditd
sudo apt-get install auditd  # Debian/Ubuntu
sudo yum install audit       # RHEL/CentOS

# 常用命令
sudo systemctl start auditd  # 启动服务
sudo systemctl enable auditd # 设置开机启动
sudo auditctl -l             # 查看当前规则

2. 配置审计规则

# 监控/etc/passwd文件访问
sudo auditctl -w /etc/passwd -p wa -k passwd_access

# 监控sudo命令使用
sudo auditctl -a always,exit -F arch=b64 -S execve -F path=/usr/bin/sudo -k sudo_cmd

# 永久保存规则(添加到/etc/audit/rules.d/)
echo "-w /etc/passwd -p wa -k passwd_access" | sudo tee -a /etc/audit/rules.d/my.rules
sudo augenrules --load

3. 审计日志分析

# 搜索特定事件
sudo ausearch -k passwd_access

# 生成审计报告
sudo aureport -au -i          # 用户认证报告
sudo aureport -m -i           # 账户修改报告
sudo aureport --summary       # 摘要报告

二、系统日志分析

1. 主要日志文件位置

  • /var/log/auth.log/var/log/secure - 认证日志
  • /var/log/syslog - 系统活动日志
  • /var/log/kern.log - 内核日志
  • /var/log/audit/audit.log - auditd日志
  • /var/log/btmp - 失败登录尝试(使用lastb查看)
  • /var/log/wtmp - 登录记录(使用last查看)

2. 常用日志分析工具

grep基础搜索

# 查找失败登录尝试
sudo grep "Failed password" /var/log/auth.log

# 查找SSH登录
sudo grep "sshd" /var/log/auth.log | grep "Accepted"

journalctl (systemd系统)

# 查看全部日志
sudo journalctl

# 查看指定服务日志
sudo journalctl -u sshd

# 实时监控新日志
sudo journalctl -f

logwatch

# 安装
sudo apt-get install logwatch  # Debian/Ubuntu
sudo yum install logwatch      # RHEL/CentOS

# 运行
sudo logwatch --detail High

3. 高级日志分析工具

使用ELK Stack (Elasticsearch, Logstash, Kibana)

  1. 安装ELK组件
  2. 配置Logstash收集系统日志
  3. 使用Kibana进行可视化分析

使用Osquery

# 查询登录历史
osqueryi "SELECT * FROM last;"

# 查询进程信息
osqueryi "SELECT pid, name, cmdline FROM processes;"

三、安全审计脚本示例

#!/bin/bash

# 安全审计脚本
echo "===== 系统安全审计报告 ====="
echo "生成日期: $(date)"
echo ""

echo "----- 1. 用户账户检查 -----"
echo "特权用户:"
sudo awk -F: '$3 == 0 {print $1}' /etc/passwd
echo ""

echo "空密码账户:"
sudo awk -F: '($2 == "") {print $1}' /etc/shadow
echo ""

echo "----- 2. 登录审计 -----"
echo "最近登录:"
last -n 10
echo ""

echo "失败登录尝试:"
sudo lastb -n 10
echo ""

echo "----- 3. SUID文件检查 -----"
sudo find / -perm -4000 -type f -exec ls -la {} \; 2>/dev/null
echo ""

echo "----- 4. 监听端口检查 -----"
sudo netstat -tulnp
echo ""

echo "----- 5. 计划任务检查 -----"
sudo ls -la /etc/cron.*
echo ""

echo "审计完成。"

四、日志管理最佳实践

  1. 日志轮转:配置logrotate防止日志过大

    sudo vim /etc/logrotate.conf
    
  2. 远程日志:配置syslog发送日志到远程服务器

    # 在/etc/rsyslog.conf中添加
    *.* @remote-log-server:514
    
  3. 日志完整性:使用logsign或类似工具确保日志不被篡改

  4. 定期审计:设置cron任务定期运行审计脚本

  5. 告警机制:配置logcheck或fail2ban对可疑活动发出警报

通过以上方法,您可以全面监控Linux系统的安全状态,及时发现潜在的安全威胁。