我试图阻止一些试图从我的网站利用 XSS 漏洞的攻击者,我发现大多数恶意尝试都是从经典的“alert(document.cookie);\”测试开始的。该站点不易受到 XSS 攻击,但我想在有问题的 IP 地址发现真正的漏洞之前阻止它们,同时保持日志干净。
我的第一个想法是让脚本不断检查 Apache 日志中所有以该探测开头的 IP 地址,并将这些地址发送到 iptables 丢弃规则。像这样:
cat /var/log/httpd/-access_log | grep“警报(document.cookie);” | awk '{打印 $1}' | 独特的
为什么将该命令的输出发送到 iptables 是一种有效的方法?
提前感谢您的任何意见!
您会很高兴知道您不必编写程序。fail2ban已经这样做了。
我所做的事情,主要是因为我对更优雅的解决方案一无所知,就是每 4 小时手动检查一次我的 Nginx 日志,并且每 2 分钟检查一次邮件服务器日志,以检查单个 IP 的过度访问。我一起运行了几个脚本:
access.log
并列出按对服务器的点击次数排列的前 10 个 IPiptables.save
这是它的样子:
autoBanIPs_mail.sh checkBadIPs_mail.sh这里需要注意的一件非常重要的事情是,您需要设置一个白名单,否则您将开始阻止来自服务器的大量真实 IP,而您刚刚从这些服务器收到大量电子邮件,或者在其他日志的情况下,IP 是只是出于正当理由经常访问您的服务器。通过在|之后添加 grep 管道,我的白名单只是内置到此脚本中。grep ']' | 看起来像这样的“grep -v 127.0 |” .
区块IP您需要花时间教您的服务器哪些高流量 IP 是合法的,哪些不是。对我来说,这意味着我必须在第一周左右每隔几个小时手动检查一次日志,在 iplocation.net 上查找高流量 ip,然后添加像 amazon、box.com 甚至我的家/办公室这样的合法 IP此白名单的 IP 范围。如果您不这样做,您可能会被自己的服务器阻止,或者您将开始阻止合法的邮件/网络服务器并导致电子邮件或流量中断。
我每 2 分钟检查一次日志,主要是我的 ssh 身份验证日志和邮件日志,因为它们受到了冲击:(。
我为每个日志文件设置了特定的脚本,尽管在我想要检查日志时使用我自己使用的手动脚本很容易。看起来像这样:
这在运行时需要 2 个输入,即要扫描的日志文件以及要扫描的过去多远。
因此,如果我想检查 mail.log 的 ip 计数,比如过去 75 分钟,我会运行:
我再次知道这很粗糙,并且可能有一个很好的干净有效的协议来完成所有这些,但我不知道它,这件事已经持续了一两年,并且阻止了坏人。我会非常认真地推荐的一件事是你有一个代理或另一台服务器,你可以用来访问你的主服务器。原因是,如果你有一天突然做 Web 开发,而你在 5 小时内 ping 自己 2000 次以进行一些测试,除了代理之外,您可能会被阻止而无法返回。
您可以看到,在
checkBadIPs.sh
我放置了 grep -v 127.0 并且在我的实际文件中,我对自己的 IP 和其他受信任的 IP 范围有大量忽略规则,但有时您的 IP 更改,您忘记更新然后被锁定出你自己的服务器。无论如何,希望有帮助。