Как защититься от DDoS-атак с помощью стандартных серверных инструментов

Ответ

Для базовой защиты от DDoS-атак на уровне сервера можно использовать комбинацию встроенных инструментов и настроек. Эти меры эффективны против атак низкого и среднего уровня.

  1. Ограничение скорости запросов (Rate Limiting) Самый эффективный метод на уровне веб-сервера. Nginx позволяет ограничить количество запросов с одного IP-адреса.

    # В http блоке
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/s;
    
    # В server или location блоке
    server {
        limit_req zone=mylimit burst=10 nodelay;
    }
    • rate=5r/s: не более 5 запросов в секунду с одного IP.
    • burst=10: позволяет краткосрочное превышение лимита на 10 запросов.
  2. Ограничение количества соединений С помощью iptables можно ограничить число одновременных подключений к порту (например, 80) с одного IP.

    # Разрешить не более 20 одновременных подключений к порту 80 с одного IP
    iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j REJECT
  3. Включение SYN Cookies Это механизм ядра Linux для защиты от SYN-флуд атак. Он активируется при высокой нагрузке.

    # Включить SYN Cookies
    sysctl -w net.ipv4.tcp_syncookies=1
  4. Использование Fail2Ban Fail2Ban сканирует логи (например, Nginx) и автоматически блокирует IP-адреса, проявляющие вредоносную активность (слишком много запросов, попытки сканирования и т.д.).

Важно: Эти методы не спасут от масштабных, распределенных атак. Для серьезной защиты необходимо использовать специализированные сервисы (например, Cloudflare, Qrator Labs) или аппаратные решения.

Ответ 18+ 🔞

Слушай, ну вот представь себе картину: сидит админ, пьёт кофе, и тут — бац! — сервер лег, как подстреленный. А всё потому, что какой-то умник с ботнетом размером с овердохуища решил похулиганить. Ну, блядь, классика жанра. Так вот, чтобы тебя не накрыло таким же медным тазом, есть несколько простых, но годных приёмов на уровне самого сервера. От мелких пакостников — сработает, а от настоящего апокалипсиса — нет, тут уже нужны тяжёлые пушки.

  1. Ограничение скорости запросов (Rate Limiting) Это, блядь, основа основ! Не давать каждому челу с одного IP долбить сервер как сумасшедший. В Nginx это делается проще пареной репы.

    # В http блоке
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/s;
    
    # В server или location блоке
    server {
        limit_req zone=mylimit burst=10 nodelay;
    }

    Перевод с технического на русский: rate=5r/s — это «не больше пяти запросов в секунду, а то получишь по ебалу». А burst=10 — это «ладно, на десять запросов сверх лимита я закрою глаза, но потом всё, пиздец».

  2. Ограничение количества соединений Тут в игру вступает старый добрый iptables. Можно сказать: «Эй, дружок-пирожок, с одного IP — не больше 20 дырок в мою дверь (порт 80) одновременно!».

    # Разрешить не более 20 одновременных подключений к порту 80 с одного IP
    iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j REJECT

    Проще говоря: больше 20 — иди нахуй. Прямо так и пишется.

  3. Включение SYN Cookies Это такая хитрая магия ядра Линукса против особо наглых атак (SYN-флуд). Включается одной строчкой, когда система уже чувствует, что её начинают ебать.

    # Включить SYN Cookies
    sysctl -w net.ipv4.tcp_syncookies=1

    Ядро такое: «Ага, я вижу, вы тут все SYN-пакеты кидаете, чтобы места занять? Ну-ка, получите печеньку и идите нахуй, пока не докажете, что вы не робот».

  4. Использование Fail2Ban А это, сука, мой любимый автоматический цепной пёс. Он тупо смотрит в логи (Nginx, SSH — куда скажешь), видит, что какой-то IP ведёт себя как последний пидарас (тысячи запросов, подбор паролей), и просто банит его нахуй. На время или навсегда. Красота!

Но вот главное, что нужно понять, ёпта: это всё — как поставить хороший замок на дверь и решётку на окно. От вора-одиночки или пьяного соседа — защитит. Но если на твой дом решит наехать целая орда пидаров с тараном и огнемётами (читай: мощный распределённый DDoS), то эти решётки свернутся в трубочку. Тут уже нужны либо спецсервисы вроде Cloudflare (которые развернут атаку в сторону, как хитрая жопа), либо дорогущие железные коробки.

Так что, если проект серьёзный — не экономь на защите, а то будет мучительно больно и обидно.