菜鸟科技网

网站被攻击了,怎么查攻击来源和方式?

第一步:初步判断和发现攻击迹象

你需要确认网站是否真的被攻击了,以下是常见的攻击迹象:

网站被攻击了,怎么查攻击来源和方式?-图1
(图片来源网络,侵删)
  1. 网站无法访问:网站直接打不开,出现 5xx 服务器错误或连接超时。
  2. 被篡改:首页被替换成黑客的页面(通常是黑底白字的挑衅信息)。
  3. 网站被重定向:访问你的网站时,自动跳转到其他不相关的网站(通常是赌博、色情或钓鱼网站)。
  4. 网站访问速度极慢或服务器负载极高:服务器CPU、内存、网络带宽等资源被耗尽。
  5. 收到来自主机商或安全服务商的通知:例如收到Google Search Console的“恶意软件”警告,或云服务商(如阿里云、腾讯云)发来的安全事件通知。
  6. 收到用户反馈:用户反映访问网站时被浏览器或杀毒软件提示为“危险网站”。
  7. 看到异常的流量:在网站分析工具(如Google Analytics)或服务器日志中,发现来自某个IP或地区的异常高频访问。

第二步:定位攻击源和类型

一旦发现异常,就需要深入排查,找到攻击的根源,这通常需要登录到你的服务器上进行操作。

A. 检查服务器资源状态

使用命令行工具检查服务器的实时负载,判断是否遭受了DDoS(分布式拒绝服务)攻击资源耗尽型攻击

  • Linux 系统:

    • 查看CPU和内存使用率:

      网站被攻击了,怎么查攻击来源和方式?-图2
      (图片来源网络,侵删)
      # 实时查看系统资源使用情况,按 q 键退出
      top
      # 查看内存和交换分区的使用情况
      free -h
    • 查看网络连接状态:

      # 查看当前所有网络连接,-n 参数以数字形式显示地址,避免DNS查询延迟
      netstat -an
      # 查看当前所有网络连接,并按连接数排序,可以快速发现大量异常连接
      netstat -an | grep 'ESTABLISHED' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
    • 查看实时网络流量:

      # 实时显示网络接口的流量信息
      iftop
      # 安装 iftop (如果系统没有): sudo apt-get install iftop (Ubuntu/Debian) 或 sudo yum install iftop (CentOS/RHEL)
  • Windows 系统:

    • 打开任务管理器:按 Ctrl + Shift + Esc,查看“性能”选项卡下的CPU、内存、网络使用情况。
    • 使用资源监视器:在任务管理器的“性能”选项卡中点击“打开资源监视器”,可以查看更详细的网络连接和进程信息。

B. 分析Web服务器日志

这是最核心、最有效的排查手段,Web服务器日志记录了所有访问请求的详细信息。

网站被攻击了,怎么查攻击来源和方式?-图3
(图片来源网络,侵删)
  • 日志位置:

    • Apache: /var/log/apache2/access.log/var/log/httpd/access_log
    • Nginx: /var/log/nginx/access.log
    • IIS (Windows): C:\inetpub\logs\LogFiles\
  • 分析日志内容:

    • 查找高频访问的IP(可能是DDoS攻击或暴力破解):

      # 统计访问次数最多的前20个IP
      tail -n 10000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 20
    • 查找异常的URL路径(可能是扫描或攻击行为):

      # 查找访问频率最高的URL
      tail -n 10000 /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -nr | head -n 20
      # 查找包含特定恶意关键词的请求,如 "phpmyadmin", "wp-admin", "admin", ".env" 等
      grep -i "phpmyadmin\|wp-admin\|admin\|\.env" /var/log/nginx/access.log
    • 查找返回特定错误码的请求(如404, 500, 403):

      # 查找返回404 Not Found的请求
      grep " 404 " /var/log/nginx/access.log | head -n 20
    • 查找可疑的User-Agent:

      # 查找非浏览器或爬虫的User-Agent
      grep -v "Mozilla\|Googlebot\|Bingbot" /var/log/nginx/access.log | awk -F'"' '{print $6}' | sort | uniq -c | sort -nr

C. 检查网站文件

