sadrix logoSadriX
Минцифры готовит обязательную регистрацию IMEI смартфонов, купленных за границей
Гайды

Как настроить UFW файрвол на Ubuntu: пошаговое руководство

Полное руководство по настройке Uncomplicated Firewall на Ubuntu 22.04 и 24.04

09 884 просмотров5 мин
0
Поделиться:TelegramVK

Введение

UFW (Uncomplicated Firewall) — это удобная надстройка над iptables, входящая в состав Ubuntu. Она позволяет управлять правилами фильтрации трафика с помощью простых команд, не углубляясь в синтаксис iptables. По умолчанию UFW отключён, поэтому после установки системы сервер остаётся открытым для всех входящих подключений. В этом руководстве мы разберём, как правильно настроить UFW, чтобы защитить сервер и не потерять доступ по SSH.

Требования

  • Сервер или виртуальная машина с Ubuntu 20.04, 22.04 или 24.04.

  • Доступ к терминалу с правами sudo.

  • Базовые навыки работы в командной строке.

  • Понимание сетевых портов и протоколов (SSH, HTTP, HTTPS).

Шаг 1: Проверка статуса UFW

Перед началом работы убедитесь, что UFW установлен и узнайте его текущее состояние:

sudo ufw status verbose

Если утилита не установлена, выполните:

sudo apt update
sudo apt install ufw

По умолчанию статус будет inactive. Это значит, что файрвол не фильтрует трафик.

Шаг 2: Установка политик по умолчанию

Самый важный шаг — задать политику по умолчанию: запрещать все входящие подключения и разрешать все исходящие.

sudo ufw default deny incoming
sudo ufw default allow outgoing

Такая конфигурация блокирует любые попытки подключиться к серверу извне, кроме явно разрешённых служб. Исходящий трафик не ограничивается, что удобно для обновлений и работы приложений.

Шаг 3: Разрешение SSH (критически важно!)

Если вы настраиваете UFW на удалённом сервере, сначала разрешите SSH, иначе после включения файрвола вы потеряете доступ.

sudo ufw allow ssh

Эта команда открывает порт 22 для всех IP. Если SSH работает на другом порту, укажите его явно:

sudo ufw allow 2222/tcp

Проверьте, что правило добавлено:

sudo ufw status numbered

Шаг 4: Включение UFW

Теперь можно активировать файрвол:

sudo ufw enable

Система предупредит о возможном разрыве SSH-соединения. Если вы уже разрешили SSH, смело отвечайте y. После включения UFW автоматически запустится при загрузке.

Шаг 5: Разрешение веб-трафика (HTTP и HTTPS)

Для веб-сервера откройте порты 80 и 443:

sudo ufw allow http
sudo ufw allow https

Или через номера портов:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

UFW содержит профили приложений в /etc/ufw/applications.d/. Посмотреть доступные профили можно командой:

sudo ufw app list

Например, для Nginx:

sudo ufw allow 'Nginx Full'

Шаг 6: Разрешение других портов и сервисов

Для каждого дополнительного сервиса создавайте отдельное правило. Примеры:

  • MySQL (только для локальной сети): sudo ufw allow from 192.168.1.0/24 to any port 3306

  • PostgreSQL: sudo ufw allow 5432/tcp

  • DNS: sudo ufw allow 53

  • SMTP: sudo ufw allow 25/tcp

Старайтесь не открывать порты «на весь интернет», если в этом нет необходимости. Ограничивайте доступ по IP или подсети.

Шаг 7: Ограничение количества подключений (rate limiting)

UFW умеет автоматически блокировать IP-адреса, которые слишком часто подключаются к порту. Это полезно для защиты SSH от брутфорса:

sudo ufw limit ssh

По умолчанию лимит — 6 подключений за 30 секунд с одного IP. При превышении адрес блокируется на 30 секунд. Для веб-сервера лимитирование лучше не применять, чтобы не блокировать легитимных пользователей.

Шаг 8: Удаление правил

Правила можно удалять по номеру или по спецификации. Сначала посмотрите нумерованный список:

sudo ufw status numbered

Затем удалите ненужное правило:

sudo ufw delete 3

Либо укажите правило полностью:

sudo ufw delete allow 80/tcp

Будьте внимательны: удаление правила SSH может привести к потере доступа.

Шаг 9: Настройка IPv6

