Введение:
Представьте, что вы устроили потрясающую вечеринку. Музыка громкая, друзья в восторге, атмосфера на высоте. И тут к вашей двери ломится огромная толпа зомби. Они шумят, перекрикивают друг друга и хотят попасть внутрь, чтобы испортить веселье. Именно так работает DDoS-атака: злоумышленники отправляют на ваш сервер лавину запросов, чтобы он просто не выдержал нагрузки и перестал работать.
Почему DDoS-атаки — это проблема для игровых серверов?
Игровые сервера — идеальная цель: игроки хотят стабильного подключения, а злоумышленники знают, как раздражает лаг в самый разгар игры. Один сбой — и ваша "вечеринка" рушится, оставляя всех с плохим настроением. Но не паникуйте! Я научу вас, как выставить "вышибал", поставить камеры наблюдения и держать вечеринку под контролем.
Как работают DDoS-атаки? Простыми словами, DDoS (распределённая атака на отказ в обслуживании) — это когда на ваш сервер одновременно летят миллионы запросов из разных мест. Цель проста: перегрузить сервер, чтобы он "упал" и стал недоступным.
Основные виды атак:
UDP-флуд — сервер заваливают фальшивыми пакетами данных. Антипример: вы пытаетесь заказать еду, но линия доставки постоянно занята людьми, которые ничего не заказывают.
SYN-флуд — сервер заваливают запросами на подключение, которые "виснут", блокируя ресурсы.
HTTP-флуд — злоумышленники отправляют кучу запросов к веб-страницам, например, к вашему игровому API.
DNS-атака — злоумышленники используют уязвимые DNS-сервисы для переадресации гигантского потока трафика на ваш сервер
Как распознать, что идет DDOS атака?
Резкие лаги: сервер отвечает с задержкой или вовсе "молчит".
Необычно высокий трафик: мониторинг показывает, что нагрузка взлетела до небес.
Обрыв подключения: сервер отключается из-за перегрузки.
Способы защиты:
Первый уровень: Базовая защита
Настройка фаервола:Представьте фаервол как вышибалу у двери. Он проверяет каждого входящего: "Ты в списке? Если нет — проваливай!".
Используйте iptables.
Настройте правила для ограничения доступа к критичным портам.
Отключение неиспользуемых портов:Открытые порты — это как открытые окна на вашей вечеринке. Зачем их оставлять открытыми, если никто не собирается лезть через них?
Оставьте только порты, которые нужны вашему серверу (например, 25565 для Minecraft).
Настраиваем UFW (Uncomplicated Firewall)
Включаем UFW:
sudo ufw enable
Откройте только нужные порты:
sudo ufw allow 25565/tcp
Закройте все остальные:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Второй уровень: Продвинутые методы
Теперь мы добавим более мощные инструменты и правила, которые дадут вашему серверу выстоять против серьёзных атак.
1. Используем iptables
Блокируем флуд от конкретных IP:
sudo iptables -A INPUT -s ip -j DROP
Ограничиваем количество соединений от одного IP:
sudo iptables -A INPUT -p tcp --dport 25565 -m connlimit --connlimit-above 10 -j REJECT --reject-with tcp-reset
Эту команду можно описать данной фразой:
"Хватит! Больше 10 запросов за секунду не пропускаем."
Ограничиваем скорость запросов (rate limiting):
sudo iptables -A INPUT -p udp --dport 25565 -m limit --limit 10/second ACCEPT (В одной строчке)
sudo iptables -A INPUT -p udp --dport 25565 -j DROP
Блокируем крупные пакеты (тяжёлые запросы):
Маленькие пакеты — это нормально, но если кто-то отправляет гигантские пакеты, скорее всего, это атака.
sudo iptables -A INPUT -p tcp --dport 25565 -m length --length 0:500 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 25565 -j DROP
ВАЖНО:Сохраняйте правила после настройки.
sudo iptables-save > /etc/iptables/rules.v4
2. Устанавливаем Fail2Ban
Fail2Ban автоматически блокирует IP-адреса, которые пытаются отправить слишком много запросов.
sudo apt update
sudo apt install fail2ban
Настройка Fail2Ban:
Создайте локальный конфигурационный файл:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Настройте защиту вашего игрового порта.
В файле /etc/fail2ban/jail.local добавьте:
[minecraft] enabled = true port = 25565 filter = minecraft logpath = /var/log/minecraft/server.log maxretry = 5 bantime = 3600 findtime = 600
В моем случае я делаю защиту от DDOS для майнкрафт сервера.
Перезапустите Fail2Ban:
sudo systemctl restart fail2ban
3. Используем TCP SYN Cookies
Атаки SYN-флуд нагружают сервер запросами на соединение, не завершая их. Включение SYN Cookies поможет справиться с этой проблемой.
Включение:
sudo sysctl -w net.ipv4.tcp_syncookies=1
ВАЖНО:Чтобы включить на постоянку, а не вводить каждый раз просто добавьте в файл /etc/sysctl.conf это значение.
Уровень 3: Оптимизация UBUNTU/DEBIAN
1. Настройка sysctl для устойчивости
Добавьте в файл /etc/sysctl.conf следующие параметры:
net.core.somaxconn = 1024 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter=1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0
Примените изменения:
sudo sysctl -p
Заключение:
Поздравляю, теперь ваш сервер готов встретить DDoS-зомби во всеоружии! Используйте многоуровневую защиту, внимательно мониторьте трафик и не бойтесь экспериментировать с дополнительными инструментами, чтобы найти оптимальные настройки для вашего игрового сервера.