简单的shell脚本结合awk实现防止对web服务的dos攻击

栏目: 服务器 · 发布时间: 7年前

内容简介:简单的shell脚本结合awk实现防止对web服务的dos攻击

一 实验环境

鄙人使用的是centos 6.8操作系统   需要安装iptables(常见的 linux 系统貌似都会自动安装iptables)这条可以忽略   awk也需要安装没有的话就用yum装下吧

当然最重要的是web服务 我这里使用的是apache  对日志进行分析  当然你也可以分析其他的日志嘛  只是拿web服务来当例子而已

二 脚本介绍

使用的机制主要是对日志进行切片   对日志段进行分析  并写进防火墙规则中

为什么使用awk  awk对文本处理速度比较快 而且语法相对简单

#!/bin/bash         (1)

while true           (2)

do

echo “`awk -v dateTime=”$datetimes”  ‘{if($1==dateTime){i=1}if(i==1){dateArry[$1]++}} \  

END{for(j in dateArry){printf “%s %s\n”,j,dateArry[j]}}’ /var/log/httpd/access_log`” \

|  awk ‘{if($2>=20){system(“iptables -A INPUT -j REJECT -p tcp –dport 80  -s “$1)}}’

datetimes=`date +%y-%m-%d-%H-%M-%s`      (3)

echo “$datetimes” >> /var/log/httpd/access_log  (4) 

sleep 30              (5)

done

(1)声明使用bash

(2)使用while循环

(3) datetimes=`date +%y-%m-%d-%H-%M-%s`   生成时间1.便于查看是什么时候产生的攻击 2.相当于随机数避免产生重复

(4)将产生伪随机数写入到web服务的日志中

(5)这里可以自定义时间当然你也可以写到计划里边当然这一行也可以注释掉  (当然while循环也得注释掉如果你使用计划任务)当然我这里的30有点小你可以自己定制一下我主要是进行快速的测试

下面对awk部分进行分段分析

echo “` awk -v dateTime=”$datetimes

‘{if($1==dateTime){i=1}if(i==1){dateArry[$1]++}} \   awk对日志文件进行分析 “↓” 对就是对小箭头指的这个文件如果第一个字段等于dateTime则开始计数 并赋予i一个值1  如果i=1  则对数组下标为 dateArry[$1]的值进行+1

     END{for(j in dateArry){printf “%s %s\n”,j,dateArry[j]}}’            /var/log/httpd/access_log`” \ 

END看到没有就在上边   等awk处理结束后  对处理的字段进行输出操作  遍历dateArry数组  输出IP地址(j 的值)和IP出现的次数( dateArry[j] 的值)

         

|  awk ‘{if($2>=20){system(“iptables -A INPUT -j REJECT -p tcp –dport 80  -s “$1)}}’

看到最上边的echo没有  使用echo输出awk的值传递给另一个awk进行iptables的写规则操作

当然我这里是测试20这个值也是太小了  你可以根据实际环境进行修改   如果 IP出现的次数( dateArry[j] 的值 )这个值大于20就讲这个所对应的ip写入到防火墙的规则里  使用system()函数 ”   iptables -A INPUT -j REJECT -p tcp –dport 80  -s “$1 最后的 $1  输出IP地址(j 的值)就是将这个ip添加到拒绝的规则中

三 测试

运行脚本

简单的 <a href='https://www.codercto.com/topics/18193.html'>shell</a> 脚本结合awk实现防止对web服务的dos攻击

疯狂刷新页面

简单的shell脚本结合awk实现防止对web服务的dos攻击

查看日志

简单的shell脚本结合awk实现防止对web服务的dos攻击

我刚开始故意等了一个疗程的

后边是几百条的日志信息

然后后查看防火墙规则

简单的shell脚本结合awk实现防止对web服务的dos攻击

当我打开浏览器的时候他就这样了

简单的shell脚本结合awk实现防止对web服务的dos攻击


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序员的修炼

程序员的修炼

Jeff Atwood / 陆其明、杨溢 / 人民邮电出版社 / 2014-4 / 45.00元

《程序员的修炼——从优秀到卓越》是《高效能程序员的修炼》的姊妹篇,包含了Coding Horror博客中的精华文章。全书分为8章,涵盖了时间管理、编程方法、Web设计、测试、用户需求、互联网、游戏编程以及技术阅读等方面的话题。作者选取的话题,无一不是程序员职业生涯中的痛点。很多文章在博客和网络上的点击率和回帖率居高不下。 Jeff Atwood于2004年创办Coding Horror博客(......一起来看看 《程序员的修炼》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具