Answers:
tail -n 10000 yourweblog.log|cut -f 1 -d ' '|sort|uniq -c|sort -nr|more
看一下最上面的IP地址。如果有任何其他产品脱颖而出,那将是防火墙。
netstat -n|grep :80|cut -c 45-|cut -f 1 -d ':'|sort|uniq -c|sort -nr|more
这将查看当前活动的连接,以查看是否有任何IP连接到端口80。您可能需要更改cut -c 45-,因为IP地址可能不在第45列开始。您的网络服务器,它也会被选中。
如果这些IP都不大可能出现任何超出正常范围的IP,则您需要假定您有一个僵尸网络在攻击您,并且需要在日志中查找特定的模式以查看其作用。针对wordpress网站的常见攻击是:
GET /index.php? HTTP/1.0
如果您查看网站的访问日志,则可以执行以下操作:
cut -f 2 -d '"' yourweblog.log|cut -f 2 -d ' '|sort|uniq -c|sort -nr|more
它会向您显示最常访问的网址。您可能会发现他们正在点击特定的脚本,而不是加载整个站点。
cut -f 4 -d '"' yourweblog.log|sort|uniq -c|sort -nr|more
将允许您查看常见的UserAgent。他们可能在攻击中使用了一个UserAgent。
诀窍是找到与正常流量中不存在的攻击流量相同的东西,然后通过iptables,mod_rewrite或Webhost上游对其进行过滤。如果您受到Slowloris的打击,Apache 2.2.15现在提供了reqtimeout模块,该模块允许您配置一些设置以更好地防御Slowloris。
这里有一些很好的技巧。我还要添加以下内容:
netstat -an | grep ESTABLISHED | awk '\''{print $5}'\'' | awk -F: '\''{print $1}'\'' | sort | uniq -c | awk '\''{ printf("%s\t%s\t",$2,$1); for (i = 0; i < $1; i++) {printf("*")}; print ""}'\''
将其放在别名下(例如nn)。这将为您提供更多已建立连接的ip的“图形”透视图。
希望这可以帮助。
对于那些无法正常工作的人,我已修复了语法,因此它可以在Ubuntu下为我运行:
netstat -an|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|awk '{ printf("%s\t%s\t",$2,$1); for (i = 0; i < $1; i++) {printf("*")}; print ""}'
为了保护我的服务器,我使用Fail2Ban一个简单的脚本
扫描/ var / log / pwdfail或/ var / log / apache / error_log之类的日志文件,并禁止IP导致太多密码失败。它更新防火墙规则以拒绝IP地址。
哪个发行版?
我认为该日志在Ubuntu的/var/log/apache2/access.log下...可能也是Debian。
以sudo身份运行updatedb,然后从命令行找到access.log。
编辑:我相信这只会发生在他们通过请求页面或直接通过端口80打到您的情况下。如果他们正在打其他端口,您将不会看到所需的信息,您将需要检查并查看哪个进程在该端口上运行,并查看该进程的连接日志。
如果您使用的是分布式DOS,则肯定有不止一个IP可以阻塞,并且IP可能是伪造的,最好像mfinni所说的那样询问您的ISP 。同样,这可能不仅仅是针对您服务器的DOS,而是诱骗者无法隐藏真正的攻击,因此请检查所有公开的服务是否均由最新软件运行。您可能也对mod_dosevasive for Apache感兴趣。
首先,您必须确定DOS的类型。有些攻击是非常隐秘但有效的(慢速),其中一些攻击是如此之重,可能会使ISP崩溃(ICMP泛滥的原因是其带宽高于ISP来源)。
确定DOS的类型后,请致电您的ISP并询问他们是否可以过滤流量。
我已经看到ICMP泛滥成灾,以至于我们不得不要求上游ISP通过BGP社区过滤掉目标IP。