插件窝 干货文章 Linux服务器追踪和日志分析:防止入侵和异常活动

Linux服务器追踪和日志分析:防止入侵和异常活动

FILE 日志 监控 sudo 378    来源:    2025-04-11

Linux服务器追踪和日志分析:防止入侵和异常活动

一、关键日志文件监控

  1. 系统认证日志

    • /var/log/auth.log (Debian/Ubuntu)
    • /var/log/secure (RHEL/CentOS)
    • 监控内容:SSH登录尝试、sudo使用、用户切换
  2. 系统消息日志

    • /var/log/messages (传统系统)
    • /var/log/syslog (Debian/Ubuntu)
    • 监控内容:系统启动消息、内核消息、服务日志
  3. 服务特定日志

    • Web服务器:/var/log/apache2//var/log/nginx/
    • 数据库:MySQL (/var/log/mysql.log), PostgreSQL
    • 邮件服务器:/var/log/mail.log

二、实时监控工具

  1. auditd 审计系统

    # 安装auditd
    sudo apt-get install auditd  # Debian/Ubuntu
    sudo yum install audit      # RHEL/CentOS
    
    # 常用命令
    sudo auditctl -l            # 查看当前规则
    sudo ausearch -k mykey      # 按key搜索审计事件
    sudo aureport -au           # 用户认证报告
    
  2. 配置审计规则示例

    # 监控/etc/passwd文件修改
    sudo auditctl -w /etc/passwd -p wa -k passwd_changes
    
    # 监控SSH配置文件
    sudo auditctl -w /etc/ssh/sshd_config -p wa -k sshd_config_changes
    

三、入侵检测系统

  1. AIDE (Advanced Intrusion Detection Environment)

    # 安装
    sudo apt-get install aide
    
    # 初始化数据库
    sudo aideinit
    
    # 检查变更
    sudo aide --check
    
  2. OSSEC HIDS

    # 安装
    sudo apt-get install ossec-hids
    
    # 主要配置文件
    /var/ossec/etc/ossec.conf
    

四、日志分析工具

  1. Logwatch

    # 安装
    sudo apt-get install logwatch
    
    # 配置
    /usr/share/logwatch/default.conf/logwatch.conf
    
  2. Fail2ban (防止暴力破解)

    # 安装
    sudo apt-get install fail2ban
    
    # 主要配置文件
    /etc/fail2ban/jail.conf
    /etc/fail2ban/filter.d/
    
  3. ELK Stack (Elasticsearch, Logstash, Kibana)

    • 用于大规模日志收集和分析

五、自动化监控脚本示例

  1. 异常登录检测脚本

    #!/bin/bash
    LOG_FILE="/var/log/auth.log"
    OUTPUT_FILE="/tmp/suspicious_logins.txt"
    
    echo "可疑登录尝试报告 - $(date)" > $OUTPUT_FILE
    echo "=================================" >> $OUTPUT_FILE
    
    # 检测失败的SSH尝试
    grep "Failed password" $LOG_FILE | awk '{print $1,$2,$3,$9,$11}' | sort | uniq -c | sort -nr >> $OUTPUT_FILE
    
    # 检测成功登录的非正常时间
    grep "Accepted password" $LOG_FILE | awk '$3 > "22:00:00" || $3 < "06:00:00" {print $1,$2,$3,$9,$11}' >> $OUTPUT_FILE
    
    # 发送邮件通知
    mail -s "服务器登录异常报告" admin@example.com < $OUTPUT_FILE
    
  2. 文件完整性检查脚本

    #!/bin/bash
    CRITICAL_FILES="/etc/passwd /etc/shadow /etc/sudoers"
    BACKUP_DIR="/root/file_backups"
    mkdir -p $BACKUP_DIR
    
    for file in $CRITICAL_FILES; do
     if [ -f "$file" ]; then
       current_hash=$(sha256sum $file | awk '{print $1}')
       backup_file="$BACKUP_DIR/$(basename $file).sha256"
    
       if [ -f "$backup_file" ]; then
         previous_hash=$(cat $backup_file)
         if [ "$current_hash" != "$previous_hash" ]; then
           echo "警告: $file 已被修改!" | mail -s "关键文件变更警报" admin@example.com
         fi
       fi
    
       echo $current_hash > $backup_file
     fi
    done
    

六、最佳实践建议

  1. 日志轮转配置

    • 配置logrotate确保日志不会无限增长
    • 示例配置在/etc/logrotate.d/
  2. 远程日志服务器

    • 使用rsyslogsyslog-ng将日志发送到远程服务器
    • 防止攻击者删除本地日志
  3. 定期审计

    • 每月至少进行一次完整的安全审计
    • 检查用户账户、权限、cron任务、服务等
  4. 网络监控

    • 使用netstat -tulnpss -tulnp监控开放端口
    • 使用iftopnethogs监控异常网络流量

通过实施这些监控和日志分析策略,您可以大大提高Linux服务器的安全性,及时发现并应对潜在的入侵和异常活动。