- Home »

Основы UFW: Часто используемые правила и команды фаервола в Linux
Настройка файрвола — это одна из первых задач, которую приходится решать при развёртывании сервера. UFW (Uncomplicated Firewall) — это фронтенд для iptables, который делает работу с фаерволом намного проще и понятнее. Если вы устали от бесконечных правил iptables и хотите что-то более человечное, то UFW — это именно то, что нужно.
В этой статье мы разберём основы UFW: от базовых команд до сложных правил, посмотрим на практические примеры и узнаем, как автоматизировать процесс настройки. Независимо от того, настраиваете ли вы веб-сервер, базу данных или что-то более экзотическое, правильная конфигурация файрвола — это основа безопасности вашего сервера.
Что такое UFW и как он работает
UFW расшифровывается как “Uncomplicated Firewall” и представляет собой удобную обёртку над iptables. Он был создан для Ubuntu, но теперь доступен практически во всех современных Linux-дистрибутивах. Главная идея — сделать управление файрволом интуитивно понятным.
Под капотом UFW генерирует правила iptables, но вместо запоминания сложного синтаксиса, вы используете простые команды вроде:
ufw allow ssh
ufw deny 80
ufw allow from 192.168.1.0/24
UFW работает по принципу “отклонить всё, разрешить только необходимое” (default deny). Это означает, что по умолчанию весь входящий трафик блокируется, а исходящий — разрешается.
Установка и первоначальная настройка
В Ubuntu UFW обычно уже установлен, но если его нет, то устанавливаем:
sudo apt update
sudo apt install ufw
Для CentOS/RHEL:
sudo yum install ufw
# или для новых версий
sudo dnf install ufw
Проверяем статус:
sudo ufw status
По умолчанию UFW отключен. Перед включением обязательно добавьте правило для SSH, иначе можете заблокировать себе доступ к серверу:
sudo ufw allow ssh
sudo ufw allow 22/tcp
Включаем UFW:
sudo ufw enable
Основные команды UFW
Вот набор команд, которые вы будете использовать чаще всего:
Управление состоянием
# Включить UFW
sudo ufw enable
# Отключить UFW
sudo ufw disable
# Перезагрузить UFW
sudo ufw reload
# Сбросить все правила
sudo ufw --force reset
# Проверить статус
sudo ufw status
sudo ufw status verbose
sudo ufw status numbered
Базовые правила
# Разрешить порт
sudo ufw allow 80
sudo ufw allow 443/tcp
sudo ufw allow 53/udp
# Заблокировать порт
sudo ufw deny 23
sudo ufw deny 135/tcp
# Разрешить сервис по имени
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
# Удалить правило
sudo ufw delete allow 80
sudo ufw delete deny 23
Продвинутые правила
# Разрешить с определённого IP
sudo ufw allow from 192.168.1.100
# Разрешить с подсети
sudo ufw allow from 192.168.1.0/24
# Разрешить с IP на определённый порт
sudo ufw allow from 192.168.1.100 to any port 22
# Разрешить между интерфейсами
sudo ufw allow in on eth0 to any port 80
sudo ufw allow out on eth1 to any port 443
Практические примеры настройки
Веб-сервер (Apache/Nginx)
# Базовая настройка для веб-сервера
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
# Альтернативный способ
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Если используете нестандартные порты
sudo ufw allow 8080/tcp
sudo ufw allow 8443/tcp
База данных MySQL/PostgreSQL
# MySQL только для локальной сети
sudo ufw allow from 192.168.1.0/24 to any port 3306
# PostgreSQL с конкретного IP
sudo ufw allow from 10.0.0.50 to any port 5432
# Запрет доступа к базе из интернета
sudo ufw deny 3306
sudo ufw deny 5432
SSH с повышенной безопасностью
# Ограничить SSH только для администраторов
sudo ufw allow from 203.0.113.0/24 to any port 22
sudo ufw allow from 198.51.100.50 to any port 22
# Для нестандартного SSH порта
sudo ufw allow from 192.168.1.0/24 to any port 2222
# Ограничение по rate limiting (встроенная защита от брутфорса)
sudo ufw limit ssh
sudo ufw limit 22/tcp
Работа с профилями приложений
UFW поддерживает профили приложений, что упрощает настройку популярных сервисов. Посмотрим доступные профили:
sudo ufw app list
Пример вывода:
Available applications:
Apache
Apache Full
Apache Secure
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Использование профилей:
# Разрешить Apache (только HTTP)
sudo ufw allow Apache
# Разрешить Apache Full (HTTP + HTTPS)
sudo ufw allow "Apache Full"
# Разрешить Nginx Full
sudo ufw allow "Nginx Full"
# Информация о профиле
sudo ufw app info "Apache Full"
Логирование и мониторинг
UFW поддерживает несколько уровней логирования:
# Включить базовое логирование
sudo ufw logging on
# Уровни логирования
sudo ufw logging low
sudo ufw logging medium
sudo ufw logging high
sudo ufw logging full
# Отключить логирование
sudo ufw logging off
Логи UFW обычно находятся в:
# Просмотр логов
sudo tail -f /var/log/ufw.log
# Или через journalctl
sudo journalctl -u ufw -f
Распространённые ошибки и их решения
Проблема | Причина | Решение |
Заблокировали себе SSH | Включили UFW без правила для SSH | Получить консольный доступ через VNC или физический доступ |
Правила не работают | UFW отключен или конфликт с iptables | Проверить статус: sudo ufw status |
Дублирование правил | Повторное добавление одного правила | UFW автоматически игнорирует дубли |
Медленная работа | Слишком много правил или неоптимальный порядок | Пересмотреть правила, поместить частые в начало |
Автоматизация и скрипты
Для автоматизации развёртывания можно создать скрипт с базовыми правилами:
#!/bin/bash
# ufw-setup.sh
# Сброс правил
sudo ufw --force reset
# Установка политики по умолчанию
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Базовые правила
sudo ufw allow ssh
sudo ufw limit ssh
sudo ufw allow http
sudo ufw allow https
# Специфичные правила для окружения
if [ "$1" = "web" ]; then
sudo ufw allow 8080/tcp
sudo ufw allow 8443/tcp
elif [ "$1" = "db" ]; then
sudo ufw allow from 192.168.1.0/24 to any port 3306
sudo ufw allow from 192.168.1.0/24 to any port 5432
fi
# Логирование
sudo ufw logging medium
# Включение UFW
sudo ufw --force enable
echo "UFW configuration completed!"
Использование скрипта:
chmod +x ufw-setup.sh
./ufw-setup.sh web
./ufw-setup.sh db
Интеграция с другими инструментами
Fail2Ban
UFW отлично работает с Fail2Ban для автоматической блокировки атакующих IP:
# Установка Fail2Ban
sudo apt install fail2ban
# Настройка UFW для работы с Fail2Ban
# В /etc/fail2ban/jail.local добавить:
[DEFAULT]
banaction = ufw
Docker
Docker может конфликтовать с UFW, обходя его правила. Для решения проблемы:
# В /etc/default/ufw изменить:
DEFAULT_FORWARD_POLICY="ACCEPT"
# В /etc/ufw/before.rules добавить:
*filter
:ufw-user-forward - [0:0]
:ufw-docker-logging-deny - [0:0]
:DOCKER-USER - [0:0]
-A DOCKER-USER -j ufw-user-forward
-A DOCKER-USER -j RETURN
COMMIT
Сравнение с альтернативами
Решение | Простота | Функциональность | Производительность |
UFW | Высокая | Средняя | Хорошая |
iptables | Низкая | Максимальная | Отличная |
firewalld | Средняя | Высокая | Хорошая |
pfSense | Средняя | Максимальная | Отличная |
Интересные факты и нестандартные применения
UFW можно использовать не только для классической защиты сервера:
- Rate limiting встроенный: Команда
ufw limit
автоматически блокирует IP при превышении 6 подключений за 30 секунд - Геоблокировка: Интеграция с GeoIP для блокировки стран:
ufw allow from [диапазон российских IP]
- Временные правила: Можно создавать правила через cron для временного доступа
- Профили приложений: Создание собственных профилей для нестандартных приложений
Мониторинг и отладка
Полезные команды для диагностики:
# Показать все правила с номерами
sudo ufw status numbered
# Показать сырые правила iptables
sudo ufw show raw
# Показать добавленные правила
sudo ufw show added
# Показать правила для конкретного интерфейса
sudo ufw show listening
# Тест правил (dry run)
sudo ufw --dry-run enable
Рекомендации по безопасности
- Принцип минимальных привилегий: Открывайте только необходимые порты
- Используйте подсети: Ограничивайте доступ по IP-диапазонам
- Регулярный аудит: Периодически проверяйте актуальность правил
- Логирование: Всегда включайте логирование для мониторинга
- Резервное копирование: Сохраняйте конфигурацию UFW в системе контроля версий
Заключение
UFW — это отличный баланс между простотой использования и функциональностью. Он идеально подходит для большинства серверных задач и значительно упрощает жизнь администратора. Хотя для сложных сценариев может потребоваться прямая работа с iptables, в 90% случаев UFW справляется отлично.
Основные преимущества UFW:
- Простой и понятный синтаксис
- Хорошая интеграция с системными сервисами
- Встроенная защита от брутфорса
- Удобные профили приложений
- Надёжная работа “из коробки”
Рекомендую использовать UFW для всех стандартных серверных задач — от простых веб-серверов до сложных микросервисных архитектур. Для развёртывания собственных серверов обратите внимание на VPS решения или выделенные серверы, где можно полноценно экспериментировать с настройками файрвола.
Помните: правильно настроенный файрвол — это первая линия обороны вашего сервера. UFW делает эту задачу максимально простой и эффективной.
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.