linux下防御ddos攻击_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
11
每页帖数
101/2页12
返回列表
0
发起投票  发起投票 发新帖子
查看: 7114 | 回复: 10   主题:  linux下防御ddos攻击        上一篇   下一篇 
Irvinna
注册用户
等级:新兵
经验:51
发帖:46
精华:0
注册:2011-8-19
状态:离线
发送短消息息给Irvinna 加好友    发送短消息息给Irvinna 发消息
发表于: IP:您无权察看 2015-11-4 14:38:46 | [全部帖] [楼主帖] 楼主

ddos攻击是一种分布式拒绝服务攻击

原理:通过使网络过载来干扰甚至阻断正常的网络通讯。通过向服务器提交大量请求,使服务器超负荷。阻断某一用户访问服务器阻断某服务与特定系统或个人

的通讯

首先确认服务器是否收到ddos攻击

显示服务器上每个IP多少个连接数,连接数过大的话就有问题了,几个或几十个还好,成百上千就有问题了

# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
# vim /etc/sysctl.conf

加入下面这些

#开启CentOS SYN Cookies,这是个BOOLEAN。当出现CentOS SYN等待队列溢出时,启用cookies来处理,可防范少量CentOS SYN攻击,默认为0,表示关闭

net.ipv4.tcp_syncookies=1


#开启重用,这是个BOOLEAN。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭
net.ipv4.tcp_tw_reuse=1


开启TCP连接中TIME-WAIT sockets的快速回收,这是个BOOLEAN,默认为0,表示关闭
net.ipv4.tcp_tw_recycle=1

#net.ipv4.tcp_synack_retries和net.ipv4.tcp_syn_retries是定义CentOS SYN重试次数。如果你不想修改/etc/sysctl.conf,你也可以直接使用命令修改:

sbin/sysctl -w key=value
net.ipv4.tcp_synack_retries=1
net.ipv4.tcp_syn_retries=1

表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息

net.ipv4.tcp_max_syn_backlog=8000

表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。单位为秒

net.ipv4.tcp_fin_timeout=30
net.ipv4.conf.all.send_redirects=0net.ipv4.conf.all.accept_redirects=0
net.ipv4.tcp_window_scaling=1net.ipv4.icmp_echo_ignore_all=1net.ipv4.icmp_echo_ignore_broadcasts=1


即时生效

