Перед вами подробное руководство для серверных админов. В статье объясняется, как с помощью UFW настроить базовый и продвинутый файрвол в Ubuntu, защитить сервер и управлять сетевыми подключениями.
Что такое UFW
UFW (Uncomplicated Firewall) — лаконичный и интуитивно понятный инструмент для управления сетевой безопасностью в Ubuntu. Он создан как надстройка над iptables, позволяющая настроить базовый файрвол буквально за несколько команд — без необходимости погружаться в сложный синтаксис. Это особенно удобно для администраторов, которые хотят сосредоточиться на задачах проекта, а не тратить часы на конфигурирование вручную.
Несмотря на простоту интерфейса, UFW поддерживает тонкую настройку — фильтрацию по IP, диапазонам портов, протоколам и сетевым интерфейсам. Это делает его подходящим решением не только для домашних серверов и тестовых машин, но и для продакшн-сред с высокими требованиями к безопасности.
Важно
UFW можно использовать как полноценный компонент схемы Zero Trust — когда доступ к сервисам открыт только тем, кому он действительно нужен, и только по тем протоколам, которые явно разрешены.
Использование UFW — разумный первый шаг к построению безопасной инфраструктуры. Особенно если вы работаете с веб-приложениями, базами данных или просто не хотите, чтобы ваш сервер оказался в ботнете. В дальнейшем вы можете надстроить над UFW дополнительные решения — например, fail2ban, WAF или VPN, — но базовая фильтрация на уровне портов и IP уже закроет до 80 % типичных угроз.
Зачем нужен файрвол на сервере
Любой сервер с публичным IP-адресом рано или поздно попадает в зону интереса автоматических сканеров, ботнетов и потенциальных атакующих. Это не вопрос известности проекта — в Интернете работают миллионы скриптов, которые в автоматическом режиме ищут открытые порты, стандартные уязвимости и неправильно настроенные службы. Часто — просто чтобы использовать сервер как промежуточное звено, источник вычислительной мощности или точку входа в инфраструктуру.
Файрвол — это своего рода цифровой «фейс-контроль», который отсекает нежелательные подключения ещё на подступах к системе.
Он позволяет:
- блокировать соединения с IP-адресов вне доверенного диапазона;
- ограничить доступ к чувствительным интерфейсам, например, к SSH, базе данных или админке сайта;
- оставить открытыми только те порты и протоколы, которые реально используются в работе.
UFW особенно удобен для настройки ограниченного SSH-доступа: можно разрешить подключение только с конкретного IP-адреса или подсети, что практически исключает брутфорс и сторонние попытки входа.
На этом функции файрвола не заканчиваются. В связке с логированием он помогает:
- отслеживать подозрительную сетевую активность;
- фиксировать попытки сканирования портов и подключения к закрытым службам;
- видеть, какие адреса систематически нарушают политику доступа.
И главное: файрвол не требует изменений в архитектуре или переписывания приложения. Он работает на уровне ядра, управляя сетевыми соединениями до того, как они дойдут до веб-сервера, базы данных или интерпретатора. Настроить его можно за 5–10 минут, а эффект для безопасности будет сопоставим с переходом на VPN или двухфакторную аутентификацию.
С практической точки зрения, особенно в российских реалиях, файрвол позволяет дополнительно:
- экономить трафик (актуально для тарифицируемых соединений);
- скрыть сервисы от автоматических сканеров;
- снизить риск попадания в списки скомпрометированных IP-адресов (что может повлиять на доступность сайта).
Важно
Настраивать файрвол стоит до установки и запуска веб-приложений. Это не защита «на всякий случай», а обязательный этап начальной конфигурации любого сервера.
Инструкция по установке и настройке UFW
Для работы с UFW не требуется глубоких знаний в области сетевой безопасности — установка и базовая настройка займут всего несколько минут. В этом разделе мы пошагово разберём, как проверить наличие UFW в системе, установить его при необходимости, задать политику по умолчанию и включить файрвол без риска потерять доступ к серверу.
Проверка наличия UFW и его установка
Во многих сборках Ubuntu UFW уже предустановлен. Чтобы проверить, установлен ли он, выполните:
sudo ufw status
Если команда не найдена, установите UFW с помощью:
sudo apt update && sudo apt install ufw
Если команда ufw status
вернёт сообщение о неизвестной команде, это значит, что UFW отсутствует в системе. Установка через apt
позволит добавить утилиту из официальных репозиториев Ubuntu. После этого вы сможете приступить к настройке файрвола и защитить сервер от несанкционированных подключений.
Предварительная настройка и запуск
Перед тем как включить файрвол, обязательно откройте доступ по SSH, иначе вы рискуете потерять подключение к серверу:
sudo ufw allow ssh
Если SSH работает на нестандартном порту, например 2222:
sudo ufw allow 2222/tcp
Задаём политику по умолчанию:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Включаем файрвол:
sudo ufw enable
Система выдаст предупреждение о возможной потере соединения. Если SSH уже разрешён, можно смело нажимать y.
Эти действия обеспечивают безопасный запуск файрвола без потери удалённого доступа к серверу. Вы заранее настраиваете базовые правила, задавая строгую политику входящих подключений и разрешая исходящие запросы. Такой стартовый набор позволяет сразу отсечь всё лишнее и перейти к более точной настройке доступа под задачи проекта.
Проверка текущих правил
Просмотр состояния UFW:
sudo ufw status verbose
Список с нумерацией:
sudo ufw status numbered
Проверка текущих правил позволяет убедиться, что файрвол работает корректно и активны только нужные разрешения. Это помогает избежать конфликтов и дублирования, особенно при внесении новых правил. Нумерованный список упрощает удаление и редактирование — вы точно видите, какое правило за что отвечает.
Разрешение популярных служб
UFW распознаёт стандартные имена служб:
sudo ufw allow http # порт 80
sudo ufw allow https # порт 443
sudo ufw allow ftp # порт 21
Либо указываем порты вручную:
sudo ufw allow 3306/tcp # MySQL
sudo ufw allow 5432/tcp # PostgreSQL
Разрешение популярных служб необходимо, чтобы обеспечить доступ к нужным сервисам — например, веб-сайту, базе данных или FTP-серверу. UFW упрощает настройку, позволяя использовать понятные имена вместо номеров портов. Это ускоряет конфигурацию и снижает риск ошибок при открытии нужных соединений.
Привязка к IP и подсетям
Разрешение доступа к SSH с конкретного IP:
sudo ufw allow from 192.168.1.100 to any port 22 proto tcp
Разрешение подсети:
sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp
Привязка к IP или подсети позволяет ограничить доступ только доверенными адресами, исключив все остальные подключения. Это существенно снижает риск взлома через SSH и другие критичные порты. Такой подход особенно важен для серверов, доступных из Интернета — он добавляет дополнительный уровень защиты поверх стандартных правил.
Работа с диапазонами портов
Если необходимо открыть несколько последовательных портов:
sudo ufw allow 3000:3010/tcp
Открытие диапазона портов удобно при работе с приложениями, которые используют несколько соседних портов — например, при тестировании, передаче данных или запуске контейнеров. Это позволяет задать правило одним действием вместо множества отдельных команд, а также упрощает управление доступом и ускоряет настройку сложных сервисов.
Запрет подключений
Блокировка IP:
sudo ufw deny from 203.0.113.100
Блокировка исходящего SMTP:
sudo ufw deny out 25
Запрет подключений позволяет вручную закрыть доступ с подозрительных IP-адресов или ограничить определённый трафик — например, отправку почты через SMTP. Это полезно для борьбы со спам-ботами, ограничений по политике безопасности или временной изоляции. Точные правила блокировки помогают контролировать поведение системы и устранять потенциальные риски до их реализации.
Удаление правил
Удаление по номеру:
sudo ufw status numbered
sudo ufw delete 2
Удаление по тексту:
sudo ufw delete allow 443
Удаление правил позволяет оперативно вносить изменения в конфигурацию, убирая устаревшие или ошибочные разрешения. Вы можете удалить правило по номеру из списка или по текстовому описанию, что удобно в разных сценариях. Этот гибкий подход помогает поддерживать порядок в правилах и исключает случайные уязвимости.
Расширенные настройки: интерфейсы и логи
Ограничение доступа по интерфейсу:
sudo ufw deny in on eth0 from 203.0.113.100
Включение логирования:
sudo ufw logging on
sudo ufw logging high
Просмотр логов:
sudo less /var/log/ufw.log
Расширенные настройки позволяют более точно контролировать поведение файрвола — например, ограничить доступ только на одном сетевом интерфейсе. Логирование помогает отслеживать сетевые события и быстро выявлять подозрительную активность или ошибки в конфигурации. Это особенно полезно на серверах с несколькими сетевыми подключениями и в случаях, когда важна прозрачность работы системы.
Сброс и отключение
Временное отключение:
sudo ufw disable
Полный сброс:
sudo ufw reset
Сброс и отключение UFW пригодятся при отладке, переезде сервиса или смене сетевой политики. Временное отключение даёт возможность внести изменения без риска потери подключения, а полный сброс очищает все правила, возвращая файрвол в исходное состояние. Это удобно, когда нужно быстро начать настройку с чистого листа.
Профили приложений
Многие сервисы добавляют свои профили после установки. Просмотр списка:
sudo ufw app list
Пример:
sudo ufw allow "Nginx Full"
Профили приложений упрощают настройку доступа для популярных сервисов, таких как веб-серверы, базы данных или почтовые клиенты. Вместо ручного указания портов вы используете готовое имя профиля, в котором уже прописаны все необходимые параметры. Это ускоряет настройку, снижает вероятность ошибки и делает правила более читаемыми.
Пример настройки для веб-сервера с MySQL
Используйте команды:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80,443/tcp # HTTP/HTTPS
sudo ufw allow from 192.168.0.0/24 to any port 3306
sudo ufw enable
Это минимальная, но эффективная конфигурация UFW для веб-сервера с базой данных MySQL, где:
- команды default deny incoming и default allow outgoing задают политику по умолчанию: все входящие подключения запрещены, все исходящие — разрешены;
- allow 22/tcp открывает доступ по SSH, чтобы вы могли управлять сервером удалённо;
- allow 80,443/tcp разрешает HTTP и HTTPS-трафик для работы веб-приложений;
- allow from 192.168.0.0/24 to any port 3306 открывает доступ к MySQL только с указанной локальной подсети — это ограничивает подключение к базе данных и защищает её от внешнего доступа;
- ufw enable активирует файрвол с заданными правилами.
Такая настройка подходит для большинства стандартных сценариев, где веб-сервер и база данных работают на одном VPS или в локальной сети.
Совет от практика
Создайте bash-скрипт с вашими типовыми правилами и храните его в приватном репозитории. Это позволит быстро развернуть защиту на новых VPS или после переустановки системы. Включите логирование и периодически проверяйте журнал: это помогает находить не только угрозы, но и ошибки в собственной конфигурации.
Заключение
UFW — это не просто «удобная обёртка» над iptables, а полноценный инструмент фильтрации сетевого трафика. Он позволяет быстро задать правила доступа, определить приоритеты, контролировать внешние подключения и устранять типичные уязвимости. Даже минимальная настройка — блокировка всего входящего с выборочным разрешением нужных портов — уже существенно укрепляет безопасность сервера. При этом UFW не требует глубоких знаний в администрировании и органично вписывается в рабочий процесс. Добавление правил, их удаление, включение логирования — всё это реализуется одной командой.
Рекомендуем начинать конфигурацию любого сервера именно с UFW. Это базовый уровень защиты, который можно реализовать за несколько минут, без дополнительных затрат и сложных зависимостей. Файрвол помогает обеспечить стабильность, безопасность и доступность вашего проекта в условиях публичной сети.
Читайте в блоге:
- Как узнать версию Ubuntu и ядра, и зачем это нужно
- Установка VPN на VPS с Ubuntu: как запустить собственный сервер
- Как установить и настроить веб-сервер Nginx на Ubuntu