Налаштування фаєрвола на Debian 13: закриваємо всі порти, залишаємо тільки SSH

Після встановлення чистого сервера Debian 13 одним із перших кроків має бути налаштування мережевої безпеки. Якщо доступ до сервера здійснюється виключно через SSH з використанням ключів, доцільно повністю закрити всі вхідні порти та залишити відкритим лише порт 22 для SSH.

У Debian 13 стандартним інструментом для фільтрації мережевого трафіку є nftables. Він входить до складу сучасних версій Linux і дозволяє гнучко налаштовувати правила фаєрвола.

Встановлення nftables

Оновіть список пакетів та встановіть nftables:

apt update
apt install nftables -y

Створення конфігурації фаєрвола

Відкрийте файл конфігурації:

nano /etc/nftables.conf

Вставте наступний вміст:

#!/usr/sbin/nft -f

flush ruleset

table inet filter {

    chain input {
        type filter hook input priority 0;
        policy drop;

        # localhost
        iif lo accept

        # вже встановлені з'єднання
        ct state established,related accept

        # SSH
        tcp dport 22 accept

        # ping (необов'язково)
        ip protocol icmp accept
        ip6 nexthdr icmpv6 accept
    }

    chain forward {
        type filter hook forward priority 0;
        policy drop;
    }

    chain output {
        type filter hook output priority 0;
        policy accept;
    }
}

Перевірка конфігурації

Перед застосуванням правил необхідно переконатися, що конфігурація не містить помилок:

nft -c -f /etc/nftables.conf

Якщо помилок не виявлено, можна активувати фаєрвол.

Запуск та автозавантаження

systemctl enable nftables
systemctl restart nftables

Перевірити завантажені правила можна командою:

nft list ruleset

Що роблять ці правила

  • Блокують усі вхідні підключення за замовчуванням.
  • Дозволяють локальний трафік через інтерфейс localhost.
  • Дозволяють вже встановлені та пов’язані з’єднання.
  • Відкривають лише порт 22 для SSH.
  • Дозволяють вихідні з’єднання сервера.
  • Блокують пересилання пакетів (forward).

Перевірка відкритих портів

Після налаштування фаєрвола рекомендується перевірити сервер з іншого пристрою:

nmap -Pn IP_СЕРВЕРА

У результаті повинен залишитися доступним лише SSH-порт:

22/tcp open ssh

Додатковий захист SSH

Якщо ви підключаєтесь до сервера лише з однієї статичної IP-адреси, можна дозволити доступ до SSH тільки з неї.

Замість правила:

tcp dport 22 accept

використовуйте:

ip saddr 203.0.113.55 tcp dport 22 accept

де 203.0.113.55 необхідно замінити на власну IP-адресу.

У такому випадку SSH буде доступний виключно з вказаної адреси, а всі інші спроби підключення будуть автоматично блокуватися.

Важливе застереження

Перед застосуванням нових правил рекомендується відкрити другу SSH-сесію та не закривати її до завершення перевірки. Це дозволить уникнути втрати доступу до сервера у випадку помилки в конфігурації фаєрвола.