Syn Attack

Discussion in 'AntiDDos - АнтиДДОС' started by Serzh CS, 25 Dec 2009.

  1. Serzh CS

    Serzh CS New Member

    Joined:
    13 Dec 2009
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Ребят как защититься от Syn Attack на Ubuntu 9.04 ? ;)
     
  2. svesve

    svesve Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11

    в консоле из под рута
    Code:
    #Уменьшаем возможность DoS при уменьшении таймаутов
    echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
    echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
    echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
    echo 0 > /proc/sys/net/ipv4/tcp_sack
    echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog
    
    # Включаем SYN COOKIES
    echo 1 > /proc/sys/net/ipv4/tcp_syncookies
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    
    echo "65535" > /proc/sys/net/ipv4/ip_conntrack_max
    
    через iptables

    Code:
    ### Цепь для сброса (DROP) флуд пакетов SYN-s ######
    /sbin/iptables -N syn-flood
    /sbin/iptables -A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN
    /sbin/iptables -A syn-flood -j LOG --log-prefix "SYN flood: "
    /sbin/iptables -A syn-flood -j DROP
    
     
    2 people like this.
  3. Serzh CS

    Serzh CS New Member

    Joined:
    13 Dec 2009
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    :mad: Атака попрежнему прокатывает ...
    Если даже открыт 80 порт а вебсервера нету то атака всеравно идёт! :mad: :mad: :mad:
     
  4. MAQUEEN

    MAQUEEN RadioActivity

    Joined:
    27 Sep 2008
    Messages:
    422
    Likes Received:
    126
    Reputations:
    32
    Заходим под рут:

    HTML:
    1. cd /root/downloads или другая директория где вы храните файлы. 
     
    2. wget http://www.r-fx.ca/downloads/apf-current.tar.gz
     
    3. tar -xvzf apf-current.tar.gz 
     
    4. cd apf-0.9.3_3/ или какая у вас там версия. 
     
    5. ./install.sh 
    Получите сообщение 
     
    .: APF installed 
    Install path: /etc/apf 
    Config path: /etc/apf/conf.apf 
    Executable path: /usr/local/sbin/apf 
     
    6. Редактируем конфиг: vi /etc/apf/conf.apf 
    Базовые настройки, читайте README  для полных настроек 
     
    Находим: DEVEL_MODE="1" 
    Заменяем на: DEVEL_MODE="0"
    
    Удостоверяемся:
    
    SYSCTL_SYN ="1"
    SYSCTL_SYNCOOKIES="1"
    
     
    7. Настраиваем порты 
     
    Приблизительно:
    (Все это на ваше усмотрение)
     
    Common ingress (inbound) ports (Входящие порты)
    # Common ingress (inbound) TCP ports 
    IG_TCP_CPORTS="21,22,25,53,80,110,143,443,6000_7000" 
    # 
    # Common ingress (inbound) UDP ports 
    IG_UDP_CPORTS="53" 
     
    Common egress (outbound) ports (исходящие порты)
    # Common egress (outbound) TCP ports 
    EG_TCP_CPORTS="21,25,80,443,43" 
    # 
    # Common egress (outbound) UDP ports 
    EG_UDP_CPORTS="20,21,53" 
     
    8. Запускаем 
    /usr/local/sbin/apf -s 
     
    Другием команды: 
    usage /usr/local/sbin/apf [OPTION] 
    -s|--start ............. загрузить правила файрвола
    -r|--restart ........... перезагрузить 
    -f|--flush|--stop ...... остановить 
    -l|--list .............. показать правила 
    -st|--status ........... статус 
    -a HOST|--allow HOST ... добавить host (IP/FQDN) в allow_hosts.rules 
    -d HOST|--deny HOST .... добавить host (IP/FQDN) to deny_hosts.rules
    или :
    (iptables и apf должны быть установлены)
    Загружаем (D)DoS-Deflate
    HTML:
    wget http://www.inetbase.com/scripts/ddos/install.sh
    chmod 0700 install.sh
    ./install.sh
     
  5. svesve

    svesve Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    2 MAQUEEN вообщето тоже самое я описал выше, без использования apf.


    2 TC

    tcpdump что показывает?
    ботнет большой?? мжет проще перекрыть подсть?
     
  6. Serzh CS

    Serzh CS New Member

    Joined:
    13 Dec 2009
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Атакуют из нескольких подсетей ...
     
  7. svesve

    svesve Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    Режь подсети и не парься
     
  8. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    Вот мой фаер собственного сочинения. Долго мучался с защитой от флуда сырыми SYN пакетами, вроде как получилось. Не претендую на правильность, мой опыт в дебиане - 3 месяца.
    Буду рад если кто-то дополнит ;)

    PHP:
    iptables -#очищаем правила
    iptables -X syn-flood #удаляем цепочку если она есть
    iptables -A FORWARD -j DROP #запрещаем форвард пакетов, мы же не роутер
    iptables -A INPUT -i lo -j ACCEPT # разрешаем все внутренние коннекты
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #Сразу же принимаем все пакеты по установленным соединениям (не секурно, но для производительности гуд)

    iptables -N syn-flood # цепочка по обработке входящих соединений на 80 порт
    iptables -A INPUT -p tcp --syn --dport 80 -m state --state NEW -j syn-flood # Если установлен только флаг SYN (обычно такими пакетами и флудят, они же являются первыми при "трехразовом рукопожатии"). В обработку идут только новые соединения
    iptables -A syn-flood -p tcp -m connlimit --connlimit-above 10 -j DROP # запрещаем одновременный коннект с 1 айпи не более 10 раз
    iptables -A syn-flood -p tcp -m limit --limit 5/--limit-burst 10 -RETURN # если этот пакет приходит не чаще 5 раз за секунду, то проверка пройдена.
    iptables -A syn-flood -j DROP # иначе дропаем

    iptables -A INPUT -p tcp --dport 80 ! --syn -m state --state NEW -j DROP # если новый пакет пришел в обход рукопожатия, то дропаем его

    iptables -A INPUT -p tcp --dport 80 -j ACCEPT # теперь разрешаем вход на 80 порт

    iptables -A INPUT --source 123.45.67.89 -j ACCEPT # Разрешаем себе любые соединения (123.45.67.89 - свой айпи) например чтобы управлять по ssh
    iptables -A INPUT -j DROP # все остальные пакеты не проходят
     
    1 person likes this.
  9. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    PHP:
    iptables -F
    iptables 
    -X syn-flood
    iptables 
    -A FORWARD -j DROP
    iptables 
    -A INPUT -i lo -j ACCEPT
    iptables 
    -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    iptables 
    -N syn-flood
    iptables 
    -A INPUT -p tcp --syn --dport 80 -m state --state NEW -j syn-flood
    iptables 
    -A syn-flood -p tcp -m limit --limit 3/second --limit-burst 10 -RETURN
    iptables -A syn-flood -j DROP


    iptables 
    -A INPUT -p tcp --dport 80 ! --syn -m state --state NEW -j DROP
    iptables 
    -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j DROP

    iptables 
    -A INPUT -p tcp --dport 80 -j ACCEPT

    iptables 
    -A INPUT --source айпи.админа.оло.ло -j ACCEPT

    iptables 
    -A INPUT -j DROP
    p.s. вот эти правила правильнее. То есть, если идет более 10 SYN/секунду, то ограничиваемся 3 syn+ack от сервера, таким образом можно установить не более 10 соединений.
    Тестил, пашет. Жаль, в iptables не предусмотрено автобанилки :(