今天要说的就是一款能够自动屏蔽DDOS***者IP的软件:DDoS deflate。

公司新的系统上线在即,防止别人***是一件令人头疼的事情。程序上的问题由开发的人员去处理,作为系统管理人员服务器的安全和可用是要考虑的,ddos的工具是首要必须考虑防御的。于是考虑使用ddos deflate这个开源软件。

DDoS deflate是一款免费的用来防御和减轻DDoS***的脚本。它通过netstat监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限 制时,该程序会通过APF或IPTABLES禁止或阻挡这些IP。.

DDoS deflate官方网站:http://deflate.medialayer.com/

如何确认是否受到DDOS***?

执行:

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

执行后,将会显示服务器上所有的每个IP多少个连接数。每个IP几个、十几个或几十个连接数都还算比较正常,如果像上面成百上千肯定就不正常了

1、安装DDoS deflate

wget http://www.inetbase.com/scripts/ddos/install.sh //下载DDoS deflate

chmod 0700 install.sh //添加权限

./install.sh //执行

2、配置DDoS deflate

下面是DDoS deflate的默认配置位于/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被屏蔽时给指定邮箱发送邮件,推荐使用,换成自己的邮箱即可

##### Number of seconds the banned ip should remain in blacklist.

BAN_PERIOD=600 //禁用IP时间,默认600秒,可根据情况调整

如果/usr/local/ddos/ddos.sh 统计不正确,可能是启用ipv6的缘故

# vi /usr/local/ddos/ddos.sh

117行的内容是这样的netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr > $BAD_IP_LIST

如果服务器启用了IPv6的话,可能会导致统计的结果不准确,修改这一行可以修正这个问题。

需要修改成这样

netstat -ntu|awk '{print $5}'|cut -d : -f1|sed -n '/[0-9]/p'|sort|uniq -c|sort -nr& > $BAD_IP_LIST

或者

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

-------------------------------------------------------------------------------------------

或是设置iptables脚本的方法

vi /usr/src/iptables-ddos.sh

echo "/bin/sh /usr/src/iptables-ddos.sh" >> /etc/rc.local

脚本如下:

#!/bin/bash

modprobe ipt_recent ip_list_hash_size=0 ip_list_tot=16384 ip_pkt_list_tot=200

iptables -F SYN_FLOODING

iptables -X SYN_FLOODING

iptables -N SYN_FLOODING

iptables -t filter -F

iptables -A INPUT -i eth0 -m state --state INVALID -j DROP

iptables -A INPUT -p all -m state --state ESTABLISHE,RELATED -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --syn -m multiport --dports 80,443 -m limit --limit 1/m --limit-burst 300 -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --syn -m multiport --dports 80,443 -j SYN_FLOODING

iptables -A SYN_FLOODING -i eth0 -p tcp --syn -m multiport --dports 80,443 -m recent --name SYN_FLOOD --update --second 120 --hitcount 1 -j  ACCEPT

iptables -A SYN_FLOODING -i eth0 -p tcp --syn -m multiport --dports 80,443 -m recent --name SYN_FLOOD --set

iptables -A SYN_FLOODING -i eth0 -p tcp --syn -m multiport --dports 80,443 -j DROP

#linux DDOS

echo 2 > /proc/sys/net/ipv4/tcp_syn_retries

echo 2 > /proc/sys/net/ipv4/tcp_synack_retries

echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog

echo 1 > /proc/sys/net/ipv4/tcp_syncookies

#禁止连续ping

iptables -A INPUT -p icmp --icmp-type 8 -m recent --name icmp_db --update --second 60 --hitcount 6 -j DROP

iptables -A INPUT -p icmp --icmp-type 8 -m recent --name icmp_db --set

#防止扫描端口(包含过滤连续ping功能,所以禁止ping要放在前面)

iptables -A INPUT -p all -m state --state NEW -m recent --name port_scan --update --seconds 1800 --hitcount 10 -j DROP

iptables -A INPUT -p tcp --syn -m state --state NEW -m multiport --dports 22122,80,7777,1723 -j ACCEPT

iptables -A INPUT -p all -m recent --name port_scan --set

# ip 欺骗防护

iptables -A INPUT -i ! lo -s 127.0.0.0/8 -j DROP

iptables -A INPUT -p all -s 10.254.0.0/24 -j ACCEPT

iptables -A INPUT -p all -s 10.0.0.0/8 -j DROP

iptables -A INPUT -p all -s 172.16.0.0/12 -j DROP

iptables -A INPUT -p all -s 192.168.0.0/16 -j DROP

iptables -A INPUT -p ! udp -s 224.0.0.0/4 -j DROP

