在这篇文章里,我们来讨论一下点击劫持和Slowloris拒绝服务攻击,并且学习怎么防止这两种攻击方式。我使用的是CentOS-Apache环境。
点击劫持(Clickjacking)
点击劫持是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。
Slowloris攻击
SlowLoris攻击是一种DOS(拒绝服务攻击)的一种,它是针对Apache的一种慢速攻击方式,通过该种方法可以导致Apache拒绝服务。攻击者建立和服务器的连接,并且保持这个连接,不释放,直到达到最大连接数限制。结果是,正常用户因为服务器资源耗尽而不能正常访问。
避免点击劫持
怎么在Apache上把点击劫持攻击的风险降到最低呢?
X-Frame是Apache用来阻止攻击者使用Clickjacking攻击的选项参数。最重要的一点是理解这个参数在背后做了什么。上面说了,攻击者把一些内容隐藏在图像、frame的后面,启动X-Frame会禁止隐藏内容的激活。使用如下命令检查apache是否设置X-Frame参数:
1 |
$ curl -I http://your_domain.com |
在输出的http头中是否有“X-Frame“选项;如果没有的话,你的web服务器容易受点击劫持影响。添加方法是,编辑Apache的配置文件,添加如下一行:
1 |
Header always append X-Frame-Options SAMEORIGIN |
重启Apache,再次查看http头,看看是否有如下内容:
1 |
X-Frame-Options: SAMEORIGIN |
如果有,恭喜你,现在你的web服务器基本免疫了点击劫持攻击。
避免SlowLoris攻击
这一步阻止SlowLoris DOS攻击。有几种方式可以防止SlowLoris攻击,我们使用最重要的一个:QOS模块。编辑apache配置文件,添加QOS模块的配置,如下:
参数解释:
- QS_ClientEntries:最多处理的连接数
- QS_SrcMaxConnPerIP:限制一个IP地址最多建立50个连接,超过50个会屏蔽。根据你的实际情况修改
- MaxClients:最多256 TCP连接
- QS_SrvMaxConnClose:当一个连接超过180秒,关闭KeepAlive
- QS_SrvMinDataRate:设置最少150 bytes每秒每连接,达到MaxClients限制,1200 bytes每秒每连接