缓解DDoS攻击Linux+DDoS deflate安装使用详解

  • A+
所属分类:网站建设
摘要

使用DDoS脚本防止DDoS攻击

使用DDoS脚本防止DDoS攻击

DDoS概述:分布式拒绝服务(DDoS:Distributed Denial of Service)攻击,指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。

1. 下载

wget http://www.inetbase.com/scripts/ddos/install.sh

2. 安装

chmod +x install.sh
sudo ./install.sh
  • 安装时会显示一个协议(很长一篇英文),按q退出 ,如下图是按q 关闭协议后安装成功
    缓解DDoS攻击Linux+DDoS deflate安装使用详解

3. 配置

sudo vim /usr/local/ddos/ddos.conf
  • 根据如下提示配置
##### Paths of the script and other files
PROGDIR="/usr/local/ddos"
PROG="/usr/local/ddos/ddos.sh"
IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list"  //IP地址白名单
CRON="/etc/cron.d/ddos.cron"    //定时执行程序
APF="/etc/apf/apf"
IPT="/sbin/iptables"
##### frequency in minutes for running the script
##### Caution: Every time this setting is changed, run the script with --cron
#####          option so that the new frequency takes effect
FREQ=1   //检查时间间隔,默认1分钟
##### How many connections define a bad IP? Indicate that below.
NO_OF_CONNECTIONS=150     //最大连接数,超过这个数IP就会被屏蔽,一般默认即可
##### APF_BAN=1 (Make sure your APF version is atleast 0.96)
##### APF_BAN=0 (Uses iptables for banning ips instead of APF)
APF_BAN=1        //使用APF还是iptables。推荐使用iptables,将APF_BAN的值改为0即可。
##### KILL=0 (Bad IPs are'nt banned, good for interactive execution of script)
##### KILL=1 (Recommended setting)
KILL=1   //是否屏蔽IP,默认即可
##### An email is sent to the following address when an IP is banned.
##### Blank would suppress sending of mails
EMAIL_TO="root"   //当IP被屏蔽时给指定邮箱发送邮件,把root换成自己的邮箱即可
##### Number of seconds the banned ip should remain in blacklist.
BAN_PERIOD=600    //禁用IP时间,默认600秒,可根据情况调整

4. 启动

sudo ddos -c

查看了原作者统计ip连接数的命令,发现有点小问题,修复如下:
/usr/local/ddos/ddos.sh中117行的

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr > $BAD_IP_LIST 

修改成如下

netstat -ntu | grep ":" | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr > $BAD_IP_LIST

启动异常排查

  1. 报错如下:
./ddos.sh: 13: [: /usr/local/ddos/ddos.conf: unexpected operator
DDoS-Deflate version 0.6
Copyright (C) 2005, Zaf <zaf@vsnl.com>
$CONF not found.

【解决方法】: 修改脚本, 把第一行的!/bin/sh改成!/bin/bash

sudo vim /usr/local/ddos/ddos.sh
  1. 报错如下:
Failed to restart crond.service: Unit crond.service not found.

【解决方法】:把脚本中的service crond restart修改成service cron restart ,corndcorn都是linux中自带的定时服务,只是有些linux中服务名不叫cornd ,而是corn 。如: ubuntu

缓解DDoS攻击Linux+DDoS deflate安装使用详解

ddos deflate 参数

# 显示帮助
 ddos –h

#创建计划任务定期运行脚本 【启动】
ddos –c

# 阻止超过n个连接的所有IP地址。
 ddos -k  数量(默认150)

测试

# 查看web服务器iptables策略
[root@web ddos]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        

#使用ab命令模拟DDoS攻击
[root@DDoS ~]# ab -n 1000 -c 10 http://192.168.94.11/index.html 

# 等一分钟查看web服务器查看iptables策略
[root@web ddos]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  192.168.94.111       0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@web ddos]#
若果不想使用DDoS deflate怎么办呢?

一键卸载 :

[root@web ddos]# wget http://www.inetbase.com/scripts/ddos/uninstall.ddos
[root@web ddos]# chmod +x uninstall.ddos 
[root@web ddos]# ./uninstall.ddos 

Uninstalling DOS-Deflate


Deleting script files.........done

Deleting cron job.......done

Uninstall Complete

虽然说DDoS deflate的计划任务是系统级别的,黑客一样有办法去篡改一个系统级别的计划任务,可能我们也看不出动了什么手脚 ,  定期检查的时候看着还是跟往常一样,忽然某一天被DDoS攻击了还不知道怎么回事,所以 , 我们还是先下手为强

[root@web ~]# find /etc/cron* -type f -exec md5sum {} \; > /usr/share/cronfile_md5
# 可以使用md5加密 , 因为md5加密算法是不可逆的 , 文件只要被改动过就能看得出来
[root@web share]# cat cronfile_md5 
1638f7fe39f7f52c412e1705a0bc52d1  /etc/cron.d/0hourly
367636170f3ac44df6a117e3cbf7e4ba  /etc/cron.d/raid-check
a51a35325c37a1cc0ed00f8638a06b96  /etc/cron.d/ddos.cron
6e10e35911b4ba4e2dff44613b56676f  /etc/cron.daily/logrotate
16e73be8fe46a83f7525b59f921e9bab  /etc/cron.daily/man-db.cron
d41d8cd98f00b204e9800998ecf8427e  /etc/cron.deny
8675eb4a3dba8e20bd6b82c626304556  /etc/cron.hourly/0anacron
c39252b11aad842fcb75e05c6a27eef8  /etc/crontab
[root@web share]# md5sum -c cronfile_md5     # 校验文件信息
/etc/cron.d/0hourly: 确定
/etc/cron.d/raid-check: 确定
/etc/cron.d/ddos.cron: 确定
/etc/cron.daily/logrotate: 确定
/etc/cron.daily/man-db.cron: 确定
/etc/cron.deny: 确定
/etc/cron.hourly/0anacron: 确定
/etc/crontab: 确定
[root@web share]# echo " " >> /etc/cron.d/ddos.cron     # 加一个空格进去
[root@web share]# md5sum -c cronfile_md5 
/etc/cron.d/0hourly: 确定
/etc/cron.d/raid-check: 确定
/etc/cron.d/ddos.cron: 失败    # 验证失败
/etc/cron.daily/logrotate: 确定
/etc/cron.daily/man-db.cron: 确定
/etc/cron.deny: 确定
/etc/cron.hourly/0anacron: 确定
/etc/crontab: 确定
md5sum: 警告:1 个校验和不匹配

这样定期检查的时候就可以发现系统级别的计划任务是否被篡改

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: