`
zhengdl126
  • 浏览: 2513530 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

Shell脚本防攻击一例

 
阅读更多

http://yaozb.blog.51cto.com/2762349/882176

 

 

 

 

 

 

  不知道得罪了哪路神仙,收到nagios报警,发现有个网站有CC攻击。看样子,量还不小,把服务器的负载都弄到40+了,虽然网站还能打开,但打开也是非常的缓慢。如果不是配置高点,估计服务器早就挂掉了。看来又是不一个不眠之夜了。
迅速查看一下nginx的访问日志:
#tail -f access.log


貌似全是像这样的状态。

我先紧急手动封了几个访问量比较大的Ip。

 

 

    #vim fengip.sh
    
    #! /bin/bash
    for i in `seq 1 32400`
    do
    sleep 1
    x=`tail -500 access.log |grep 'HTTP/1.1" 499 0 "-" "Opera/9.02'|awk '{print $1}'|sort -n|uniq`
    if [ -z "$x" ];then
    echo "kong" >>/dev/null
    else
    for ip in `echo $x`
    do
    real=`grep -l ^$ip$ all`
    if [ $? -eq 1 ];then
    echo iptables -A INPUT -s $ip -p tcp --dport 80 -j DROP
    iptables -A INPUT -s $ip -p tcp --dport 80 -j DROP
    echo $ip >>all
    fi
    done
    fi
    done

 

脚本写好了。如图

我们来运行一下,运行几分钟后,如下图所示


经过半个小时的观察,服务器负载也降到0.几了,脚本也不断在封一些CC攻击的ip。
一直让他运行着,晚上应该能睡个好觉了。


下来我们来对脚本进行解释一下

 

 

    #vim fengip.sh
    
    #! /bin/bash
    Touch all    #建立all文件,后面有用到
    for i in `seq 1 32400` #循环32400次,预计到早上9点的时间
    do
    sleep 1
    
    x=`tail -500 access.log |grep 'HTTP/1.1" 499 0 "-" "Opera/9.02'|awk '{print $1}'|sort -n|uniq` #查看最后500行的访问日志,取出包含 'HTTP/1.1" 499 0 "-" "Opera/9.02' 的行的ip并排序,去重复
    if [ -z "$x" ];then
    echo "kong" >>/dev/null #如果$x是空值的话,就不执行操作,说明500行内,没有带 'HTTP/1.1" 499 0 "-" "Opera/9.02' 的行
    else
    for ip in `echo $x` #如果有的话,我们就遍历这些ip
    do
    real=`grep -l ^$ip$ all` #查看all文件里有没有这个ip,因为每封一次,后面都会把这个ip写入all文件,如果all文件里面有这个ip的话,说明防火墙已经封过了。
    if [ $? -eq 1 ];then #如果上面执行不成功的话,也就是在all文件里没找到,就用下面的防火墙语句把ip封掉,并把ip写入all文件
    echo iptables -A INPUT -s $ip -p tcp --dport 80 -j DROP
    iptables -A INPUT -s $ip -p tcp --dport 80 -j DROP
    echo $ip >>all
    fi
    done
    fi
    done

 

 

 

 

 

分享到:
评论

相关推荐

    Shell脚本编程100例

    Shell脚本编程100例。 融汇 shell 脚本知识点,集大成之作。 本书实在是学习、进修、面试、居家旅行必备精品!

    常用shell 脚本,dos攻击防范,

    常用shell脚本, Dos攻击防范(自动屏蔽攻击IP).sh 一键部署等等 Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh nginx.conf nginx访问日志分析...

    精心整理shell脚本100例(最新版).pdf

    精心整理shell脚本100例(最新版).pdf

    LinuxShell脚本学习基础视频

    资源名称:Linux Shell脚本学习基础视频资源目录:【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_...

    Shell脚本100例(文本文件)

    Shell 脚本 100 例《一》 Shell 脚本 100 例《二》 Shell 脚本 100 例《三》 Shell 脚本 100 例《四》 Shell 脚本 100 例《五》 Shell 脚本 100 例《六》 Shell 脚本 100 例《七》 Shell 脚本 100 例《八》 Shell ...

    Shell 脚本编程实战100例.pdf

    想学习linux系统,shell很重要,这个是很好的shell学习资源!大家一起学习!

    shell脚本编程100例.doc

    Shell也是一门编程语言,即shell脚本,shell是解释执行的脚本语言,可直接调用linux命令。 一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支持的命令语法是不相同...

    shell脚本100例(最新版).pdf

    1.shell语言学习 2.Linux的命令使用 3.脚本编写练习 4.运维脚本总结

    Shell脚本中获取进程ID的方法

    当我在执行shell脚本时,它会启动一个叫子shell的进程。作为主shell的子进程,子shell将shell脚本中的命令作为批处理运行(因此称为“批处理进程”)。 在某些情况下,你也许想要知道运行中的子shell的PID。这个PID...

    shell脚本100例

    shell脚本100例,经典中的经典,pdf格式!!!!!!!

    shell 脚本shell 脚本shell 脚本

    shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本

    shell脚本编程100例

    shell脚本100例,非常经典,从简单的脚本,到最后企业实战可用的复杂脚本,非常适合初学者参考学习!

    Linux云计算-Shell脚本100例

    Linux云计算-Shell脚本100例

    250个shell脚本

    Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合。 Shell可以直接使用在win/Unix/Linux上面,并且可以调用大量系统内部的功能来...

    shell脚本写的加密脚本

    学习shell脚本,了解linux知识。

    Linux_shell脚本全面学习

    Linux_shell脚本全面学习 Linux_shell脚本全面学习

    python编写shell脚本

    python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本

    shell脚本100例-详细高清版

    shell脚本100例-详细高清版

    shell脚本shell脚本shell脚本

    shell脚本shell脚本shell脚本

    shell脚本大全

    shell脚本大全

Global site tag (gtag.js) - Google Analytics