sysctl -p




                                                                                                                           --转自


  • 本版精华
  • 热门帖子

  • 赞(0)    操作        顶端 
    k3neeb
    注册用户
    等级:上尉
    经验:799
    发帖:15
    精华:0
    注册:2015-5-28
    状态:离线
    发送短消息息给k3neeb 加好友    发送短消息息给k3neeb 发消息
    发表于: IP:您无权察看 2016-3-17 9:44:12 | [全部帖] [楼主帖] 2  楼

    虚拟主机服务商在运营过程中可能会受到黑客攻击,常见的攻击方式有SYN,DDOS等。通过更换IP,查找被攻击的站点可能避开攻击,但是中断服务的时间比较长。比较彻底的解决方法是添置硬件防火墙。不过,硬件防火墙价格比较昂贵。可以考虑利用Linux 系统本身提供的防火墙功能来防御。SYN攻击是利用TCP/IP协议3次握手的原理,发送大量的建立连接的网络包,但不实际建立连接,最终导致被攻击服务器的网络队列被占满,无法被正常用户访问。 Linux内核提供了若干SYN相关的配置,加大SYN队列长度可以容纳更多等待连接的网络连接数,打开SYN Cookie功能可以阻止部分 SYN攻击,降低重试次数也有一定效果。而DDOS则是通过使网络过载来干扰甚至阻断正常的网络通讯。通过向服务器提交大量请求,使服务器超负荷。阻断某一用户访问服务器阻断某服务与特定系统或个人的通讯。可以通过配置防火墙或者使用脚本工具来防范

    通过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  

    使用iptables
    命令:
    # netstat -an | grep ":80" | grep ESTABLISHED
    来查看哪些IP可疑~比如:221.238.196.83这个ip连接较多,并很可疑,并不希望它再次与221.238.196.81有连接。可使用命令:

    iptables -A INPUT -s 221.238.196.83 -p tcp -j DROP
    将来自221.238.196.83的包丢弃。
    对于伪造源IP地址的SYN FLOOD攻击。该方法无效
    其他参考
    防止同步包洪水(Sync Flood)
    # iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
    也有人写作
    # iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
    --limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改防止各种端口扫描
    # iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
    Ping洪水攻击(Ping of Death)
    # iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

    使用DDoS deflate自动屏蔽攻击ip
    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
    以下是我自己用VPS测试的结果:
    li88-99:~# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
    1 114.226.9.132
    1 174.129.237.157
    1 58.60.118.142
    1 Address
    1 servers)
    2 118.26.131.78
    3 123.125.1.202
    3 220.248.43.119
    4 117.36.231.253
    4 119.162.46.124
    6 219.140.232.128
    8 220.181.61.31    VPS侦探 http://www.vpser.net/
    2311 67.215.242.196      
    #(这个看起来像攻击)
    每个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秒,可根据情况调整
    3、选项
    /usr/local/ddos/ddos.sh -h    //查看选项
    /usr/local/ddos/ddos.sh -k n  //杀掉连接数大于n的连接。n默认为配置文件的NO_OF_CONNECTIONS
    /usr/local/ddos/ddos.sh -c    //按照配置文件创建一个执行计划
    4、卸载

    wget http://www.inetbase.com/scripts/ddos/uninstall.ddos
    chmod 0700 uninstall.ddos
    ./uninstall.ddos
    使用以上方法可以缓解一些攻击。如果服务器是nginx的话可以按照
    1、打开nginx访问日志
    log_format    access    '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" $http_x_forwarded_for';  #设置日志格式
    #access_log  /dev/null;
    access_log    /usr/local/nginx/logs/access.log    access;
    2、观察nginx日志
    more /usr/local/nginx/logs/access.log
    查看哪些ip重复很严重。
    (1)agent的特征

    比如:MSIE 5.01
    配置nginx

    location /{
    if ( $http_user_agent ~* "MSIE 5.01" ) {

    #proxy_pass http://www.google.com;
    return 500;
    #access_log /home/logs/1.log main;
    }
    }
    将ip加入iptable内
    iptables -A INPUT    -s 202.195.62.113 -j DROP
    我发现的 攻击时代理+ddos
    搜索ip均为代理地址。日志最后一部分为真实ip(重复很多)。

    如何查看user_agent
    在地址栏输入:
    javascript:alert(navigator.userAgent)
    回车就会弹出当前使用的浏览器的useragent.

    ps:ie和firefox的user—agent
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"  ( ie6.0)
    Mozilla/4.0 (compatible; MSIE 8.0; ; Trident/4.0; .NET CLR 2.0.50727; CIBA)  (ie8.0)
    Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12
    注意:都含有Windows NT 5.1。
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows 5.1)"(这个应该就是攻击者使用user_agent).



    赞(0)    操作        顶端 
    twany
    注册用户
    等级:少校
    经验:1408
    发帖:17
    精华:0
    注册:2015-6-2
    状态:离线
    发送短消息息给twany 加好友    发送短消息息给twany 发消息
    发表于: IP:您无权察看 2016-3-18 9:23:42 | [全部帖] [楼主帖] 3  楼

    分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。



    赞(0)    操作        顶端 
    jinggege
    注册用户
    等级:中士
    经验:241
    发帖:0
    精华:0
    注册:2016-2-26
    状态:离线
    发送短消息息给jinggege 加好友    发送短消息息给jinggege 发消息
    发表于: IP:您无权察看 2016-3-18 21:26:14 | [全部帖] [楼主帖] 4  楼

      DDOS是DOS攻击中的一种方法。


      DoS:是Denial of Service的简称,即拒绝服务,不是DOS操作系统,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。


      DDOS:分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。


      举一个最通俗的例子,下面的图片是TCP的通信的三次握手,如果说攻击端,发送完第一次握手的数据后,然后就“消失”了,那么服务器就会不断的发送第二次握手的数据,可是攻击端的人找不到了。于是,服务器的资源大量被消耗,直到死机为止。当然要完全弄懂机制,需要对TCP有相当深入的了解。

      事实上DOS的攻击方式有很多种,比如下面的常见的:

      1、SYN FLOOD
      利用服务器的连接缓冲区(Backlog Queue),利用特殊的程序,设置TCP的Header,向服务器端不断地成倍发送只有SYN标志的TCP连接请求。当服务器接收的时候,都认为是没有建立起来的连接请求,于是为这些请求建立会话,排到缓冲区队列中。
      如果你的SYN请求超过了服务器能容纳的限度,缓冲区队列满,那么服务器就不再接收新的请求了。其他合法用户的连接都被拒绝掉。可以持续你的SYN请求发送,直到缓冲区中都是你的只有SYN标记的请求。

      2、IP欺骗DOS攻击
      这种攻击利用RST位来实现。假设现在有一个合法用户(1.1.1.1)已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP为1.1.1.1,并向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后,认为从1.1.1.1发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户1.1.1.1再发送合法数据,服务器就已经没有这样的连接了,该用户就必须从新开始建立连接。
      攻击时,伪造大量的IP地址,向目标发送RST数据,使服务器不对合法用户服务。
      
      3、带宽DOS攻击
      如果你的连接带宽足够大而服务器又不是很大,你可以发送请求,来消耗服务器的缓冲区消耗服务器的带宽。这种攻击就是人多力量大了,配合上SYN一起实施DOS,威力巨大。不过是初级DOS攻击。


      4、自身消耗的DOS攻击
      这是一种老式的攻击手法。说老式,是因为老式的系统有这样的自身BUG。比如Win95 (winsock v1), Cisco IOS v.10.x, 和其他过时的系统。
      这种DOS攻击就是把请求客户端IP和端口弄成主机的IP端口相同,发送给主机。使得主机给自己发送TCP请求和连接。这种主机的漏洞会很快把资源消耗光。直接导致当机。这中伪装对一些身份认证系统还是威胁巨大的。


      上面这些实施DOS攻击的手段最主要的就是构造需要的TCP数据,充分利用TCP协议。这些攻击方法都是建立在TCP基础上的。还有其他的DOS攻击手段。
      
      5、塞满服务器的硬盘
      通常,如果服务器可以没有限制地执行写操作,那么都能成为塞满硬盘造成DOS攻击的途径,比如:
      发送垃圾邮件。一般公司的服务器可能把邮件服务器和WEB服务器都放在一起。破坏者可以发送大量的垃圾邮件,这些邮件可能都塞在一个邮件队列中或者就是坏邮件队列中,直到邮箱被撑破或者把硬盘塞满。
      让日志记录满。入侵者可以构造大量的错误信息发送出来,服务器记录这些错误,可能就造成日志文件非常庞大,甚至会塞满硬盘。同时会让管理员痛苦地面对大量的日志,甚至就不能发现入侵者真正的入侵途径。
      向匿名FTP塞垃圾文件。这样也可以塞满硬盘空间。



    赞(0)    操作        顶端 
    jinggege
    注册用户
    等级:中士
    经验:241
    发帖:0
    精华:0
    注册:2016-2-26
    状态:离线
    发送短消息息给jinggege 加好友    发送短消息息给jinggege 发消息
    发表于: IP:您无权察看 2016-4-25 19:56:54 | [全部帖] [楼主帖] 5  楼

    DdoS攻击是利用一批受控制的机器向一台机器发起攻击,这样来势迅猛的攻击令人难以防备,因此具有较大的破坏性。如果说 以前网络管理员对抗Dos可以采取过滤IP地址方法的话,那么面对当前ddos众多伪造出来的地址则显得没有办法。



    赞(0)    操作        顶端 
    山友木樨
    注册用户
    等级:少校
    经验:1040
    发帖:9
    精华:0
    注册:2015-6-1
    状态:离线
    发送短消息息给山友木樨 加好友    发送短消息息给山友木樨 发消息
    发表于: IP:您无权察看 2016-4-28 8:27:32 | [全部帖] [楼主帖] 6  楼

    厉害



    赞(0)    操作        顶端 
    arcona
    注册用户
    等级:少校
    经验:1100
    发帖:10
    精华:0
    注册:2015-6-1
    状态:离线
    发送短消息息给arcona 加好友    发送短消息息给arcona 发消息
    发表于: IP:您无权察看 2016-5-5 9:20:53 | [全部帖] [楼主帖] 7  楼

    膜拜!



    赞(0)    操作        顶端 
    k3neeb
    注册用户
    等级:上尉
    经验:799
    发帖:15
    精华:0
    注册:2015-5-28
    状态:离线
    发送短消息息给k3neeb 加好友    发送短消息息给k3neeb 发消息
    发表于: IP:您无权察看 2016-5-11 8:56:38 | [全部帖] [楼主帖] 8  楼



    赞(0)    操作        顶端 
    twany
    注册用户
    等级:少校
    经验:1408
    发帖:17
    精华:0
    注册:2015-6-2
    状态:离线
    发送短消息息给twany 加好友    发送短消息息给twany 发消息
    发表于: IP:您无权察看 2016-5-11 11:10:58 | [全部帖] [楼主帖] 9  楼

    好厉害



    赞(0)    操作        顶端 
    ettu
    注册用户
    等级:上尉
    经验:787
    发帖:0
    精华:0
    注册:2016-2-22
    状态:离线
    发送短消息息给ettu 加好友    发送短消息息给ettu 发消息
    发表于: IP:您无权察看 2016-5-11 11:53:43 | [全部帖] [楼主帖] 10  楼

    学习,学习。



    赞(0)    操作        顶端 
    总帖数
    11
    每页帖数
    101/2页12
    返回列表
    发新帖子
    请输入验证码: 点击刷新验证码
    您需要登录后才可以回帖 登录 | 注册
    技术讨论