您现在的位置: 主页 > 嵌入式操作系统 > Linux > Linux被DDos/CC攻击解决方案
本文所属标签:
为本文创立个标签吧:

Linux被DDos/CC攻击解决方案

来源:网络整理 网络用户发布,如有版权联系网管删除 2018-08-12 

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 cron

以下主要针对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

#####



              查看评论 回复



嵌入式交流网主页 > 嵌入式操作系统 > Linux > Linux被DDos/CC攻击解决方案
 文件 命令 服务器

"Linux被DDos/CC攻击解决方案"的相关文章

网站地图

围观()