物流信息平台网站建设,自在源码网,主题餐厅装修设计公司,wordpress 注册密码DDOS的全称是Distributed Denial of Service#xff0c;即分布式拒绝服务攻击#xff0c;是指击者利用大量“肉鸡”对攻击目标发动大量的正常或非正常请求、耗尽目标主机资源或网络资源#xff0c;从而使被攻击的主机不能为合法用户提供服务。 DDOS攻击的本质是… DDOS的全称是Distributed Denial of Service即分布式拒绝服务攻击是指击者利用大量“肉鸡”对攻击目标发动大量的正常或非正常请求、耗尽目标主机资源或网络资源从而使被攻击的主机不能为合法用户提供服务。 DDOS攻击的本质是利用木桶原理寻找利用系统应用的瓶颈阻塞和耗尽当前问题用户的带宽小于攻击的规模噪声访问带宽成为木桶的短板。 可以参考下面的例子理解下DDOS攻击。1某饭店可以容纳100人同时就餐某日有个商家恶意竞争雇佣了200人来这个饭店坐着不吃不喝导致饭店满满当当无法正常营业。DDOS攻击成功2老板当即大怒派人把不吃不喝影响正常营业的人全都轰了出去且不再让他们进来捣乱饭店恢复了正常营业。添加规则和黑名单进行DDOS防御防御成功3主动攻击的商家心存不满这次请了五千人逐批次来捣乱导致该饭店再次无法正常营业。增加DDOS流量改变攻击方式4饭店把那些捣乱的人轰出去只后另一批接踵而来。此时老板将饭店营业规模扩大该饭店可同时容纳1万人就餐5000人同时来捣乱饭店营业也不会受到影响。增加硬防与其抗衡 DDOS攻击只不过是一个概称其下有各种攻击方式比如:CC攻击、SYN攻击、NTP攻击、TCP攻击、DNS攻击等等现在DDOS发展变得越来越可怕NTP服务放大攻击渐渐成为主流了这意味着可以将每秒的攻击流量放大几百倍比如每秒1G的SYN碎片攻击换成NTP放大攻击就成为了200G或者更多。--------------------------------------------------顺便介绍下NTP服务放大攻击-------------------------------------------------------- 什么事NTP服务
网络时间协议NTPNetwork Time Protocol是用于互联网中时间同步的标准互联网协议。NTP服务器通过NTP服务向网络上的计算机或其他设备提供标准的授时服务以保证这些服务系统的时钟能够同步。通常NTP服务使用UDP 123端口提供标准服务。什么是NTP服务放大攻击
标准NTP 服务提供了一个 monlist查询功能也被称为MON_GETLIST该功能主要用于监控 NTP 服务器的服务状况当用户端向NTP服务提交monlist查询时NTP 服务器会向查询端返回与NTP 服务器进行过时间同步的最后 600 个客户端的 IP响应包按照每 6 个 IP 进行分割最多有 100 个响应包。由于NTP服务使用UDP协议攻击者可以伪造源发地址向NTP服务进行monlist查询这将导致NTP服务器向被伪造的目标发送大量的UDP数据包理论上这种恶意导向的攻击流量可以放大到伪造查询流量的100倍。NTP是用UDP传输的所以可以伪造源地址。NTP协议中有一类查询指令用短小的指令即可令服务器返回很长的信息放大攻击就是基于这类指令的。
比如
小明以吴一帆的名义问李雷我们班有哪些人 ,李雷就回答吴一帆说有谁谁谁和谁谁谁……”(几百字),那么小明就以8个字的成本令吴一帆收到了几百字的信息所以叫做放大攻击。
(也就是说对方服务器是个话唠你以小明的身份问他一个问题他回答小明一千句结果小明崩溃了网络上一般NTP服务器都有很大的带宽攻击者可能只需要1Mbps的上传带宽欺骗NTP服务器即可给目标服务器带来几百上千Mbps的攻击流量达到借刀杀人的效果。
所以现在新的ntpd已经可以通过配置文件关掉除时间同步以外的查询功能。而时间同步的查询和返回大小相同(没记错的话)所以没办法用作放大攻击。如何查看是否遭受NTP放大攻击
如果网络上检测到大流量的UDP 123端口的数据就可以确认正在遭受此类攻击。如何防范NTP放大攻击
1)升级服务程序版本
将系统中的NTP服务升级到 ntpd 4.2.7p26 或之后的版本因为 ntpd 4.2.7p26 版本后服务默认是关闭monlist查询功能的。2)关闭服务的monlist查询功能
首先查询问题主机的REQ_MON_GETLIST和REQ_MON_GETLIST_1请求是否可用。具体操作方法# ntpq -c rvlocalhost/remotehost# ntpdc -c sysinfolocalhost/remotehost# ntpdc -n -c monlistlocalhost/remotehost如果上述功能可用可尝试通过修改ntp.conf文件解决问题具体操作建议是在上述配置文件中增加下面的配置IPV4: restrict default kod nomodify notrap nopeer noqueryIPv6: restrict -6 default kod nomodify notrap nopeer noquery允许发起时间同步的IP与本服务器进行时间同步但是不允许修改ntp服务信息也不允许查询服务器的状态信息如monlist*/另外还可以配置限制访问命令如restrict default noquery #允许普通的请求者进行时间同步但是不允许查询ntp服务信息*/修改并保存配置文件之后请重启ntpd服务。 -----------------------------------------------------------------------------------------------------------------------------------近年来一些重大的DDOS攻击案例 12000年2月包括雅虎、CNN、亚马逊、eBay、http://Buy.com、ZDNet以及E*Trade和Datek等网站均遭受到了DDOS攻击并致使部分网站瘫痪。
22007年5月爱沙尼亚三周内遭遇三轮DDOS攻击,总统府、议会、几乎全部政府部门、主要政党、主要媒体和2家大银行和通讯公司的网站均陷入瘫痪为此北约顶级反网络恐怖主义专家前往该国救援。
32009年519断网事件导致南方六省运营商服务器全部崩溃电信在南方六省的网络基本瘫痪。2009年7月韩国主要网站三天内遭遇三轮猛烈的DDOS攻击韩国宣布提前成立网络司令部。
4比较著名的案例还有有全球三大游戏平台暴雪战网、Valve Steam和EA Origin遭到大规模DDoS攻击致使大批玩家无法登录与进行游戏。随后名为DERP的黑客组织声称对此次大规模的DDoS攻击行动负责。对于DDOS攻击的简单防护措施 1关闭不必要的服务和端口
2限制同一时间内打开的syn半连接数目
3缩短syn半连接的超时时间
4及时安装系统补丁
5禁止对主机非开放服务的访问
6启用防火墙防DDOS属性。硬件防火墙价格比较昂贵可以考虑利用Linux系统本身提供的防火墙功能来防御。
7另外也可以安装相应的防护软件这里强烈建议安装安全狗软件,防护性能不错并且免费。
8购买DDOS防御产品比如阿里云盾的DDOS防御中的高防IP这个使用起来效果也很给力。接下来说下Linux系统下预防DDOS攻击的操作 Linux服务器在运行过程中可能会受到黑客攻击常见的攻击方式有SYNDDOS等。
通过更换IP查找被攻击的站点可能避开攻击但是中断服务的时间比较长。比较彻底的解决方法是添置硬件防火墙但是硬件防火墙价格比较昂贵。可以考虑利用Linux系统本身提供的防火墙功能来防御。
SYN攻击是利用TCP/IP协议3次握手的原理发送大量的建立连接的网络包但不实际建立连接最终导致被攻击服务器的网络队列被占满无法被正常用户访问。
Linux内核提供了若干SYN相关的配置加大SYN队列长度可以容纳更多等待连接的网络连接数打开SYN Cookie功能可以阻止部分SYN攻击降低重试次数也有一定效果。
而DDOS则是通过使网络过载来干扰甚至阻断正常的网络通讯通过向服务器提交大量请求使服务器超负荷阻断某一用户访问服务器阻断某服务与特定系统或个人的通讯。可以通过配置防火墙或者使用脚本工具来防范DDOS攻击 1优化几个sysctl内核参数 [roottest3-237 ~]# vim /etc/sysctl.conf
......
net.ipv4.tcp_max_syn_backlog 4096 #表示SYN队列的长度加大队列长度可以容纳更多等待连接的网络连接数
net.ipv4.tcp_syncookies 1 #表示开启SYN Cookies功能。当出现SYN等待队列溢出时启用cookies来处理可防范少量SYN攻击默认为0表示关闭1表示打开
net.ipv4.tcp_synack_retries 2 #下面这两行表示定义SYN重试次数
net.ipv4.tcp_syn_retries 2 #提高TCP连接能力
net.ipv4.tcp_rmem 32768
net.ipv4.tcp_wmem 32768
net.ipv4.tcp_sack 0 #打开tcp_sack功能1表示关闭0表示打开......[roottest3-237 ~]# sysctl -p #使上面配置生效2利用linux系统自带iptables防火墙进行预防 先查看服务器上连接web端口比如80端口的哪个ip是最多的如果发现可疑ip就果断将其断开与服务器连接查看80端口的连接情况
[roottest3-237 ~]# netstat -an | grep :80 | grep ESTABLISHED 下面的命令表示获取服务器上ESTABLISHED连接数最多的前10个ip排除了内部ip段192.168|127.0开头的。
[roottest3-237 ~]# /bin/netstat -na|grep ESTABLISHED|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -rn|head -10|grep -v -E 192.168|127.04001 140.205.140.2052388 124.65.197.1541807 111.205.224.1518 10.51.58.16.......将上面140.205.140.205、124.65.197.154、111.205.224.15的这三个ip的包丢弃
[roottest3-237 ~]# iptables -A INPUT -s 140.205.140.205 -p tcp -j DROP
[roottest3-237 ~]# iptables -A INPUT -s 124.65.197.154 -p tcp -j DROP
[roottest3-237 ~]# iptables -A INPUT -s 111.205.224.15 -p tcp -j DROP
[roottest3-237 ~]# service iptables save
[roottest3-237 ~]# service iptables restart不过上面的方法对于伪造源IP地址的SYN FLOOD攻击就无效了-------------------------------------其他预防攻击的设置-------------------------------------
防止同步包洪水Sync Flood缩短SYN-Timeout时间
[roottest3-237 ~]# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
[roottest3-237 ~]# iptables -A INPUT -i eth0 -m limit --limit 1/sec --limit-burst 5 -j ACCEPT其中
--limit 1/s 限制syn并发数每秒1次可以根据自己的需要修改防止各种端口扫描
[roottest3-237 ~]# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT Ping洪水攻击Ping of Death
[roottest3-237 ~]# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT 控制单个IP的最大并发连接数。
如下设置表示允许单个IP的最大连接数为 30
[roottest3-237 ~]# iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j REJECT控制单个IP在一定的时间比如60秒内允许新建立的连接数。
如下设置表示单个IP在60秒内只允许最多新建30个连接
[roottest3-237 ~]# iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --update --seconds 60 --hitcount 30 -j REJECT
[roottest3-237 ~]# iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --set -j ACCEPT
---------------------------------------------------------------------------------------------------
如果出现报错
iptables: Invalid argument. Run dmesg for more information.解决办法
增加 xt_recent模块的参数值即可默认是20
[roottest3-237 ~]# cat /sys/module/xt_recent/parameters/ip_pkt_list_tot
20
[roottest3-237 ~]# echo 50 /sys/module/xt_recent/parameters/ip_pkt_list_tot
[roottest3-237 ~]# cat /sys/module/xt_recent/parameters/ip_pkt_list_tot
50
---------------------------------------------------------------------------------------------------禁止ping即禁止从外部ping这台服务器
[roottest3-237 ~]# echo 1 /proc/sys/net/ipv4/icmp_echo_ignore_all用iptables屏蔽IP如下禁止213.8.166.237连接本机的80端口
[roottest3-237 ~]# iptables -A INPUT -s 213.8.166.227 -p tcp -m tcp -m state --state NEW --dport 80 --syn -j REJECT 允许某ip连接如下允许13.78.66.27连接本机的80端口
[roottest3-237 ~]# iptables -A INPUT -s 13.78.66.27 -p tcp -m tcp -m state --state NEW --dport 80 --syn -j ACCEPT 3使用DDoS deflate脚本自动屏蔽攻击ip DDoS deflate是一款免费的用来防御和减轻DDoS攻击的脚本。它通过netstat监测跟踪创建大量网络连接的IP地址在检测到某个结点超过预设的限制时该程序会通过APF或IPTABLES禁止或阻挡这些IP.
DDoS deflate其实是一个Shell脚本使用netstat和iptables工具对那些链接数过多的IP进行封锁能有效防止通用的恶意扫描器但它并不是真正有效的DDoS防御工具。DDoS deflate工作过程描述
同一个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中但堵塞了预定时间后会从它之中删除。如何确认是否受到DDOS攻击
[roottest3-237 ~]# netstat -ntu | awk {print $5} | cut -d: -f1 | sort | uniq -c | sort -n1 Address1 servers)2 103.10.86.54 117.36.231.2534 19.62.46.246 29.140.22.188 220.181.161.131 2911 167.215.42.88每个IP几个、十几个或几十个连接数都还算比较正常如果像上面成百上千肯定就不正常了。比如上面的167.215.42.88这个ip的连接有2911个这个看起来就很像是被攻击了下面就说下通过DDoS deflate脚本来自动屏蔽DDOS攻击的ip
1下载DDoS deflate安装脚本并执行安装。
[roottest3-237 ~]# wget http://www.inetbase.com/scripts/ddos/install.sh
[roottest3-237 ~]# chmod 0700 install.sh
[roottest3-237 ~]# ./install.sh--------------------------------------------------------------------------
卸载DDos default的操作如下
# wget http://www.inetbase.com/scripts/ddos/uninstall.ddos
# chmod 0700 uninstall.ddos
# ./uninstall.ddos
--------------------------------------------------------------------------2配置DDoS deflate下面是DDoS deflate的默认配置位于/usr/local/ddos/ddos.conf 内容如下
[roottest3-237 ~]# cat /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
FREQ1 //检查时间间隔默认1分钟。设置检测时间间隔默认是分钟由于系统使用crontab功能最小单位是分钟##### How many connections define a bad IP? Indicate that below.
NO_OF_CONNECTIONS150 //最大连接数超过这个数IP就会被屏蔽一般默认即可。默认是150这是一个经验值如果服务器性能比较高可以设置200以上以避免误杀##### APF_BAN1 (Make sure your APF version is atleast 0.96)
##### APF_BAN0 (Uses iptables for banning ips instead of APF)
APF_BAN0 //使用APF还是iptables屏蔽IP。推荐使用iptables,将APF_BAN的值改为0即可。设置为1表示使用APF如果使用APF则需要先安装centos中默认就没有安装##### KILL0 (Bad IPs arent banned, good for interactive execution of script)
##### KILL1 (Recommended setting)
KILL1 //是否屏蔽IP默认即可 ##### An email is sent to the following address when an IP is banned.
##### Blank would suppress sending of mails
EMAIL_TOroot //当IP被屏蔽时给指定邮箱发送邮件推荐使用换成自己的邮箱即可。如果不希望发送邮件设置为空即EMAIL_TO##### Number of seconds the banned ip should remain in blacklist.
BAN_PERIOD600 //禁用IP时间锁定ip的时间默认600秒可根据情况调整 需要注意的是
DDos default安装完成后在/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文件内容如下[roottest3-237 ~]# cat /etc/cron.d/ddos.cron
SHELL/bin/sh
0-59/1 * * * * root /usr/local/ddos/ddos.sh /dev/null 21意思是每隔一分钟执行一下/usr/local/ddos/ddos.sh这个脚本是关键
这个cron任务是依赖ddos.conf文件中的NO_OF_CONNECTIONS变量产生的如果修改了此值可以通过运行如下命令更新实际也是在安装是运行了如下命令
[roottest3-237 ~]# /usr/local/ddos/ddos.sh -c
Stopping crond: [ OK ]
Starting crond: [ OK ]
Stopping crond: [ OK ]
Starting crond: [ OK ]或者
[roottest3-237 ~]# /usr/local/ddos/ddos.sh --cron
Stopping crond: [ OK ]
Starting crond: [ OK ]
Stopping crond: [ OK ]
Starting crond: [ OK ]3DDos default选项
# /usr/local/ddos/ddos.sh -h #查看选项
# /usr/local/ddos/ddos.sh -k n #杀掉连接数大于n的连接。n默认为配置文件的NO_OF_CONNECTIONS 比如[roottest3-237 ~]# /usr/local/ddos/ddos.sh -k 1502 103.110.186.751 servers)1 Address
# /usr/local/ddos/ddos.sh -c #按照配置文件创建一个执行计划。使得ddos.conf文件配置后生效4分享一个防御DDOS攻击的shell脚本 Linux服务器中一旦受到DDOS的攻击比如IDC机房服务器被攻击了关机拔网线降流量目前只能通过封IP来源来暂时解决。
然而IP来源变化多端光靠手工来添加简直是恶梦所以还是想办法写个shell脚本来定时处理这才是比较靠谱的办法。[roottest3-237 ~]# mkdir /root/bin
[roottest1-237 ~]# cat /root/bin/dropip.sh //此脚本自动提取攻击ip然后自动屏蔽
#!/bin/bash
/bin/netstat -na|grep ESTABLISHED|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -rn|head -10|grep -v -E 192.168|127.0|awk {if ($2!null $14) {print $2}}/tmp/dropip
for i in $(cat /tmp/dropip)
do
/sbin/iptables -A INPUT -s $i -j DROP
echo “$i kill at date”/var/log/ddos
done以上脚本中最重要的是第二行即
获取ESTABLISHED连接数最多的前10个ip并写入临时文件/tmp/dropip,排除了内部ip段192.168|127.0开头的.通过for循环将dropip里面的ip通过iptables全部drop掉然后写到日志文件/var/log/ddos。给脚本添加执行权限
[roottest1-237 ~]# chmod x /root/bin/dropip.sh添加到计划任务每分钟执行一次
[roottest1-237 ~]#crontab -e
*/1 * * * * /root/bin/dropip.sh----------------------------------------------------------------------------------------
下面是针对连接数屏蔽IP
#!/bin/sh
/bin/netstat -ant |grep 80 |awk {print $5} |awk -F: {print $1} |sort |uniq -c |sort -rn |grep -v -E 192.168|127.0 |awk {if ($2!null $150)} /root/drop_ip.txt
for i in cat /root/drop_ip.txt
do
/sbin/iptables -I INPUT -s $i -j DROP;
done 5Linux下使用safedog安全狗软件防御DDOS攻击: [roottest3-237 ~]# setenforce 0 //关闭selinux否则不能安装成功
[roottest3-237 ~]# getenforce //永久关闭selinux需要配置/etc/sysconfig/selinux文件并重启机器生效
Permissive安装nginx版安全狗safedog
[roottest3-237 ~]# wget http://safedog.cn/safedogwz_linux_Nginx64.tar.gz
[roottest3-237 ~]# tar -zvxf safedogwz_linux_Nginx64.tar.gz
[roottest3-237 ~]# cd safedogwz_linux_Nginx64
[roottest3-237 safedogwz_linux_Nginx64]# chmod 755 install.py
[rootbastion-IDC safedogwz_linux_Nginx64]# ls
install_files install.py uninstall.py
[roottest3-237 safedogwz_linux_Nginx64]# ./install.py -A //卸载安全狗就用uninstall.py
.......step 3.5, start service... [ok] step 3.6, save safedog install info... [ok] Tips: (1)Run the command to setup Server Defense Module: sdui(2)Explore more features by tapping the command to join Cloud Management Center (fuyun.safedog.cn) with your account: sdcloud -h If you need any help about installation,please tap the command: ./install.py -h
Install Completely!温馨提示
1安装完成后记得一定要重新启动Nginx服务网站安全狗软件即可生效。
2运行时,安装脚本默认将自动获取Nginx服务的安装路径若自动获取失败则将提示输入Nginx服务的安装路径绝对路径需要根据所安装的Nginx的目录填写真实的安装路径。
3当出现提示Are you sure to uninstall?[y/n]时输入y 转载于:https://www.cnblogs.com/kevingrace/p/6756515.html