在Debian系统上,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是一个强大的工具,可以分析Nginx的访问日志,检测并阻止恶意访问。以下是使用Fail2Ban的基本步骤:
sudo apt-get install 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
sudo systemctl restart fail2ban
使用以下命令查看Fail2Ban的状态,了解哪些IP被禁止访问:
fail2ban-client status
可以使用一些现成的Nginx日志分析脚本来自动化恶意访问的识别。例如,一个名为 nginx-log-security-analysis
的脚本可以执行以下功能:
你也可以使用基本的命令行工具如 cat
, less
, grep
等来查看和分析Nginx日志文件:
cat /var/log/nginx/access.log
less /var/log/nginx/access.log
grep "error" /var/log/nginx/access.log
为了更好地管理和分析日志,可以自定义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如何打开终端界面