防止Apache服务器遭受DDoS攻击
我在WordPress上運營多個網站,但我注意到偶爾會出現類似DDoS攻擊的訪問暴增,因此我決定採取對策。
分析可疑访问日志
根据上图,我们可以看出在9点左右CPU负载较高,因此我们查看了该时间段附近的Apache访问日志,发现了以下可疑访问记录。
-
- 经常看到对WordPress的xmlrpc.php的访问
-
- 经常看到对CONNECT方法的访问
- 经常看到从特定的IP地址访问不存在的URL(存在自动生成的地址模式)
我决定在apache的配置文件中进行设置,以阻止访问。具体做法是创建一个security.conf文件,在其中进行设置,并在httpd.conf中设置以加载security.conf。
阻止对WordPress的xmlrpc.php的访问
xmlrpc.php似乎很容易成为DDoS的温床。如果搜索一下,会得到很多相关信息。
所以需要添加以下说明。
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
CONNECT方法的阻塞
在HTTP方法中,CONNECT是一种方法,当我们想要发送请求连接到某个URL时,我们会使用这个方法来发送到代理服务器。
如果一台服务器向我们的服务器发送了这样的方法,就有点可疑了…
所以我们决定将除了GET和POST之外的方法都进行阻止。
<LimitExcept GET POST>
order deny,allow
deny from all
</LimitExcept>
阻止特定IP地址的访问
这里有一个特定的IP地址,有大量的访问记录在不存在的URL上。举个例子,
-
- s_se.php
-
- s_e.php
-
- beence.php
- ups.php
等等……
根据以下网站上查询的IP地址,因为该地址在数据库中被完全标记为可疑IP地址,所以需要明确地进行封锁。
<RequireAll>
Require all granted
Require not ip xxx.xxx.xxx.xxx
</RequireAll>
最终的安全配置文件。
最后最终的描述如下。
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
<Directory /[wordpress設置ディレクトリ]>
<LimitExcept GET POST>
order deny,allow
deny from all
</LimitExcept>
<RequireAll>
Require all granted
Require not ip xxx.xxx.xxx.xxx
</RequireAll>
</Directory>
总结
因为在同一台服务器上运行多个WordPress,所以我在apache的conf文件中进行了设置,而不是在.htaccess文件中。将来如果出现其他可疑访问,我打算在这个文件中进行追加。