温馨提示×

如何通过Apache日志防止攻击

小樊
35
2025-12-20 09:33:16
栏目: 网络安全

用 Apache 日志识别并阻断攻击的实操方案

一 日志安全基线与风险预防

  • 将日志存放在 Web 根目录之外,典型路径为 /var/log/apache2/;设置目录权限 700、日志文件 600,仅允许 root 访问。
  • 禁止直接访问日志文件:在 Apache 配置或 .htaccess 中加入
    <FilesMatch “.(log|txt)$”> Order Allow,Deny Deny from all
  • 对日志进行脱敏,避免记录或外泄 Cookie/SessionID、手机号、邮箱等敏感字段;集中到 SIEM/ELK 后再做脱敏展示。
  • 预防“日志投毒”:过滤或转义写入日志的 <、>、<?php 等特殊字符;确保日志文件访问 MIME 类型为 text/plain,避免被浏览器解析执行;同时修复可能的本地文件包含等漏洞,切断“日志读取→代码执行”的链路。

二 快速发现攻击的日志特征与命令

  • 高频访问与扫描:
    • Top IP:awk ‘{print $1}’ access.log | sort | uniq -c | sort -nr | head
    • 404 风暴:grep " 404 " access.log | awk ‘{print $1}’ | sort | uniq -c | sort -nr | head
  • 登录爆破与暴力尝试:
    • 失败登录特征:grep -i “login” access.log | grep -i " 401 | 403 " | awk ‘{print $1}’ | sort | uniq -c | sort -nr
  • SQL 注入:
    • 单引号/注释:grep -E “GET .*'|%27” access.log;grep -i “UNION.*SELECT” access.log
    • 时间盲注:grep -i -E “sleep(|benchmark(” access.log
  • XSS:
    • 标签/事件:grep -i -E “<script|%3Cscript|onerror=|onload=” access.log
  • 路径遍历/文件包含:
    • 目录上跳:grep -E “../|..%2f” access.log;Windows 下补充:grep -E “..\|..%5c” access.log
  • Webshell 可疑行为:
    • 异常 PHP 的 POST:grep "POST " access.log | grep “.php” | awk ‘{print $7}’ | sort | uniq -c | sort -nr | head
    • 可疑 UA:grep -i -E “python|curl|wget|nmap|sqlmap|antsword|godzilla” access.log | awk -F’"’ ‘{print $6}’ | sort | uniq -c | sort -nr
  • 敏感文件探测:
    • 错误日志中大量“File does not exist”且指向 /etc/passwd、/root、.env、config.php 等:
      awk ‘/File does not exist/ {print $1}’ /var/log/apache2/error.log* | sort | uniq -c | sort -nr | awk ‘$1>50{print $2}’
  • DDoS/异常流量:
    • 单位时间请求速率异常、来源分散、状态码分布异常(大量 200/429/503)等,可结合阈值告警与速率限制策略联动处置。

三 从发现到处置的自动化闭环

  • 实时监测与告警:
    • 命令行巡检结合 cron(如每 1–3 分钟)统计 Top IP、404 数量、可疑 Payload;超过阈值即触发处置。
    • 部署 SIEM/ELK 或专用工具(如 EventLog Analyzer)做规则化告警与可视化。
  • 自动封禁:
    • 防火墙封禁示例:iptables -I INPUT -s ATTACKER_IP -j DROP(生产建议用 ipset 管理大批量 IP,结合 fail2ban 做动态封禁)。
  • 临时“休克疗法”:
    • 在遭受强攻时,可由脚本自动切换到仅允许白名单的 .htaccess 规则,待负载与告警恢复后再切回正常配置(示例思路见自动化脚本实践)。
  • WAF 协同:
    • 将日志中发现的绕过 Payload 沉淀为 ModSecurity 规则,提升拦截率并降低误报。

四 加固与长期运营

  • 保持 Apache 与模块为最新版本,禁用不必要模块;启用 SSL/TLS;对管理口与敏感路径实施严格 访问控制;配置 请求频率限制(如 mod_evasive/ModSecurity)。
  • 实施 日志轮转与归档(如 logrotate),避免日志过大影响分析与取证;统一日志格式便于解析与审计。
  • 建立 基线画像指标监控(请求数、错误率、响应时间、关键 URL 命中),持续做 安全审计合规检查;对发现的漏洞点(URL/参数)回溯修复并优化 WAF/代码。

0