被篡改或植入了后门,需要检查文件系统。

  • 查找最近被修改的文件:

    # 查找在最近24小时内被修改的文件
    find /path/to/your/website -mtime -1 -ls
    # 查找所有可执行的PHP文件(正常网站通常不应有太多)
    find /path/to/your/website -name "*.php" -type f
  • 检查关键目录:

    • 检查网站根目录下是否有你不认识的文件,尤其是文件名很乱(如 a.php, js)或与网站功能无关的文件。
    • 检查上传目录(如 wp-content/uploads/),看是否有可疑的脚本文件被上传。
  • 检查Webshell:

    • 使用 grep 命令在网站文件中搜索常见的Webshell特征码,如 eval, base64_decode, assert, shell_exec, system, passthru 等。
      # 在网站目录下递归搜索包含eval的PHP文件
      grep -r "eval(" /path/to/your/website --include="*.php"

D. 检查数据库

  • 检查数据库用户:登录数据库,查看是否有异常的数据库用户被创建。
    -- MySQL
    SELECT host, user FROM mysql.user;
  • 检查数据库中的表和数据:检查是否有异常的表、数据被篡改,或者是否发现了挖矿脚本、垃圾链接等。

第三步:使用专业安全工具

如果你不熟悉命令行操作,或者需要更专业的分析,可以使用以下工具:

  1. 云服务商自带的安全服务:

    • 阿里云: 云盾、云安全中心
    • 腾讯云: 云安全、主机安全
    • 华为云: Host Security, Anti-DDoS
    • 这些服务通常能自动检测并告DDoS攻击、暴力破解、Web攻击等,并提供一键清洗、封禁IP等功能。
  2. Web应用防火墙:

    WAF是专门用于防御Web应用攻击(如SQL注入、XSS、文件包含等)的设备或服务,如果你的网站部署了WAF(如ModSecurity, 腾讯云WAF, 阿里云WAF),可以登录WAF控制台查看攻击日志,了解具体的攻击类型和来源。

  3. 安全扫描工具:

    • ClamAV: 开源的杀毒软件,可以用来扫描网站文件中的恶意软件。
    • Wordfence / Sucuri Security (针对WordPress): 这两款流行的WordPress安全插件,可以扫描恶意软件、检查文件完整性、监控防火墙日志等。
    • 在线扫描服务: 如 VirusTotal,你可以将网站文件或URL提交给它,由多家杀毒引擎进行联合扫描。

第四步:处理和恢复

排查清楚后,需要立即采取措施:

  1. 隔离和备份:

    • 立即断开网络:如果攻击非常严重,暂时断开服务器的网络连接,防止事态扩大。
    • 备份证据:将服务器日志、可疑文件等作为证据备份下来,用于后续分析。
    • 备份干净数据:从干净的备份中恢复网站,不要在被攻击的服务器上直接修复。
  2. 清除后门和恶意代码:

    • 根据排查结果,删除所有被篡改的文件和被植入的后门。
    • 修改所有密码:服务器密码、数据库密码、FTP/SFTP密码、网站后台密码、CMS管理密码等。
  3. 修复漏洞并加固:

    • 更新所有软件:Web服务器(Nginx/Apache)、数据库(MySQL/MariaDB)、PHP/Python/Node.js运行环境、CMS系统(WordPress, Drupal等)及其所有插件和主题到最新版本。
    • 修改文件权限:确保网站目录的权限设置正确(Web服务器用户只应有读和执行的权限,不应有写权限)。
    • 配置安全策略:禁用不必要的目录执行权限,配置.htaccess或Nginx的server块来限制访问。
  4. 重新上线并监控:

    • 在确认服务器安全后,重新将网站上线。
    • 密切监控服务器状态、访问日志和安全告警,确保攻击不再发生。

查询流程图

graph TD
    A[发现网站异常] --> B{初步判断};
    B -- 无法访问/慢 --> C[检查服务器资源<br>(top, free, iftop)];
    B -- 内容被篡改 --> D[检查网站文件<br>(find, grep)];
    B -- 收到安全告警 --> E[查看云服务商/WAF日志];
    C --> F{发现资源耗尽?};
    F -- 是 --> G[判断为DDoS/CC攻击<br>(分析日志中的高频IP)];
    F -- 否 --> H[检查Web服务器日志<br>(分析恶意URL/UA)];
    D --> I{发现恶意文件/后门?};
    I -- 是 --> J[定位Webshell/挖矿脚本];
    H --> K;
    J --> K[定位攻击类型和路径<br>(SQL注入/XSS/文件上传等)];
    K --> L[处理: 清除后门、修复漏洞、加固系统];
    L --> M[重新上线并持续监控];

希望这份详细的指南能帮助你有效地排查和处理网站被攻击的问题,如果问题复杂,建议寻求专业的网络安全公司或技术人员的帮助。

分享:
扫描分享到社交APP
上一篇
下一篇