Защита От Dos/ddos Атак Своими Силами

Тема в разделе "Вопросы безопасности", создана пользователем admin, 23 сен 2016.

  1. TopicStarter Overlay
    Offline

    admin Команда форума Администратор

    Сообщения:
    1.747
    Симпатии:
    38.795
    Репутация:
    139
    Данная тема будет постоянно пополняться новыми способами защиты от идиотов.
    В данной статье я предложу лишь раз перейти на защищенный хостинг.
    Начнем с выбора на чем вы сидите: хостинг или VPS/VDS.

    Хостинг:
    1. JS заглушка: многие боты настолько тупые, что не поддерживают JS, а те, что поддерживают заслуживают особого внимания. Простая JS заглушка:
    Создаем простой index.html со следующим годом:
    Код:
    Код:
    <script language="JavaScript">
    windows.location="https://domen.zona/index.php";
    </script>
    Спасет от большинства атак идиотов. Теперь поговорим про ботов, которые оборудованы парсером window.location. Для таких случаев мы просто должны закриптовать нашу заглушку и дело с концом. Минус в том, что мы пошлем и поисковых ботов.
    2. Cookie заглушка. Работает точно так же как и JS. На просторах сети очень много статей по таим заглушкам, так что вам не составит труда найти с JS + COOKIE
    Код:
    Код:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html><head>
    <META HTTP-EQUIV="pragma" CONTENT="no-cache" />
    <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache" />
    </head><body onload="document.cookie = 'DDOS=OK'; location.reload(true);">
    </body>
    </html>
    VPS/VDS:
    Тут уже огромное пространство для действий! Хочешь iptables, хочешь ipset, а может geoip или все сразу?! Может быть nginx+apache? Или просто apache?! :-D Если желаете защищаться нормально, то эта статья именно для вас! Я не буду углубляться в то "А КАК ПОСТАВИТЬ!!!", все это давно описано в Интернете, я лишь расскажу кратко о методах защиты. Скажу сразу, если не знаете что такое linux - покупайте защищенный хостинг.
    1. Самый простой способ, это iptables. Прежде чем идти дальше, поищите информацию по netstat и поймите для чего эта штука нужна, а я пойду дальше. Дос/ДДос начался. Подсчитаем кол-во школьных соединений к нашему веб серверу:
    Код:
    Код:
    netstat -na | grep ":443\ " | wc -l
    864 - много.
    Теперь, посмотрим ближе какие IP адреса к нам коннектятся.
    Код:
    Код:
    netstat -na | grep ":443\ " | sort | uniq -c | sort -nr
    Копируем все что выдал терминал в нотепад и разгребаем. Там где вы видите много коннектов - выписываем и баним в iptables.
    Код:
    Код:
    iptables -I INPUT -s 10.10.10.10 -j DROP
    Не забудьте сохранить правила! Это будет также касаться ipset и geoip.
    2. Ipset. Чем он хорош? Просто баним список IP адресов/диапазонов, но нужно будет "подключить" список от ipset в iptables.
    3. Geoip. Ну просто самый простой способ забанить целую страну одной командой. Способ для самых линевых. Вам не нужно писать диапазоны как с ipset/iptables, просто достаточно дать команду и к примеру Китай никогда не увидит ваш сайт без VPN/proxy.
    Код:
    Код:
    iptables -A INPUT -p tcp --dport 443 -m geoip --src-cc CN -j REJECT
    5. Настройка nginx на лимитирование запросов с 1 IP (также можно сделать и с iptables)
    6. hosts.deny - мой любимый способ. Я анализирую атакующие IP адреса и выделяю диапазон, если первые 2 - 3 значения одинаковы. Например:
    15.12.15.12
    15.12.15.85
    15.12.15.65
    15.12.15.88
    или
    15.12.15.54
    15.12.65.54
    15.12.0.59
    15.12.14.55
    Приходится банить диапазоном /24 /16. Также hosts.deny поддерживает просто IP адреса и вы можете просто написать их в файл. (белый трафик от пользователей кидайте в hosts.allow)
    7. Модули на apache - бред на мой взгляд. Мне не удалось его защитить на своем сервере, но есть много статей как это сделать. Из-за неудач и частых падений я перешел на php-fpm. Никаких падений не было до сих пор.
    8. Свое проксирование. Если вы имеете достаточно денег для снятия хорошего оборудования для фильтрации трафика, то эта статья для вас: Полезные статьи. Система защиты от DDOS атак - Syncookied. LTD Beget
    GitHub - LTD-Beget/syncookied: syn flood protection
    9. Временный способ с помощью CloudFlare. Я сам пользуюсь бесплатным тарифом, но он не спасет вас от стрессеров. При превышении допустимой нагрузке он напрямую посылает этот трафик, а не добавляет в бан как хотелось бы. В итоге нет фильтрации и вы лежите. При выборе этого метода ваш ресурс не ляжет от школьной атаки, но помрет от стрессера. Сегодня такаю атаку я наблюдал у себя. Отбился с помощью 3х записей в iptables. Смешная атака была, но 4 ядра были загружены полностью, что затрудняло использование моего сайта пользователями.
    10. Мод на nginx. Описание: Модуль nginx для борьбы с DDoS
    Вкратце: защита основана на cookies и JavaScript.
    Гитхаб: testcookie-nginx-module

    Не большое заключение:
    Эта статья не завершенная и она будет постоянно пополняться новыми методами. Есть люди, которые знают еще способы как защищаться от атак, прошу выкладывать свой опыт тут.
    ПО на Windows для анализа логов apache/nginx - 10-Strike Log-Analyzer.
    Для успешного отражения ддос атаки вы должны владеть вышеперечисленными знаниями и нормальным оборудованием. Оборудование должно быть от 2 ядер и 2Гб озу минимум.
    На момент написании статьи отбил 2 атаки с помощью ipset и hosts.deny.
    Оборудование:
    ЦП: 4 ядра
    ОЗУ: 12Гб
    Канал: 100Мб\с
    Стоит проксирование от CloudFlare (нужен только внешний фаервол)
     
  2. Offline

    Weltmeister Пользователь

    Сообщения:
    17
    Симпатии:
    16
    Репутация:
    0
    Мне кажется в нынешнее время скрипты не особо эффективны. Под hosts.deny имеется ввиду блокировка IP в htaccess?
     
  3. Offline

    m@ximus Пользователь

    Сообщения:
    32
    Симпатии:
    9
    Репутация:
    0
    последняя версия fail2ban стала достаточно умной и гибкой, советую.