网站被攻击,如何快速分析日志并找出攻击IP?

在网络世界里,网站遭受攻击似乎成了家常便饭。作为一个系统运维人员,我们总是时刻准备着应对这些不测风云。

虽然云服务器的防护服务听起来不错,但作为一名精打细算的系统管理员,我更倾向于用智慧而非金钱来解决问题(毕竟,服务器的费用已经让我喘不过气,哪里还有余裕去支付额外的防护费用呢)。

最近,尽管我已经部署了fail2ban来加强防御,但这一轮猛烈的攻击还是让我的网站CPU飙升至100%,数据库在fail2ban监控生产之前就挂掉了,整个应用陷入了无法访问的窘境。面对这种情况,迅速定位并封锁攻击者的IP成了当务之急。以下是我采取的应对策略:

第一步:分析NGINX日志

分析日志主要目的是寻找那些异常活跃的IP地址,通过以下命令可以快速找出。

cat access.log | awk \\\'{print$1}\\\' |sort|uniq -c|sort -rn|head -10

命令说明:

  • cat access.log:将access.log文件的内容输出到标准输出。

  • awk \\\'{print $1}\\\'awk是一个强大的文本处理工具。这里用于打印每一行的第一个字段。

  • sort:这个命令将awk命令的输出进行排序。

  • uniq -cuniq命令用于去除连续的重复行。-c选项表示在输出中显示每个唯一行出现的次数。

  • sort -rn:这个命令再次对uniq -c的输出进行排序,-r表示反向排序(即从大到小),-n表示按照数值排序。

  • head -10head命令用于显示文件的前几行。这里显示排序后的前10行。

将这些命令组合起来,整个命令的作用是:

读取access.log文件,从每一行中提取出第一个字段,对这些字段进行排序,统计每个字段出现的次数,并去除连续的重复项,按照出现次数从高到低排序,输出出现次数最多的前10个字段。

通过这一条命令,我注意到了两个频繁出现的IP地址:104.28.229.11和104.28.155.247,它们各自出现了1500次。

第二步:分析高频访问IP都干了些啥

接下来,我需要了解这些IP究竟做了些什么。通过以下命令,我将目光聚焦在104.28.229.11这个IP上。

grep \\\'104.28.229.11\\\' /var/log/nginx/access.log-20240428

这不查不知道,一查吓一跳,如上图,可以看到有大量的sql注入攻击。

第三步:封禁IP

找到了罪魁祸首,接下来就是封锁环节。我使用了iptables来拒绝这个IP的所有访问:

iptables -I INPUT -s 104.28.229.11 -j DROP

iptables更多的操作命令这里不再赘述。

当然以上解决办法只是紧急临时方案,要一劳永逸还是要使用安全防护服务,比如上面我提到的使用fail2ban工具。此次事件fail2ban未能及时生效的原因还是因为我的配置不太合理,后面再将fail2ban的安装及配置,让你的服务无懈可击。

原创文章,作者:网络技术联盟站,如若转载,请注明出处:https://www.sudun.com/ask/49773.html

(0)
网络技术联盟站's avatar网络技术联盟站
上一篇 2024年5月15日 上午6:15
下一篇 2024年5月15日 上午6:17

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注