Защита серверів від DDoS-атак (Distributed Denial of Service) — одне з найважливіших завдань у сучасному світі мережевої безпеки. DDoS-атаки здатні паралізувати роботу сервісу, генеруючи величезну кількість запитів, що призводить до перевантаження сервера та його відмови в обслуговуванні легітимних користувачів.
Одним із ефективних інструментів для захисту від таких атак у системах на базі Linux є nftables. Це потужний і гнучкий мережевий фільтр, який пропонує безліч можливостей для налаштування правил фільтрації трафіку, управління швидкістю з’єднань та блокування підозрілих пакетів.
У цій статті ми розглянемо, як можна використовувати nftables для захисту сервера від DDoS-атак, починаючи з базового налаштування і закінчуючи створенням правил, призначених для мінімізації наслідків таких атак.
- Переваги використання nftables
- Основні методи захисту від DDoS із використанням nftables
- Крок 1: Встановлення та налаштування nftables
- Встановлення nftables
- Створення базової конфігурації
- Крок 2: Обмеження кількості нових з’єднань
- Крок 3: Захист від SYN-флудів
- Крок 4: Фільтрація ICMP-запитів (ping-флуд)
- Крок 5: Обмеження трафіку на певні порти
- Крок 6: Логування підозрілого трафіку
- Крок 7: Застосування та збереження конфігурації
- Крок 8: Постійний моніторинг і адаптація
- Висновок
Переваги використання nftables
nftables (оф. сайт: https://nftables.org/) є сучасним мережевим фільтром, який був введений у ядро Linux як заміна для iptables, ip6tables, arptables та ebtables. Основні переваги використання nftables порівняно з іншими брандмауерами включають:
- Спрощений синтаксис: Правила в nftables більш компактні та логічні, що полегшує їх створення та підтримку.
- Потужні можливості фільтрації: nftables пропонує гнучкі механізми для управління трафіком, включаючи використання різних протоколів і можливість роботи з кількома типами даних (IPv4, IPv6, ARP).
- Висока продуктивність: Завдяки більш оптимізованому коду, nftables демонструє високу продуктивність при обробці мережевого трафіку.
- Мінімальне навантаження на систему: nftables ефективно використовує ресурси сервера, що дозволяє обробляти велику кількість правил без суттєвого збільшення навантаження на CPU.
- Підтримка складних сценаріїв: nftables легко справляється з вимогами складних мережевих сценаріїв, таких як багаторівневий захист і динамічна фільтрація.
Основні методи захисту від DDoS із використанням nftables
DDoS-атаки можуть набувати різних форм, починаючи від простих атак на рівні протоколів до складних атак на рівні додатків. Основна мета захисту від DDoS полягає у мінімізації впливу на легітимних користувачів, блокуючи підозрілий трафік та обмежуючи навантаження на сервер. За допомогою nftables можна реалізувати наступні стратегії захисту:
- Обмеження кількості нових з’єднань (connection tracking).
- Захист від SYN-флудів.
- Фільтрація ICMP-запитів (ping-флуд).
- Обмеження трафіку по портах.
- Логування підозрілого трафіку.
Раніше ми писали про методи поетапного захисту серверів від DDoS-атак від налаштування ядра до конфігурації фаєрвола та frontend сервера Nginx.
Крок 1: Встановлення та налаштування nftables
Першим кроком у захисті вашого сервера за допомогою nftables є встановлення та налаштування самого інструменту. На більшості сучасних дистрибутивів Ubuntu nftables вже доступний у пакетах.
Встановлення nftables
Щоб встановити nftables, виконайте наступну команду:
sudo apt install nftables
Після встановлення запустіть службу та увімкніть її на старті системи:
sudo systemctl enable nftables sudo systemctl start nftables
Створення базової конфігурації
Створіть нову таблицю та ланцюг для фільтрації вхідного трафіку:
sudo nft add table inet filter sudo nft add chain inet filter input { type filter hook input priority 0 \; }
Ця таблиця та ланцюг будуть використовуватись для додавання правил фільтрації, які ми створимо для захисту від DDoS-атак.
Крок 2: Обмеження кількості нових з’єднань
Обмеження кількості нових з’єднань допомагає захистити сервер від перевантаження внаслідок великої кількості запитів, що надходять одночасно з одного джерела. Це особливо корисно проти таких атак, як SYN-флуд, коли зловмисник надсилає численні запити з метою виснаження ресурсів сервера.
Додайте правило для обмеження кількості нових з’єднань з одного IP-адреси:
sudo nft add rule inet filter input ip saddr { limit rate 25/second burst 100 } accept
Це правило дозволяє не більше 25 нових з’єднань на секунду від одного IP-адреси. У випадку тимчасового сплеску навантаження допускається до 100 з’єднань.
Крок 3: Захист від SYN-флудів
SYN-флуд — це тип DDoS-атаки, при якій зловмисник надсилає серверу величезну кількість SYN-запитів, щоб виснажити ресурси та заблокувати доступ для легітимних користувачів. Для захисту від цієї атаки можна налаштувати контроль швидкості SYN-пакетів.
Додайте правило для обмеження кількості SYN-пакетів:
sudo nft add rule inet filter input tcp flags syn limit rate 10/second burst 20 accept
Це правило дозволяє до 10 SYN-запитів на секунду з можливістю тимчасового збільшення до 20 при сплесках трафіку.
Крок 4: Фільтрація ICMP-запитів (ping-флуд)
DDoS-атаки можуть також здійснюватись через протокол ICMP, найчастіше через так званий ping-флуд. При таких атаках зловмисник надсилає на сервер численні ICMP-запити (echo-request), перевантажуючи його ресурси. Щоб захиститися від цього, можна обмежити кількість ICMP-запитів:
sudo nft add rule inet filter input icmp type echo-request limit rate 10/second burst 20 accept
Це правило обмежує частоту ICMP-запитів до 10 пакетів на секунду, з можливістю збільшення до 20.
Крок 5: Обмеження трафіку на певні порти
Для захисту від DDoS-атак на конкретні сервіси (наприклад, веб-сервер) можна обмежити кількість з’єднань на певні порти. Це запобіжить ситуації, коли зловмисник надсилає велику кількість запитів на конкретний порт, щоб перевантажити сервіс.
Додайте правило для обмеження з’єднань на порт 80 (HTTP):
sudo nft add rule inet filter input tcp dport 80 limit rate 50/second burst 100 accept
Це правило дозволяє до 50 запитів на секунду на порт 80 з можливістю тимчасового збільшення до 100.
Крок 6: Логування підозрілого трафіку
Для аналізу потенційних атак і подальшого покращення правил безпеки важливо вести логування підозрілого трафіку. Наприклад, ви можете логувати всі пакети, що виглядають як частина SYN-флуду, перед їх відкиданням:
sudo nft add rule inet filter input tcp flags syn limit rate 20/second burst 40 counter log prefix "SYN flood attempt: " drop
Це правило логуватиме всі підозрілі SYN-запити та відкидатиме їх.
Крок 7: Застосування та збереження конфігурації
Після того, як ви налаштуєте всі необхідні правила для захисту від DDoS, їх потрібно зберегти, щоб вони застосовувались при кожному перезавантаженні сервера. Для цього виконайте команду:
sudo nft list ruleset > /etc/nftables.conf
Тепер усі ваші правила будуть автоматично завантажуватись при старті системи.
Крок 8: Постійний моніторинг і адаптація
Захист від DDoS — це не статичний процес, а постійна робота. Щоб підтримувати високий рівень безпеки, важливо регулярно відслідковувати активність на сервері та адаптувати правила відповідно до змін характеру трафіку та видів атак.
Висновок
nftables пропонує потужні можливості для налаштування захисту від DDoS-атак. Використовуючи його гнучкий синтаксис та високу продуктивність, можна створити ефективну систему фільтрації трафіку, яка дозволить знизити ризик перевантаження сервера та забезпечити стабільну роботу навіть в умовах атаки.
Основні стратегії захисту включають обмеження кількості з’єднань, контроль за кількістю запитів на певні порти та логування підозрілих пакетів. nftables дозволяє тонко налаштовувати правила залежно від типу атак і особливостей вашого сервера, що робить його ідеальним інструментом для захисту від DDoS у середовищах на базі Linux.