shell实例浅谈之五解决网络中DOS攻击的方法

来源:互联网 发布:台州网络平台赌博 编辑:程序博客网 时间:2024/05/22 07:41

一、问题

      DOS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。

      解决DOS攻击方法:可以通过分析web日志,或者查看网络连接数,当某个IP并发连接数过多(或判断PV短时内达到1000),则调用防火墙命令封掉对应的ip,监控频率可是每隔3分钟。

二、详解

1、网络连接

(1)判断某个网段,可以连接的用户

ping通即在线,但该方法花费的时间比较长

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #判断用户在线,ping通即在线  
  2. #!/bin/bash  
  3.   
  4. for n in `seq 254`                              #从192.168.40.1-192.168.40.254  
  5. do  
  6.     ping -c2 192.168.40.$n > /dev/null 2>&1     #发送两个数据包  
  7.     if [ $? -eq 0 ]                             #返回状态判断  
  8.     then  
  9.         echo "192.168.40.$n is up" >> downlist.log  #记录结果文件  
  10.     #else  
  11.         #echo "192.168.40.$n is down" >> downlist.log  
  12.     fi  
  13. done  
  14. echo "spend time:$SECONDS"  

2、解决DOS攻击

(1)方法一:分析web日志

把单IP PV数高的封掉(可按天定义PV=1000即封掉):

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #!/bin/bash  
  2. while true  
  3. do  
  4.     #access.log为web日志文件  
  5.         awk '{print $1}' access.log | grep -v "^$" | sort | uniq -c > tmp.log  
  6.           
  7.     exec < tmp.log             #输入重定向  
  8.         while read line            #读取文件  
  9.         do  
  10.         ip=`echo $line | awk '{print $2}'`  
  11.         count=`echo $line | awk '{print $1}'`  
  12.                 if [ $count -gt 100 ] && [ `iptables -n -L | grep "$ip" | wc -l` -lt 1 ]  
  13.                 then  
  14.                     iptables -I INPUT -s $ip -j DROP  
  15.                     echo "$line is dropped" >> droplist.log  
  16.                 fi  
  17.         done  
  18.     sleep 3  
  19. done  

(2)方法二:分析网络连接数

netstat -an | grep EST查看网络状态如下:

tcp        0      0 192.168.40.125:46476        112.95.242.171:80           ESTABLISHED
tcp        0     74 192.168.40.125:57948        173.194.127.177:443         ESTABLISHED
tcp        0      0 192.168.40.125:52290        118.144.78.52:80            ESTABLISHED
tcp        0      0 192.168.40.125:42593        163.177.65.182:80           ESTABLISHED
tcp        0      0 192.168.40.125:49259        121.18.230.110:80           ESTABLISHED
tcp        0      0 192.168.40.125:52965        117.79.157.251:80           ESTABLISHED

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #!/bin/bash  
  2. while true  
  3. do  
  4.         grep EST est.log | awk -F '[ :]+' '{print $6}' | sort | uniq -c > tmp.log  
  5.     #netstat -an | grep EST | awk -F '[ :]+' '{print $6}' | sort | uniq -c  
  6.     exec < tmp.log  
  7.         while read line  
  8.         do  
  9.         ip=`echo $line | awk '{print $2}'`  
  10.         count=`echo $line | awk '{print $1}'`  
  11.                 if [ $count -gt 100 ] && [ `iptables -n -L | grep "$ip" | wc -l` -lt 1 ]  
  12.                 then  
  13.                     iptables -I INPUT -s $ip -j DROP  
  14.                     echo "$line is dropped" >> droplist.log  
  15.                 fi  
  16.         done  
  17.     sleep 3  
  18. done 
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 四个月宝宝拉绿屎推拿怎么办 三个月大的宝宝消化不良怎么办 婴儿大便常规正常的腹泻怎么办 宝宝十个月母乳不够吃怎么办 吃药上吐腹泻在3怎么办 房子买了新生儿户口怎么办 吃海鲜拉稀拉水怎么办 吃海鲜腹泻拉水怎么办 两个月宝宝不爱睡觉怎么办 2个月宝宝干呕怎么办 9个月宝宝拉稀的怎么办 宝宝拉肚子快一个月了怎么办 满月宝宝发烧38度怎么办 大人腹泻10天了怎么办 十个月宝贝拉水怎么办 十个月宝宝脱水哭闹怎么办 宝宝肠胃不好老是拉肚子怎么办 七个月的宝宝老是拉肚子怎么办 6个月宝宝拉肚子怎么办 没满月宝宝吐奶怎么办 八个月宝宝有点拉肚子怎么办 4个月宝宝拉水怎么办 2岁宝宝消化不好拉肚子怎么办 两岁宝宝老拉肚子怎么办 2岁宝宝拉肚子老不好怎么办 2岁宝宝一直拉肚子不好怎么办 5天新生儿拉稀水怎么办 4天新生儿拉稀水怎么办 新生儿40天拉稀水怎么办 一周多的宝宝拉肚子怎么办 出生半个月的宝宝拉肚子怎么办 刚出生几天的宝宝拉肚子怎么办 刚出生的宝宝拉肚子怎么办 出生八天的宝宝拉肚子怎么办 刚出生婴儿拉水怎么办 三岁宝宝一直吐怎么办 3岁宝宝一直吐怎么办 5个月宝宝一直吐怎么办 新生儿睡反了觉怎么办 吃母乳奶流量大怎么办 两个月宝宝有痰怎么办