码迷,mamicode.com
首页 > 其他好文 > 详细

直面ddos

时间:2020-04-08 11:41:13      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:情况   通过   none   报文   cookie   tcp连接   gre   启动服务   tst   

直面ddos

被攻击前的防范

1、买服务

  • CDN,CDN不仅可以实现加速的效果,对于隐藏真实服务器IP也有效果,还能有效防止DDOS攻击。
  • 买高防的服务器
  • 买云平台的攻击流量包

2、买硬件

  • 购买硬件抗DDOS防火墙或流量清洗设备

3、脚本检测联动防火墙

写脚本,脚本内容是分析日志里面对网站访问次数超过限定值的IP的数量,当超过一定的数量,就应当将其加入到防火墙的拒绝列表里面,防火墙的拒绝列表也要定期清空,不能一直攻击某个IP地址,因为可能是这个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 && $1>4) {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

4、提高ssh优先级

  • 服务器应该把ssh的优先级提高,以防止被DDOS攻击时远程连接过慢的问题。

5、iptables应对畸形报文

//基本防护
iptables -P INPUT ACCEPT
iptables -F
iptables -A INPUT -p tcp -m tcp --dport  80 -j ACCEPT
iptables -A INPUT -s 1.1.1.1 -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 2.2.2.2 -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth1 -j  ACCEPT
iptables -A INPUT -i lo -j ACCEPT


iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP 
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP 
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP 
iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP 
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP 
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j DROP 
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP 
iptables -A INPUT -p tcp -m tcp --tcp-flags PSH,ACK PSH -j DROP 
iptables -A INPUT -p tcp -m tcp --tcp-flags ACK,URG URG -j DROP

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP
#防止SYN攻击 轻量级预防 
iptables -N syn-flood 
iptables -A INPUT -p tcp --syn -j syn-flood 
iptables -I syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j RETURN 
iptables -A syn-flood -j REJECT
#防止DOS太多连接进来,可以允许外网网卡每个IP最多15个初始连接,超过的丢弃 
iptables -A INPUT -i eth0 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP 
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

#用Iptables抵御DDOS (参数与上相同)
iptables -A INPUT  -p tcp --syn -m limit --limit 12/s --limit-burst 24 -j ACCEPT
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

6、修改内核参数

通过sysctl和iptables来防范,对sysctl参数进行修改

$ sudo sysctl -a  | grep ipv4 | grep syn
输出类似下面:
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_syn_retries = 5
net.ipv4.tcp_syncookies:是否打开SYN COOKIES的功能,“1”为打开,“2”关闭。
net.ipv4.tcp_max_syn_backlog:SYN队列的长度,加大队列长度可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_synack_retries和net.ipv4.tcp_syn_retries:定义SYN重试次数。
把如下加入到/etc/sysctl.conf即可,之后执行“sysctl -p”!
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
提高TCP连接能力
net.ipv4.tcp_rmem = 32768
net.ipv4.tcp_wmem = 32768
net.ipv4.sack=0  

攻击后的应对

  • 那么当直面DDOS攻击时,运维人员应该应该怎么做呢?如果自己的服务并不是关键的话,建议先将服务关闭,然后运行脚本干掉攻击源IP,然后再启动服务,当然这要建立在SSH服务能立刻登入的情况下。
  • 如果服务器不能关闭,建议换IP,很多机房在遭受DDOS攻击时都会采用换IP的方式。

直面ddos

标签:情况   通过   none   报文   cookie   tcp连接   gre   启动服务   tst   

原文地址:https://www.cnblogs.com/yizhangheka/p/12658777.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!