DDoS渗透与攻防实战(四):CC攻击防御系统部署

1. 系统效果

此防御系统位于应用层,可以有效防止非法用户对服务器资源的滥用:

只要是发送高频率地、应用层请求以实现大量消耗系统资源的攻击方式,皆可有效防御。

其实现的基本思想是:

定期分析所有访问用户在过去各个时间段内的请求频率,将频率高于指定阈值的用户判定为资源滥用者,将其封杀一段时间,时效过后,防御系统自动将其解封。

在线效果测试:

进入网站-> 点击右上侧在线查询,此时将会进入/shell/yf域内,/shell/yf是一个用bash scripts写的动态web-cgi程序,用户每一次提交信息,此程序将会执行一些服务器端的查询操作,然后将数据处理后返回到客户端。

为了防止非法用户高频率地访问这个程序,而影响到其他正常用户的访问,故需要进行一些保护措施。

最终效果:

被封信息页面

在/shell/yf域内,按住F5不放,一直刷新,几秒后松开,就能看到被封信息和解封时间。
只要某个用户对/shell/yf的访问超过了正常的频率,服务将会对这个用户关闭一段时间,期满后自动解封。

2. 系统原理

操作系统: CentOS 6.5 x86_64
开发语言: Bash Shell Scripts
Web服务器: Apache Httpd


(此图为系统结构的鸟瞰图 可存至本地后放大查看)

2.1 自定义日志:/etc/httpd/logs/yfddos_log


(自定义日志文件的格式)

在httpd.conf的日志参数中,加入如下两行:

   LogFormat "%a \"%U\" %{local}p %D %{%s}t " yfddos
CustomLog logs/yfddos_log yfddos

我们接下来重点分析日志文件/etc/httpd/logs/yfddos_log.

LogFormat "%a \"%U\" %{local}p %D %{%s}t " yfddos

解释:

%a -> 用户的IP
%U -> 请求的URL地址,但并不包含query string(The URL path requested, not including any query string.)
%{local}p -> 用户请求的服务器端口(一般为80)
%D -> 这个请求共消耗了服务器多少微秒(The time taken to serve the request, in microseconds.)
%{%s}t -> 服务器收到这个请求时,时间戳的值(seconds since 1970-01-01 00:00:00 UTC)

例子:

192.168.31.1 "/shell/yf" 80 118231 1417164313

译为: IP为192.168.31.1的主机,在时间戳为1417164313的时候,访问了/shell/yf,并由服务器的80端口向其提供服务,共耗时118231微秒

或为: IP为192.168.31.1的主机,在2014-11-28 16:45:13的时候,访问了/shell/yf,并由服务器的80端口向其提供服务,共耗时0.118231秒

至于为什么不使用httpd.conf中官方定义的日志,原因如下:

- 用户访问日志的一条记录可大约控制在60Bytes以内,数据量小,便于后期分析,官方定义的日志太过臃肿,影响分析速度
- 使用时间戳标志时间,便于后期分析,官方定义的日志时间参数为常规的表达方式,不便于直接进行处理
- httpd的日志系统本身就是从旧到新进行排序记录的,所以/etc/httpd/logs/yfddos_log日志条目的时间戳,亦为从小到大进行排序的,数据记录更加鲜明

2.2 yfddosd黑名单文件格式

黑名单文件格式

yfddosd黑名单文件/etc/yfddos/web-yf-search.b格式如下:

# ip    add-stamp  rmv-stamp
1.2.3.4 1416046335 1416046395
1.2.3.5 1416046336 1416046396
1.2.3.6 1416046339 1416046399

每一行为一个黑名单条目,上面第一个条目的意义为:

IP地址  :1.2.3.4
开始时间:时间戳1416046335,即 2014-11-15 18:12:15
终止时间:时间戳1416046395,即 2014-11-15 18:13:15

直观意义为:

IP地址:1.2.3.4,从2014-11-15 18:12:15开始,被封杀1分钟,在2014-11-15 18:13:15时自动解封。

这个文件将由驻留在系统中的daemon守护进程yfddosd进行维护更新。

2.3 守护进程yfddosd:防御系统的逻辑核心

守护进程的原理图

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值