Debian Nginx日志中如何识别恶意访问

980
2025/3/22 15:33:00
栏目: 智能运维
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在Debian系统上,Nginx日志是识别恶意访问的重要工具。以下是一些方法和步骤,帮助你分析和识别Nginx日志中的恶意访问:

Nginx日志的基本格式和内容

Nginx日志记录了客户端请求的详细信息,包括时间戳、客户端IP、请求的资源、HTTP状态码、响应大小、引用页面以及用户代理信息等。例如:

[223.91.102.30] - - [14/dec/2022:20:37:17 +0800] "get /timthumb/ahr0chm6ly93d3cuaw15zgwuy29tl3dwlwnvbnrlbnqvdxbsb2fkcy8ymdiylza0l1itqy00lmpwzw/w/375/h/250/q/70/zc/1/a/c/spm/0780ccf9c8e93cee803e452c4b16c548.jpg http/1.1" 200 21986 "https://www.imydl.com/linux/16348.html" "mozilla/5.0 (windows nt 10.0;win64;x64) applewebkit/537.36 (khtml, like gecko) chrome/108.0.0.0 safari/537.36 edg/108.0.1462.46" gzip=- br=-

使用Fail2Ban识别恶意访问

Fail2Ban是一个强大的工具,可以分析Nginx的访问日志,检测并阻止恶意访问。以下是使用Fail2Ban的基本步骤:

  1. 安装Fail2Ban
sudo apt-get install fail2ban
  1. 配置Fail2Ban

编辑 /etc/fail2ban/jail.local 文件,配置相应的规则来识别和阻止恶意访问。例如,针对SSH和Nginx的暴力破解攻击:

[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
backend = iptables

[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
action = iptables
logpath = /var/log/nginx/access.log
maxretry = 3
bantime = 600
  1. 重启Fail2Ban服务
sudo systemctl restart fail2ban
  1. 验证Fail2Ban状态

使用以下命令查看Fail2Ban的状态,了解哪些IP被禁止访问:

fail2ban-client status

日志分析脚本

可以使用一些现成的Nginx日志分析脚本来自动化恶意访问的识别。例如,一个名为 nginx-log-security-analysis 的脚本可以执行以下功能:

  • 统计top 20地址
  • SQL注入分析
  • 扫描器告警分析
  • 漏洞利用检测
  • 敏感路径访问
  • 文件包含攻击
  • webshell寻找
  • 响应长度的URL分析
  • 寻找罕见的脚本文件访问
  • 寻找302跳转的脚本文件

手动分析日志

你也可以使用基本的命令行工具如 cat, less, grep 等来查看和分析Nginx日志文件:

cat /var/log/nginx/access.log
less /var/log/nginx/access.log
grep "error" /var/log/nginx/access.log

配置Nginx日志格式

为了更好地管理和分析日志,可以自定义Nginx的日志格式。例如,使用 log_format 指令定义一个自定义的日志格式:

http {
    log_format custom '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
    access_log /var/log/nginx/access.log custom;
}

定时任务

为了避免日志文件占用过多磁盘空间,可以配置定时任务来分割日志文件。例如,使用 logrotate 工具:

sudo apt-get install logrotate

编辑 /etc/logrotate.d/nginx 文件,配置日志分割的规则:

/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0644 root adm
    sharedscripts
    postrotate
        if [ -f /var/run/nginx.pid ]; then
            kill -USR1 `cat /var/run/nginx.pid`
        fi
    endscript
}

通过以上方法,你可以有效地识别和分析Debian系统上Nginx日志中的恶意访问,并采取相应的措施来保护你的服务器安全。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: debian如何打开终端界面