for i in /proc/sys/net/ipv4/conf/*/rp_filter; do

echo 1 > $i

done

参考链接:http://sookk8.blog.51cto.com/455855/530589/  http://www.jb51.net/hack/41543.html

转载于:https://blog.51cto.com/asaderas/1665162

Linux下防御/减轻DDOS***的方法相关推荐

  1. DDoS deflate - Linux下防御/减轻DDOS攻击

    前言 互联网如同现实社会一样充满钩心斗角,网站被DDOS也成为站长最头疼的事.在没有硬防的情况下,寻找软件代替是最直接的方法,比如用iptables,但是iptables不能在自动屏蔽,只能手动屏蔽. ...

  2. linux arp攻击教程,Linux下防御arp攻击的方法

    Linux下防御arp攻击的方法 发布时间:2008-09-08 17:09:19   作者:佚名   我要评论 1.获取同一网段下所有机器MAC地址的办法 机房有机器中毒,发arp包,通过arpsp ...

  3. DDoSdeflate-Linux下防御/减轻DDOS攻击

    前言 互联网如同现实社会一样充满钩心斗角,网站被DDOS也成为站长最头疼的事.在没有硬防的情况下,寻找软件代替是最直接的方法,比如用iptables,但是iptables不能在自动屏蔽,只能手动屏蔽. ...

  4. Linux下防御ddos攻击

    1.Linux下防御ddos攻击 导读 Linux服务器在运营过程中可能会受到黑客攻击,常见的攻击方式有SYN,DDOS等.通过更换IP,查找被攻击的站点可能避开攻击,但是中断服务的时间比较长.比较彻 ...

  5. linux 服务器 iptables 防止arp病毒,Linux下防御ARP病毒攻击

    Linux下防御ARP病毒攻击的类似文章网络上太多了,但效果各有千秋,这里写下我自己的心得. 方法一: 此法比较简单,简言之就是绑定网关的IP和MAC,命令如下: $ sudo arp -s 192. ...

  6. linux oracle 用户创建,LINUX下Oracle数据库用户创建方法详解

    本文实例分析了LINUX下Oracle数据库用户创建方法.分享给大家供大家参考,具体如下: 1)登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切 ...

  7. linux mysql 编码修改,Linux下修改MySQL编码的方法

    这篇文章主要为大家详细介绍了Linux下修改MySQL编码的方法,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编小韵来看看吧! 默认登录mysql之后可以通过SH ...

  8. linux下svn重新定位的方法

    linux下重新定位SVN URL方法: 如果更换了SVN服务器,就需要重新定位,指向新的SVN URL. 重新定位命令:svn switch --relocate 原svn地址 新svn地址 如何查 ...

  9. Linux下的find的使用方法

    Linux下的find的使用方法 一.通过文件修改时间查询 1.查找5分钟前的文件 二.通过文件权限查找 1.创建不同权限文件夹 2.查找其他人有写的文件夹 3.查找拥有人.拥有组.其他人都有写权限文 ...

最新文章

  1. DevExpress 11.1.6 重编译详细过程
  2. uboot启动流程概述_uboot 分析之 启动流程
  3. Android之AsyncTask异步任务详解总结
  4. ftp服务器PDF文件在线查看
  5. FPGA设计经验谈 —— 10年FPGA开发经验的工程师肺腑之言
  6. [Manifest]关于version
  7. 比较好用的二进制文件编辑与比较软件
  8. 【Research】Audit审计
  9. imageJ下载 安装插件
  10. 建站之星网站 和服务器,建站之星网站 和服务器
  11. Vmware Fusion
  12. TI公司电话面试 ---- 问题回忆录 2012年8月20
  13. 你想通过创业赚取人生中的第一桶金
  14. DNS域名解析错误解决
  15. vmware启动虚拟机报“内部错误”的解决方法
  16. 编程入门:零基础想要学好C/C++编程?那你一定要看看这五个步骤!
  17. MYSQL:时间粒度(每30s、每1分钟、每5分钟、每1小时、每1周、每1月、每1季度、每1年)
  18. Qt扫盲-QList使用总结
  19. python+vue+elementui在线打印系统
  20. 如何学习一门新的编程语言

热门文章

  1. linux端口监听命令
  2. 在Windows上使用终端模拟程序连接操作Linux以及上传下载文件
  3. C语言经典例96-计算字符串中子串出现的次数
  4. 【Linux 内核】进程管理 ( 进程特殊形式 | 内核线程 | 用户线程 | C 标准库与 Linux 内核中进程相关概念 | Linux 查看进程命令及输出字段解析 )
  5. 【SeeMusic】购买付费版本 ( 进入购买页面 | 购买流程 )
  6. 【组合数学】指数生成函数 ( 证明指数生成函数求解多重集排列 )
  7. 【运筹学】线性规划 人工变量法 ( 人工变量法案例 | 第一次迭代 | 中心元变换 | 检验数计算 | 选择入基变量 | 选择出基变量 )
  8. 课堂测试-找英语单词最长链
  9. dos模式下切换电脑用户
  10. MODEL COMPRESSION VIA DISTILLATION AND QUANTIZATION 论文笔记