Введение / Значимость настройки
Правильно настроенный брандмауэр в Linux защищает серверы и рабочие станции от несанкционированного доступа и сетевых атак. В этом гайде вы настроите базовую фильтрацию трафика, откроете только нужные порты и убедитесь, что система соответствует минимальным требованиям безопасности. После выполнения инструкции ваша система будет пропускать только явно разрешённый трафик и вести аудит подозрительных подключений.
Требования и подготовка
- Система с Ubuntu 22.04/24.04, Debian 12, CentOS Stream 9 или RHEL 9.
- Права суперпользователя (доступ к sudo).
- Установленный и работающий SSH (если управляете сервером удалённо).
- Отсутствие конфликтующих фаерволов: перед началом остановите firewalld, если он установлен.
Подготовка:
# Ubuntu / Debian
sudo apt update && sudo apt install ufw -y
# CentOS / RHEL
sudo dnf install ufw -y
# или используйте firewalld/nftables в зависимости от политики дистрибутива
Остановите firewalld, если он активен:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
Шаг 1: Базовая политика по умолчанию
Начните с запрета всего входящего и разрешения исходящего трафика. Это минимизирует поверхность атаки.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
После включения проверьте, что вы не потеряли удалённый доступ, если работаете по SSH. Если порт 22 не открыт явно, добавьте его до включения UFW.
Шаг 2: Открытие необходимых портов
Разрешите сервисы, которые должны быть доступны из сети. Используйте профили приложений или прямые правила для портов.
# По номерам портов
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
# С ограничением по IP (рекомендуется для SSH)
sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp
# С ограничением по интерфейсу
sudo ufw allow in on eth0 to any port 443 proto tcp
Если вы изменили порт SSH, укажите актуальный номер вместо 22.
Шаг 3: Логирование и дополнительные правила
Включите логирование для отслеживания заблокированных попыток подключения. Это поможет выявить сканирование портов и атаки.
sudo ufw logging on
sudo ufw logging medium
Добавьте защиту от частых подключений (rate limiting) для SSH:
sudo ufw limit 22/tcp
При необходимости закройте диапазоны или запретите доступ по странам через ipset и дополнительные цепочки, если UFW этого не покрывает.
Шаг 4: Проверка и аудит правил
Убедитесь, что правила применились и имеют ожидаемый приоритет.
sudo ufw status verbose
Проверьте, какие порты реально слушаются:
sudo ss -tulnp
Для внешней проверки используйте nmap с другого хоста:
nmap -Pn -p 22,80,443 ваш_сервер
Возможные проблемы и их решения
- Потеря SSH-доступа после включения UFW: сразу подключитесь через консоль провайдера или IPMI, добавьте правило для 22/tcp и переподключитесь. Всегда открывайте SSH до включения UFW.
- Конфликт iptables и nftables: в современных системах UFW может использовать nftables бэкенд. Убедитесь, что вы не смешиваете правила вручную через iptables и ufw.
- Задержки при rate limiting: при больших нагрузках
ufw limitможет вызывать задержки для легитимных клиентов. В таких случаях настройте fail2ban вместо простого лимита. - Лишние разрешения: периодически пересматривайте
ufw status numberedи удаляйте неиспользуемые правила черезufw delete <номер>.
Поддержание безопасности
Регулярно проверяйте открытые порты и актуализируйте правила при добавлении или удалении сервисов. Обновляйте систему и используйте дополнительные слои защиты: ключи SSH, fail2ban и минимизацию запущенных сетевых сервисов. Правильный firewall — это база, а не единственная мера защиты.