一、怎样防御CC?
防御CC攻击首先需要从根本上做起:禁止网站代理访问、尽量将网站做成静态页面、限制连接数量、修改最大超时时间,当然也有非常直接的方法,就是从日志中分析出所有可能是"肉鸡"的IP地址然后将其写入iptables防火墙中拒绝访问,简单介绍如何使用脚本实现自动化的拒绝异常IP访问。
1、分析日志格式
使用head命令查看前几行的的日志格式从而分析,但说白了关心的东西也就那么几点,首先是第一个字段,这是请求过来的真是IP地址,其次则是 requesthost后面说跟着的字段,则是请求访问的域名
分析完成后,我们接下来需要确定一下整体的思路流程
(1)把一分钟之内访问超过100次的IP地址给拒绝访问;
(2)拒绝的IP地址需要记录到一个日志当中;
(3)每次进行检测前把之前的IP解除拒绝访问;
(4)解除拒绝访问的IP地址也需要记录到一个日志当中。
2、awk处理字符串
awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。
(1)语法形式
awk [options] 'script' var=value file(s)
awk [options] -f scriptfile var=value file(s)
(2)常用命令选项
-F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
-v var=value 赋值一个用户定义变量,将外部变量传递给awk
-f scripfile 从脚本文件中读取awk命令
-m[fr] val 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
3、sort排序
sort命令是在Linux里非常有用,它可以将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。
(1)语法形式
sort(选项)(参数)
(2)常用命令选项
-b:忽略每行前面开始出的空格字符;
-c:检查文件是否已经按照顺序排序;
-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
-f:排序时,将小写字母视为大写字母;
-i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符;
-m:将几个排序号的文件进行合并;
-M:将前面3个字母依照月份的缩写进行排序;
-n:依照数值的大小排序;
-o<输出文件>:将排序后的结果存入制定的文件;
-r:以相反的顺序来排序;
-t<分隔字符>:指定排序时所用的栏位分隔字符;
+<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
4、uniq去除重复
uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用。
(1)语法形式
uniq(选项)(参数)
(2)常用命令选项
-c或——count:在每列旁边显示该行重复出现的次数;
-d或--repeated:仅显示重复出现的行列;
-f<栏位>或--skip-fields=<栏位>:忽略比较指定的栏位;
-s<字符位置>或--skip-chars=<字符位置>:忽略比较指定的字符;
-u或——unique:仅显示出一次的行列;
-w<字符位置>或--check-chars=<字符位置>:指定要比较的字符。
这里要注意的是要先排好序然后才能正常统计,所以一般会和sort搭配使用。