Как настроить фаервол с помощью UFW на Ubuntu: Полное руководство
Фаервол — это важный инструмент для обеспечения безопасности серверов, особенно если вы используете виртуальный сервер (VDS/VPS). Он контролирует входящий и исходящий сетевой трафик, защищая ваш сервер от несанкционированного доступа и атак. В этой статье мы разберем, что такое фаервол, зачем он нужен, и как настроить его на Ubuntu с помощью утилиты UFW (Uncomplicated Firewall). Статья ориентирована на пользователей VPS/VDS, которые хотят защитить свои серверы, не углубляясь в сложные сетевые конфигурации.
Что такое фаервол?
Фаервол (или межсетевой экран) — это программное или аппаратное средство, которое фильтрует сетевой трафик на основе заданных правил. Он определяет, какие соединения разрешены, а какие заблокированы, защищая сервер от угроз, таких как DDoS-атаки, попытки взлома или нежелательный доступ.
На серверах с Ubuntu часто используется UFW — простая и интуитивно понятная утилита для управления iptables, которая подходит как для новичков, так и для опытных администраторов. UFW позволяет быстро настроить фаервол без необходимости разбираться в сложных командах iptables.
Почему фаервол важен для VPS/VDS?
VPS/VDS-серверы часто используются для хостинга веб-приложений, баз данных, почтовых серверов и других сервисов, которые могут стать мишенью для злоумышленников. Без фаервола ваш сервер открыт для всех входящих соединений, что увеличивает риск:
-
Несанкционированного доступа через SSH или другие сервисы.
-
Атак на уязвимые порты.
-
Перегрузки сервера из-за DDoS-атак.
UFW помогает ограничить доступ к серверу, разрешая только необходимые соединения, например, для веб-сервера (порты 80 и 443) или SSH (порт 22).
Установка UFW на Ubuntu
UFW по умолчанию установлен на большинстве современных версий Ubuntu (например, 20.04, 22.04 или 24.04). Если он отсутствует, его можно установить с помощью следующей команды:
sudo apt update
sudo apt install ufw
После установки проверьте статус UFW:
sudo ufw status
Если UFW неактивен, вы увидите сообщение: Status: inactive.
Основные шаги для настройки UFW
Настройка UFW состоит из нескольких простых шагов. Мы рассмотрим процесс, который подходит для большинства сценариев использования VPS/VDS.
1. Сброс настроек UFW (опционально)
Если вы ранее экспериментировали с UFW, рекомендуется сбросить настройки, чтобы начать с чистого листа:
sudo ufw reset
Эта команда удалит все существующие правила, но будьте осторожны: она может отключить текущие соединения, если фаервол уже активен.
2. Установка политики по умолчанию
По умолчанию рекомендуется запретить все входящие соединения и разрешить все исходящие. Это минимизирует риск нежелательного доступа:
sudo ufw default deny incoming
sudo ufw default allow outgoing
-
deny incoming — блокирует все входящие соединения, если они не разрешены явно.
-
allow outgoing — разрешает серверу инициировать исходящие соединения (например, для обновлений или запросов).
3. Разрешение необходимых портов
Теперь добавьте правила для сервисов, которые должны быть доступны. Например:
-
SSH (порт 22): Для удаленного управления сервером.
sudo ufw allow ssh
Или, если вы используете нестандартный порт для SSH (например, 2222):
sudo ufw allow 2222/tcp
-
Веб-сервер (HTTP/HTTPS): Для хостинга сайтов.
sudo ufw allow http
sudo ufw allow https
Или явно укажите порты:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
-
Другие сервисы: Если вы используете, например, почтовый сервер (Postfix, Dovecot), добавьте соответствующие порты:
sudo ufw allow 25/tcp # SMTP
sudo ufw allow 143/tcp # IMAP
sudo ufw allow 993/tcp # IMAPS
4. Ограничение соединений (опционально)
Для защиты от брутфорс-атак можно ограничить количество соединений. Например, ограничим SSH до 6 попыток за 30 секунд:
sudo ufw limit ssh
Это полезно для сервисов, которые часто становятся мишенью злоумышленников.
5. Включение UFW
Перед включением UFW убедитесь, что вы разрешили доступ по SSH, чтобы не потерять соединение с сервером:
sudo ufw enable
Вы увидите предупреждение, что активация может прервать существующие соединения. Если вы настроили правила для SSH, это безопасно.
Проверьте статус:
sudo ufw status
Пример вывода:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
22/tcp LIMIT Anywhere
6. Управление правилами
Если нужно удалить правило, сначала посмотрите список пронумерованных правил:
sudo ufw status numbered
Удалите правило по его номеру, например:
sudo ufw delete 2
Чтобы отключить UFW (не рекомендуется, если сервер в Интернете):
sudo ufw disable
Полезные советы для работы с UFW
-
Логирование: Включите логирование, чтобы отслеживать заблокированные соединения:
sudo ufw logging on
Логи можно найти в /var/log/ufw.log.
-
Ограничение по IP: Если вы хотите разрешить доступ только с определенного IP-адреса (например, вашего офиса):
sudo ufw allow from 192.168.1.100 to any port 22
-
Резервное копирование правил: UFW хранит правила в файлах /etc/ufw/. Сделайте резервную копию перед внесением изменений:
sudo cp -r /etc/ufw /etc/ufw_backup
-
Проверка перед включением: Если вы не уверены в своих правилах, используйте "сухой запуск":
sudo ufw --dry-run enable
Распространенные ошибки и как их избежать
-
Потеря доступа по SSH: Всегда проверяйте, что порт SSH (обычно 22) разрешен, прежде чем включать UFW. Если вы используете нестандартный порт, укажите его явно.
-
Конфликты правил: Если вы добавляете правило, которое противоречит существующему, UFW применит первое подходящее правило. Проверяйте порядок с помощью sudo ufw status numbered.
-
Забытые сервисы: Убедитесь, что вы разрешили все необходимые порты для ваших приложений (например, 3306 для MySQL или 5432 для PostgreSQL).
Заключение
UFW — это мощный и простой инструмент для настройки фаервола на Ubuntu, который идеально подходит для пользователей VPS/VDS. Следуя описанным шагам, вы можете быстро защитить свой сервер, разрешив только необходимые соединения и минимизировав риски. Регулярно проверяйте логи и обновляйте правила в соответствии с потребностями ваших приложений.
Если у вас есть дополнительные вопросы или вы хотите настроить более сложные правила, напишите в комментариях на нашем блоге, и мы поможем!