Linux被DDos/CC攻击解决方案

      Linux被DDos/CC攻击解决方案无评论

  0x00 背景

  2015年8月10日,团队服务器遭遇不明黑客DDOS导致服务器脱机。

  服务器恢复正常之后,本怕砩辖⒘艘惶子Χ方案

  0x01 解决方案&思路

  进入Linux服务器后,利用tcpdump抓包工具进行检测80端口的ip连接详情。tcpdump命令如下:

  tcpdump i eth0 tnn dst port 80 c 100 | awk F”.” ‘{print $1″.”$2″.”$3″.”$4}’ | sort | uniq -c | sort -nr |head -20

  (PS:Port 80为抓取模板端口为80的数据包,100为抓取数据包的数量。更多关于tcpdump的详细用法请点击文章末尾处的传送门。)

  输入命令之后,稍等一会我们便可以看到如下数据:

  Last login: Tue Aug 11 13:59:02 2015 from 113.86.241.98

  [root@VM_204_133_centos ~]# tcpdump -i eth0 -tnn dst port 80 -c 100 | awk -F”.” ‘{print $1″.”$2″.”$3″.”$4}’ | sort | uniq -c | sort -nr |head -20

  tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

  listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

  100 packets captured

  100 packets received by filter

  0 packets dropped by kernel

  82 IP 10.204.2**.1**

  8 IP 66.249.75.73

  6 IP 113.86.241.98

  4 IP 42.227.206.84

  [root@VM_204_133_centos ~]#

  由上可看出ip66.249.75.73的packets最多,所以可判定这是攻击源ip,但一般packets为100+的ip才可判为攻击源ip,但这里为什么我要判定这个ip为攻击源呢?(PS:10.204.2**.1**为服务器内网ip,所以忽略不计。由于该文章是在攻击后的第二天写的,早在前一天已经做好防御处理,所以这里我们看到的数据有所出入。此文只做演示!)

  答:理由如下:

  1.该ip是来自于美国的ip(PS:可把每个连接的ip都去网站查询一次,看看地区是哪里的。)

  2.该ip的packets都大于其他ip的packets

  完成上面的操作后,将packets过多的IP记录下来,用iptabels封禁。iptabels封禁命令如下:

  iptables -I INPUT -s 66.249.75.0/24 -j DROP

  (PS:/24为c段,即封禁IP66.249.75.0~66.249.75.249)

  完成上面的操作后,我们还要把iptabels规则保存,命令如下:

  service iptables save

  接下来再重启iptabels,命令如下:

  service iptables restart

  这一步建议多进行几次,发现异常IP用上面的办法封禁。如果出现误封可以参考下面这行解封命令进行解封。

  iptables -D INPUT -s 66.249.75.0/24 -j DROP

  0x02 常用命令

  封单个IP的命令是:

  iptables -I INPUT -s 211.1.0.0 -j DROP

  封IP段的命令是:

  iptables -I INPUT -s 211.1.0.0/16 -j DROP

  iptables -I INPUT -s 211.2.0.0/16 -j DROP

  iptables -I INPUT -s 211.3.0.0/16 -j DROP

  封整个B段的命令是:

  iptables -I INPUT -s 211.0.0.0/8 -j DROP

  封几个段的命令是:

  iptables -I INPUT -s 61.37.80.0/24 -j DROP

  iptables -I INPUT -s 61.37.81.0/24 -j DROP

  0x03 后续

  进行了上面的操作之后,客户的网站正常了,几乎秒开,当然这和他的vps给力也有一定的关系。top了一下,服务器资源也正常了。

  传送门:

  tcpdump用法详解

  iptabels使用方法

  补充篇:

  0x00 LinuxDDOS防御工具-DDoS deflate

  DDoS deflate其实是一个Shell脚本,使用netstat和iptables工具,对那些链接数过多的IP进行封锁,能有效防止通用的恶意扫描器,但它并不是真正有效的DDoS防御工具。

  工作过程描述:

  同一个IP链接到服务器的连接数到达设置的伐值后,所有超过伐值的IP将被屏蔽,同时把屏蔽的IP写入ignore.ip.list文件中,与此同时会在tmp中生成一个脚本文件,这个脚本文件马上被执行,但是一运行就遇到sleep 预设的秒,当睡眠了这么多的时间后,解除被屏蔽的IP,同时把之前写入ignore.ip.list文件中的这个被封锁的IP删除,然后删除临时生成的文件。

  一个事实:如果被屏蔽的IP手工解屏蔽,那么如果这个IP继续产生攻击,那么脚本将不会再次屏蔽它(因为加入到了ignore.ip.list),直到在预设的时间之后才能起作用,加入到了ignore.ip.list中的IP是检测的时候忽略的IP。可以把IP写入到这个文件以避免这些IP被堵塞,已经堵塞了的IP也会加入到ignore.ip.list中,但堵塞了预定时间后会从它之中删除。

  0x01 安装DDoS deflate

  安装:

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

  chmod 0700 install.sh #赋予install.sh权限

  ./install.sh

  卸载:

  wget http://www.inetbase.com/scripts/ddos/uninstall.ddos

  chmod 0700 uninstall.ddos

  ./uninstall.ddos

  安装完成后在/usr/local/ddos目录下产生了ddos.conf、ddos.sh、ignore.ip.list和LICENSE这四个文件,ddos.conf是配置文件,ddos.sh是一个Shell文件,ignore.ip.list是存放忽略IP的文件,LICENSE是版权声明文件,安装完成后还在/etc/cron.d/下生产了ddos.cron文件,内容如下:

  SHELL=/bin/sh

  0-59/1 * * * * root /usr/local/ddos/ddos.sh >/dev/null 2>&1

  意思是每隔一分钟执行一下/usr/local/ddos/ddos.sh

  这个cron任务是依赖ddos.conf文件中的NO_OF_CONNECTIONS变量产生的,如果修改了此值,可以通过运行如下命令更新(实际也是在安装是运行了如下命令):

  /usr/local/ddos/ddos.sh -c 或 /usr/local/ddos/ddos.sh Ccron

  以下主要针对ddos.conf进行分析:

  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” 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

  # 设置检测时间间隔,默认是分钟,由于系统使用crontab功能,最小单位是分钟

  FREQ=1 ##### How many connections define a bad IP? Indicate that below. # NO_OF_CONNECTIONS

  默认是150,这是一个经验值,如果服务器性能比较高,可以设置200以上,以避免误杀 NO_OF_CONNECTIONS=150

  #####

发表评论