通过执行以下命令,可以在瞬间发现一个IP地址正在消耗的Apache worker的数量:
netstat -pantu | grep :80 |sort | uniq -c |grep <IP_HERE, eg: 192.168> | wc -l
例如,这在DDoS攻击期间很有用。 从这个angular度可以确定一个人的反措施是否能够有效地减less阿帕奇工作人员被处理的太多stream量等。
最近我遇到了一个共享IP地址受到攻击的情况,我不能很快find哪个用户在使用最多的Apache工作。 如何确定这样的价值?
有人build议我注意每个用户的stream量,但是这似乎并没有真正给出我正在寻找的答案,当有大量的工人正在产生僵局,所以我到了那个地步我试图按照每个用户来分离工人的所有权。
你可以parsingmod_status w / ExtendedStatus On输出。 这是所有工人/线程/儿童的实时状态 。 加上SSL。
请注意,如果服务器的响应速度很快,那么很难跟踪实际的请求计数(您不会看到状态重新加载之间会发生什么 – 只有工作人员的最新请求)。
curl 'http://localhost/server-status' | perl -ne 'print "$1\n" if m~<td nowrap>(.*?)</td>.*</td></tr>~ ' | sort | uniq -c | sort -n
或者在tcpdump sniff中使用hardcore grep for'Host:'头文件 – 这不会提供实时的工作人员数量,而是显示实时的服务器数据stream – 因此,如果滚动速度过快,您必须自己进行( sort|uniq|sort ) – 但你看到所有请求服务问 。 注意,这不是一个安全的parsing器(头/包可以是乱码等)
tcpdump -qlnpA dst port 80 | egrep '^Host:'
你可以喜欢那个tcpdump,就像
tcpdump -qlnpA dst port 80 | egrep -e '^Host:' -e '(GET|POST)\s.*HTTP'
如果你不grep的服务器的IP,你可能只能看看输出。 如果没有,可以使用sed来获取客户端IP,然后使用sort和uniq -c来获得计数,但维护脚本会更容易。