我照看的其中一台服务器似乎正在参与针对wordpress安装的暴力攻击.
我已经多次接受这个了,所以我非常熟悉可以采取的防止这种情况的步骤.然而,我正在努力的是检测传出的攻击.服务器是一个典型的Apache服务器,上面有许多虚拟主机 – 当然这就是复杂的地方 – 如果那里只有一个,那就不会那么困难了!
我正在使用tcpflow使用此命令记录从此服务器上的任何端口到任何其他计算机上的端口80的流量:
tcpflow -i eth0 dst port 80 and src host <my_servers_ip> and port not 22
我发现这比tcpdump更好.看一下它的输出可能会在一段时间后有点大脑融化:) tcpflow将每个请求放入一个单独的文件中.
POST /wp-login.PHP HTTP/1.1 User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) Host: somedomain.com Accept: */* Cookie: wordpress_test_cookie=WP+Cookie+check Content-Length: 97 Content-Type: application/x-www-form-urlencoded log=jacklyn&pwd=london&wp-submit=Log+In&redirect_to=http://somedomain.com/wp-admin/tes1a0&testcookie=1
请注意,我已经混淆了上面的“主机:”,我相信这是被攻击的主机(这是正确的吗?).
所以我的问题是,我该如何检测生成此恶意流量的虚拟主机?如果我能做到这一点,我可以让我的客户知道,他可以采取措施调查网站并进行必要的更改以阻止它.
任何解决方案非常感谢收到:)
解决方法
我假设您所说的是在一个设置中,您无法使用allow_url_fopen限制客户端的URL下载.
在这种情况下,实际上很难回到原始的PHP脚本,因为您显示的tcpflow日志实际上并没有嵌入该信息.
一个容易考虑的选择是强制任何传出请求具有可用于识别实际客户端的显示用户代理.
例如,您可以向client1网站的vhost定义添加指令
PHP_admin_value user_agent client1
这将强制该网站发出的任何http请求都使用用户代理“client1”,该用户代理将显示在您的tcpflow日志中,从而允许您知道是谁创建了它.
请注意,如果担心隐私,您可能希望使用user_agent,只有您可以映射到实际客户端(例如客户端名称的加密).
但是它可能会损害可用性,因为某些网站将根据提供的user_agent显示不同的内容,并且此设置会故意阻止客户端尝试更改它.