使用 BASH 脚本汇总 NGINX 和 Apache 访问日志 每当我注意到某台 Linux 服务器的 CPU 使用率过高时,我通常会做的第一件事就是用 或 查看进程列表。如果发现有大量 Apache 或 Nginx 进程在运行,我会迅速检查访问日志,以确定是什么原因导致了服务器 CPU 的峰值,或者判断是否有任何恶意活动正在发生。 然而,有时阅读日志可能会让人感到压力很大:日志文件可能非常庞大,手动逐行查看会耗费大量时间;而且对于经验较少的人来说,原始日志格式也可能令人困惑。 就像上一章一样,本章同样是一个挑战!你需要编写一个简短的 Bash 脚本,无需安装任何额外软件,就能为你汇总整个访问日志。
每当我注意到某台 Linux 服务器的 CPU 使用率过高时,我通常会做的第一件事就是用 top 或 htop 查看进程列表。如果发现有大量 Apache 或 Nginx 进程在运行,我会迅速检查访问日志,以确定是什么原因导致了服务器 CPU 的峰值,或者判断是否有任何恶意活动正在发生。
然而,有时阅读日志可能会让人感到压力很大:日志文件可能非常庞大,手动逐行查看会耗费大量时间;而且对于经验较少的人来说,原始日志格式也可能令人困惑。
就像上一章一样,本章同样是一个挑战!你需要编写一个简短的 Bash 脚本,无需安装任何额外软件,就能为你汇总整个访问日志。
这个 BASH 脚本需要解析并汇总你的访问日志,并为你提供一些非常有用的信息,例如:
我已经准备了一个演示脚本,你可以将其作为参考。不过,我强烈建议你先尝试自己编写脚本,然后再查看我的脚本!
要下载该脚本,你可以使用以下命令克隆仓库:
git clone https://github.com/bobbyiliev/quick_access_logs_summary.git
或者运行以下命令,将脚本下载到当前目录:
wget https://raw.githubusercontent.com/bobbyiliev/quick_access_logs_summary/master/spike_check
该脚本不会对你的系统进行任何更改;它只是读取访问日志的内容并为你进行汇总。不过,在下载文件后,请务必自行检查脚本内容。
脚本下载完成后,你只需将其设置为可执行文件并运行即可。
要使脚本可执行,请运行以下命令:
chmod +x spike_check
然后运行脚本:
./spike_check /path/to/your/access_log
请确保将文件路径替换为你访问日志的实际路径。例如,如果你在 Ubuntu 服务器上使用 Apache,具体的命令可能如下所示:
./spike_check /var/log/apache2/access.log
如果你使用的是 Nginx,命令几乎相同,只需将路径替换为 Nginx 访问日志的路径:
./spike_check /var/log/nginx/access.log
运行脚本后,根据日志文件的大小,可能需要等待一段时间。
你最终看到的输出应该类似于以下内容:

从这个输出中我们可以看出,我们的 xmlrpc.php 文件收到了 16 次 POST 请求。攻击者经常利用这个文件,通过尝试各种用户名和密码组合来攻击 WordPress 网站。
在这个特定案例中,这并不是一次大规模的暴力破解攻击,但它为我们提供了一个早期预警信号,让我们可以采取行动,防止未来发生更严重的攻击。
我们还可以看到,有几个来自俄罗斯的 IP 地址访问了我们的网站。如果你预计不会收到来自俄罗斯的流量,那么你可能也需要考虑屏蔽这些 IP 地址。
这是一个简单的 BASH 脚本示例,可以帮助你快速汇总访问日志,并判断是否存在任何恶意活动。
当然,你也可以选择手动检查日志,但尝试用 Bash 自动化这一过程本身就是一个很好的挑战!
{notice} 本内容最初发布于 DevDojo
免责声明:
本文件由基于人工智能的机器翻译服务翻译而成。尽管我们力求翻译准确,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言版本的文件为准。对于关键信息,建议使用专业人工翻译。对于因使用本翻译而产生的任何误解或误读,我们概不负责。