Как настроить UFW файрвол на Ubuntu: пошаговое руководство
Полное руководство по настройке Uncomplicated Firewall на Ubuntu 22.04 и 24.04
Введение
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/tcpUFW содержит профили приложений в /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 3306PostgreSQL:
sudo ufw allow 5432/tcpDNS:
sudo ufw allow 53SMTP:
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, логирование и ограничение подключений. Регулярно проверяйте список правил и удаляйте ненужные. Следуя этому руководству, вы сможете безопасно настроить файрвол даже на удалённом сервере.
Читайте также
Комментарии
Комментарии доступны только зарегистрированным пользователям. Войти
- Пока нет комментариев. Будьте первым.



