应对CC攻击的自动防御系统的原理与实现

应对CC攻击的自动防御系统的原理与实现0x00系统效果此DDOS应用层防御系统已经部署在了http://www.yfdc.org网站上(如果访问失败,请直接访问位于国内的服务器http://121.42.45.55进行在线测试)。此防御系统位于应用层,可以有效防止非法用户对服务器资源的滥用:只要是发送高频率地、应用层请求以实现大量消耗系统资源的攻击方式,皆可有效防御。其实现的基本思想是:定期分析所有访问用户在过去各个时间段内的请求频率,将频率高于指定阈值的用户判定为资源滥用者,将其封杀一段时间,时效过后,防御系统自动将其解封。在线效果测试:进入http://www.yfdc.org->点击右上侧在线查询,此时将会进入/shell/yf域内,/shell/yf是一个用bashscripts写的动态web-cgi程序,用户每一次提交信息,此程序将会执行一些服务器端的查询操作,然后将数据处理后返回到客户端。为了防止非法用户高频率地访问这个程序,而影响到其他正常用户的访问,故需要进行一些保护措施。最终效果:被封信息页面在/shell/yf域内,按住F5不放,一直刷新,几秒后松开,就能看到被封信息和解封时间。只要某个用户对/shell/yf的访问超过了正常的频率,服务将会对这个用户关闭一段时间,期满后自动解封。0x01系统原理操作系统:CentOS6.5x86_64开发语言:BashShellScriptsWeb服务器:ApacheHttpd(此图为系统结构的鸟瞰图可存至本地后放大查看)2.1自定义日志:/etc/httpd/logs/yfddos_log(自定义日志文件的格式)在httpd.conf的日志参数中,加入如下两行:LogFormat"%a\"%U\"%{local}p%D%{%s}t"yfddosCustomLoglogs/yfddos_logyfddos我们接下来重点分析日志文件/etc/httpd/logs/yfddos_log.LogFormat"%a\"%U\"%{local}p%D%{%s}t"yfddos解释:%a->用户的IP%U->请求的URL地址,但并不包含querystring(TheURLpathrequested,notincludinganyquerystring.)%{local}p->用户请求的服务器端口(一般为80)%D->这个请求共消耗了服务器多少微秒(Thetimetakentoservetherequest,inmicroseconds.)%{%s}t->服务器收到这个请求时,时间戳的值(secondssince1970-01-0100:00:00UTC)例子:192.168.31.1"/shell/yf"801182311417164313译为:IP为192.168.31.1的主机,在时间戳为1417164313的时候,访问了/shell/yf,并由服务器的80端口向其提供服务,共耗时118231微秒或为:IP为192.168.31.1的主机,在2014-11-2816:45:13的时候,访问了/shell/yf,并由服务器的80端口向其提供服务,共耗时0.118231秒至于为什么不使用httpd.conf中官方定义的日志,原因如下:-用户访问日志的一条记录可大约控制在60Bytes以内,数据量小,便于后期分析,官方定义的日志太过臃肿,影响分析速度-使用时间戳标志时间,便于后期分析,官方定义的日志时间参数为常规的表达方式,不便于直接进行处理-httpd的日志系统本身就是从旧到新进行排序记录的,所以/etc/httpd/logs/yfddos_log日志条目的时间戳,亦为从小到大进行排序的,数据记录更加鲜明2.2yfddosd黑名单文件格式黑名单文件格式yfddosd黑名单文件/etc/yfddos/web-yf-search.b格式如下:#ipadd-stamprmv-stamp1.2.3.4141604633514160463951.2.3.5141604633614160463961.2.3.614160463391416046399每一行为一个黑名单条目,上面第一个条目的意义为:IP地址:1.2.3.4开始时间:时间戳1416046335,即2014-11-1518:12:15终止时间:时间戳1416046395,即2014-11-1518:13:15直观意义为:IP地址:1.2.3.4,从2014-11-1518:12:15开始,被封杀1分钟,在2014-11-1518:13:15时自动解封。这个文件将由驻留在系统中的daemon守护进程yfddosd进行维护更新。2.3守护进程yfddosd:防御系统的逻辑核心守护进程的原理图守护进程yfddosd是整个CC防御系统的核心,而functionanalyze_and_insert_black()则是yfddosd的核心。yfddosd的配置参数:yfddos_blackfilePath='/etc/yfddos/web-yf-search.b'yfddos_accesslogPath='/etc/httpd/logs/yfddos_log'functionanalyze_and_insert_black(){#analyze_and_insert_black():#$1:maxfrequency(seemsasabuseifabovethat)$2:blackip-ttl,timetolive,unitisseconds(s)#$3:theaccesslog${3}secondsbeforewillbeanalyzedtog...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?