Зачем настраивать UFW
UFW (Uncomplicated Firewall) — это удобная оболочка для iptables/nftables, которая превращает сложную конфигурацию сетевого экрана в несколько интуитивных команд. По умолчанию в большинстве Linux-дистрибутивов все порты открыты, что делает систему мишенью для автоматизированных сканеров и брутфорс-атак. После выполнения этого гайда вы получите базовый, но надёжный периметр безопасности, который будет пропускать только нужный вам трафик и скрывать неиспользуемые сервисы.
Подготовка и установка
Перед началом убедитесь, что у вас есть доступ к терминалу с правами sudo. В Ubuntu и производных UFW обычно уже установлен. Если вы работаете на минимальном образе Debian или другом сервере, установите пакет:
sudo apt update && sudo apt install ufw -y
Проверьте версию утилиты, чтобы убедиться в актуальности пакетов безопасности:
ufw version
⚠️ Важно: Все команды ниже требуют прав суперпользователя. Запускайте их через
sudoили предварительно переключитесь наroot.
Шаг 1: Сброс конфигурации и политики по умолчанию
Если вы ранее экспериментировали с сетевыми экранами, начните с чистого листа. Это исключит конфликты правил и непредсказуемое поведение.
sudo ufw --force reset
Задайте строгую политику: блокировать всё входящее, разрешать всё исходящее. Это стандарт безопасности для серверов.
sudo ufw default deny incoming
sudo ufw default allow outgoing
💡 Совет: Оставляйте исходящий трафик открытым, иначе сервер не сможет загружать обновления, отправлять системные уведомления или обращаться к внешним API.
Шаг 2: Разрешение базовых подключений
Критически важно: перед активацией брандмауэра откройте порт для удалённого управления. Иначе вы мгновенно потеряете связь с сервером.
# Разрешаем SSH (порт 22)
sudo ufw allow ssh
# Если используете нестандартный порт, укажите его явно:
sudo ufw allow 2222/tcp
Если на машине работает веб-приложение или панель управления:
sudo ufw allow http
sudo ufw allow https
# Или используйте профиль приложения (например, для Nginx):
sudo ufw allow "Nginx Full"
Для ограничения доступа к административным портам только с доверенных IP:
sudo ufw allow from 203.0.113.10 to any port 22
Шаг 3: Включение и проверка работы
Когда правила настроены, активируйте защиту. Система запросит подтверждение, так как активные SSH-сессии могут прерваться при перезагрузке модулей ядра.
sudo ufw enable
После успешной активации проверьте текущий статус и список применённых правил:
sudo ufw status verbose
Вы увидите таблицу с направлениями (Direction), действиями (Action) и источниками (From). Убедитесь, что SSH (или ваш кастомный порт) находится в строке ALLOW IN. Для детальной диагностики подключите логирование:
sudo ufw logging medium
Записи будут сохраняться в /var/log/ufw.log. Их удобно мониторить в реальном времени командой:
sudo tail -f /var/log/ufw.log | grep BLOCKED
Возможные проблемы и их решение
- Потеря доступа после включения. Если вы случайно заблокировали SSH, подключитесь к серверу через консоль хостинг-провайдера или панель управления VPS. Выполните
sudo ufw disable, добавьте правилоallow sshи включите фаервол заново. - Правила не применяются или конфликтуют. UFW обрабатывает правила последовательно сверху вниз. Если вы добавили
denyдля целой подсети, а затемallowдля отдельного IP внутри неё, первое правило перекроет второе. Удалите ошибочное правило по номеру:sudo ufw delete <номер>и добавьте его с правильным приоритетом. - Сервис недоступен извне, хотя правило есть. Проверьте, слушает ли приложение нужный интерфейс. Команда
sudo ss -tulpn | grep :<порт>покажет, привязался ли процесс к0.0.0.0(все интерфейсы) или только к127.0.0.1(локальный хост). В последнем случае внешний доступ невозможен, даже если UFW разрешает трафик — правьте конфигурацию самого сервиса.