По умолчанию UFW может не управлять IPv6-трафиком. Проверьте файл /etc/default/ufw и убедитесь, что параметр IPV6=yes. Если он установлен в no, измените:

sudo nano /etc/default/ufw

Найдите строку IPV6=yes и сохраните файл. Затем перезагрузите UFW:

sudo ufw reload

Теперь правила будут применяться и к IPv6-адресам.

Шаг 10: Логирование

UFW может вести журнал заблокированных и разрешённых пакетов. Включите логирование:

sudo ufw logging on

Уровни логирования: low, medium, high, full. По умолчанию — low. Изменить уровень:

sudo ufw logging medium

Логи пишутся в /var/log/ufw.log (или /var/log/syslog). Просмотр:

tail -f /var/log/ufw.log

Не включайте high или full на нагруженных серверах — это быстро займёт диск.

Шаг 11: Просмотр и сброс правил

Посмотреть текущие правила с деталями:

sudo ufw status verbose

Сбросить все правила к состоянию по умолчанию:

sudo ufw reset

Команда отключит файрвол и удалит все пользовательские правила. Используйте с осторожностью.

Шаг 12: Работа с профилями приложений

Профили позволяют управлять правилами для конкретных программ. Список:

sudo ufw app list

Информация о профиле:

sudo ufw app info 'OpenSSH'

Разрешить профиль:

sudo ufw allow 'OpenSSH'

Профили хранятся в /etc/ufw/applications.d/. Вы можете создавать свои профили для нестандартных приложений.

Шаг 13: Проверка конфигурации

После настройки убедитесь, что нужные порты открыты, а лишние закрыты. Используйте nmap с другого хоста:

nmap -p 22,80,443 <IP-сервера>

Или проверьте локально:

sudo ufw status numbered

Также полезно перезагрузить сервер и убедиться, что UFW автоматически включается и правила сохраняются.

Типичные ошибки

1. Включение UFW без разрешения SSH — приводит к потере доступа к серверу. Всегда сначала добавляйте правило для SSH. 2. Использование `ufw allow` без указания протокола — открывает и TCP, и UDP. Если нужен только TCP, указывайте /tcp. 3. Открытие портов для всех IP — например, база данных, доступная из интернета. Ограничивайте по подсети. 4. Забыли про IPv6 — если IPV6=no, правила не применяются к IPv6-трафику, что создаёт брешь. 5. Слишком высокий уровень логирования — забивает диск и снижает производительность. 6. Игнорирование порядка правил — UFW обрабатывает правила сверху вниз, но для базовых сценариев это не критично. 7. Сброс UFW на удалённом сервере — ufw reset отключает файрвол, оставляя сервер открытым.

FAQ

Вопрос: Чем UFW отличается от iptables? Ответ: UFW — это фронтенд для iptables. Он упрощает создание правил, но под капотом использует те же механизмы. Для сложных конфигураций может понадобиться iptables или nftables.

Вопрос: Как открыть порт только для определённого IP? Ответ: sudo ufw allow from 203.0.113.5 to any port 22.

Вопрос: Что делать, если я заблокировал себе SSH? Ответ: Воспользуйтесь консолью хостинга (KVM/IPMI) или режимом восстановления, чтобы отключить UFW: sudo ufw disable.

Вопрос: Нужно ли настраивать UFW, если есть облачный файрвол? Ответ: Да, это дополнительный уровень защиты. Облачный файрвол работает на уровне сети, UFW — на уровне хоста.

Вопрос: Как проверить, какие порты слушают приложения? Ответ: sudo ss -tulnp.

Вопрос: Можно ли использовать UFW с Docker? Ответ: Да, но Docker управляет iptables самостоятельно и может обходить правила UFW. Требуется дополнительная настройка.

Итог

UFW — мощный и простой инструмент для базовой защиты Ubuntu. Настройка сводится к нескольким командам: задать политики по умолчанию, разрешить SSH, включить файрвол и добавить правила для нужных сервисов. Не забывайте про IPv6, логирование и ограничение подключений. Регулярно проверяйте список правил и удаляйте ненужные. Следуя этому руководству, вы сможете безопасно настроить файрвол даже на удалённом сервере.

Читайте также

Комментарии

Комментарии доступны только зарегистрированным пользователям. Войти

  • Пока нет комментариев. Будьте первым.