Настройка файрвола UFW в Ubuntu

2 мин
Содержание
  1. Устанавливаем и проверяем статус
  2. Важно: сначала разрешаем SSH
  3. Разрешаем веб-трафик
  4. Задаём политику по умолчанию и включаем
  5. Полезные команды на каждый день

UFW (Uncomplicated Firewall) — обёртка над iptables/nftables, штатно идущая в Ubuntu. Разберём базовую настройку файрвола для типового веб-сервера: SSH + Nginx (80/443), всё остальное закрыто по умолчанию.

Устанавливаем и проверяем статус

В большинстве версий Ubuntu UFW уже стоит из коробки, но на всякий случай:

bash
sudo apt install ufw -y
sudo ufw status verbose

Важно: сначала разрешаем SSH

Это самый частый способ отрубить себе доступ к серверу — включить UFW с политикой «запретить всё» и забыть разрешить SSH. Прежде чем включать файрвол, обязательно разрешите порт, на котором у вас висит SSH:

bash
# если SSH на стандартном 22 порту
sudo ufw allow 22/tcp

# если SSH перевешен на нестандартный порт, например 2222
sudo ufw allow 2222/tcp

Разрешаем веб-трафик

Для Nginx в Ubuntu есть готовые профили UFW, можно разрешать не по номеру порта, а по имени профиля:

bash
sudo ufw app list

# посмотреть, что входит в профиль
sudo ufw app info "Nginx Full"

# разрешить HTTP + HTTPS одной командой
sudo ufw allow "Nginx Full"

Если сертификата ещё нет и HTTPS пока не поднят, можно временно разрешить только HTTP:

bash
sudo ufw allow "Nginx HTTP"

Задаём политику по умолчанию и включаем

bash
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable

Система спросит подтверждение, что может порвать текущее SSH-соединение — раз мы уже разрешили нужный порт выше, отвечаем «y».

Проверяем итоговый список правил:

bash
sudo ufw status numbered

Полезные команды на каждый день

bash
# удалить правило по номеру (номер смотрим в status numbered)
sudo ufw delete 3

# разрешить доступ конкретному IP на конкретный порт (например, к панели БД)
sudo ufw allow from 203.0.113.10 to any port 3306

# ограничить количество попыток подключения (защита от брутфорса SSH)
sudo ufw limit 22/tcp

# полностью выключить файрвол
sudo ufw disable

# посмотреть логи блокировок
sudo tail -f /var/log/ufw.log

ufw limit — недооценённая штука: она не просто открывает порт, а автоматически блокирует IP, если с него идёт больше 6 попыток подключения за 30 секунд. Для SSH, торчащего в интернет, это простая и бесплатная защита от перебора паролей без установки fail2ban.

Статья помогла?

Нашли ошибку или устаревшую команду? Выделите текст и нажмите Ctrl+Enter.

Комментарии

Комментариев пока нет.

Код можно выделять `обратными кавычками`. Комментарии проверяются перед публикацией.