Пошаговая настройка фаервола ufw
Запустить на сервере одной командой (сначала проверьте содержимое скрипта ниже):
curl -sSL https://cp.lv/scripts/nastrojka-ufw-poshagovo.sh | sudo bash…или через wget:
wget -qO- https://cp.lv/scripts/nastrojka-ufw-poshagovo.sh | sudo bashСодержимое скрипта nastrojka-ufw-poshagovo.sh:
#!/usr/bin/env bash
# Базовая настройка firewall ufw (Ubuntu/Debian)
set -euo pipefail
# 1. Установка
sudo apt update && sudo apt install -y ufw
# 2. Базовые политики: всё входящее — запрет, исходящее — разрешено
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 3. ВАЖНО: разрешаем SSH до включения, иначе потеряем доступ
sudo ufw allow OpenSSH
sudo ufw limit OpenSSH
# 4. Веб-порты HTTP и HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 5. Логирование и включение (--force — без интерактивного подтверждения)
sudo ufw logging on
sudo ufw --force enable
# 6. Проверка
sudo ufw status verbose
echo "Готово: firewall включён, открыты SSH, HTTP и HTTPS."
ufw (Uncomplicated Firewall) — простая обёртка над iptables. Базовая настройка занимает четыре команды: запретить весь входящий трафик, разрешить исходящий, открыть SSH и включить firewall. Ниже — полная последовательность с проверкой, чтобы не потерять доступ к серверу.
Что делает ufw
По умолчанию сервер принимает подключения на все открытые порты. ufw позволяет явно указать, какие порты доступны извне, а всё остальное — блокировать. Это первый рубеж защиты любого VPS.
Шаг 1. Установка
На Ubuntu ufw обычно уже установлен. Если нет:
apt update
apt install -y ufw
Шаг 2. Базовые политики
ufw default deny incoming
ufw default allow outgoing
Теперь весь входящий трафик блокируется, исходящий — разрешён.
Шаг 3. ВАЖНО: разрешите SSH до включения
Если включить firewall без правила для SSH, вы потеряете доступ:
ufw allow OpenSSH
Или по номеру порта (если SSH на нестандартном порту):
ufw allow 2222/tcp
Шаг 4. Веб-порты
Для сайта или API откройте HTTP и HTTPS:
ufw allow 80/tcp
ufw allow 443/tcp
Можно использовать профили приложений:
ufw app list
ufw allow 'Nginx Full'
Шаг 5. Включение
ufw enable
Подтвердите y. Проверьте статус:
ufw status verbose
Вывод покажет активные правила и политики по умолчанию.
Ограничение доступа по IP
Разрешить SSH только с вашего IP — сильно снижает риск брутфорса:
ufw allow from 203.0.113.10 to any port 22 proto tcp
Разрешить целую подсеть:
ufw allow from 192.168.1.0/24
Запретить конкретный IP:
ufw deny from 198.51.100.5
Защита SSH от перебора
Правило limit блокирует IP, который создаёт больше 6 подключений за 30 секунд:
ufw limit OpenSSH
Это хорошее дополнение к fail2ban.
Управление правилами
Показать правила с номерами:
ufw status numbered
Удалить правило по номеру:
ufw delete 3
Удалить по описанию:
ufw delete allow 80/tcp
Логирование
ufw logging on
ufw logging medium
Логи пишутся в /var/log/ufw.log. Смотреть в реальном времени:
tail -f /var/log/ufw.log
Полезные команды
| Команда | Действие |
|---|---|
ufw status verbose |
Подробный статус |
ufw reload |
Перечитать правила |
ufw disable |
Выключить firewall |
ufw reset |
Сбросить все правила |
Профили приложений
ufw хранит готовые профили портов для популярных сервисов. Посмотреть список:
ufw app list
Детали профиля:
ufw app info 'Nginx Full'
Использование профилей делает правила читаемыми: вместо 80,443/tcp — понятное имя Nginx Full.
Настройка IPv6
Если у сервера есть IPv6, убедитесь, что ufw управляет и им. В /etc/default/ufw:
IPV6=yes
После изменения перезапустите firewall:
ufw disable && ufw enable
Правила allow/deny будут применяться к обоим протоколам автоматически.
Порядок правил имеет значение
ufw обрабатывает правила сверху вниз и останавливается на первом совпадении. Поэтому запрещающие правила для конкретных IP нужно вставлять ВЫШЕ общих разрешающих. Вставить правило на позицию 1:
ufw insert 1 deny from 198.51.100.5
Проверьте порядок командой ufw status numbered.
Резервная копия и восстановление
Правила ufw лежат в текстовых файлах. Сохраните их:
cp -r /etc/ufw /root/ufw-backup
При переносе на новый сервер верните файлы и перезапустите ufw. Это быстрее, чем вводить десятки правил заново.
Частые вопросы
Не потеряю ли я доступ при включении?
Только если забыли ufw allow OpenSSH. Всегда открывайте SSH-порт до ufw enable.
ufw и iptables — можно вместе? ufw управляет iptables за вас. Ручные правила iptables могут конфликтовать — используйте что-то одно.
Как открыть диапазон портов?
ufw allow 6000:6010/tcp откроет порты с 6000 по 6010.
Нужен ли ufw, если есть fail2ban? Да, это разные уровни: ufw закрывает лишние порты, fail2ban банит нарушителей на открытых. Работают вместе.
Как временно выключить firewall для отладки?
ufw disable, а после проверки — ufw enable. Правила сохраняются.
Firewall — обязательный минимум безопасности. Разверните проект на VPS для VPN и безопасности или обычной аренде VPS. Полную настройку сделает Администрирование серверов.
