Перейти к содержимому

Брандмауэр на VPS: базовые правила

Брандмауэр — фильтр входящих соединений: оставляем только нужные порты (SSH, веб), остальное закрываем. Стандартный инструмент Ubuntu/Debian — ufw, тонкий слой над iptables. Правило № 1: сначала разрешите SSH, потом включайте брандмауэр — иначе забаните себя.

Окно терминала
# 1. Разрешить SSH (ПОСЛЕ ЭТОГО ничего не сломается)
ufw allow 22/tcp # или ваш порт для NAT-серверов
# 2. Разрешить веб
ufw allow 80/tcp # http
ufw allow 443/tcp # https
# 3. Включить фильтр
ufw enable
ufw status verbose

После enable всё, что не разрешено явно, отклоняется — сервер сразу закрыт по периметру.

Веб-сервер с доменом в Xipher: порт веб-сервера внутри + SSH. Трафик от сети Xipher приходит на ваш порт origin — открывать сотни адресов не нужно.

NAT-сервер: разрешаете порты своих сервисов внутри ВМ (то, что слушает ваш софт). Внешние NAT-порты проброшены нодой — ufw фильтрует уже на вашем сервере: порт, который закрыт в ufw, не ответит даже через проброс.

Закрыть админку от всех, кроме себя: ufw allow from ВАШ_IP to any port 5432 — так закрывают PostgreSQL, Redis и прочие «внутренние» сервисы.

Окно терминала
ufw status numbered # пронумерованный список правил
ufw delete 2 # удалить правило №2 из списка
ufw allow 8443/tcp # добавить порт
ufw deny from 203.0.113.50 # забанить адрес
ufw reset # выключить и снести все правила
Симптом Причина Лечение
Включил ufw — SSH пропал Не разрешили порт SSH до enable VNC-консоль → ufw allow 22/tcp
Сайт работает напрямую, но не через Xipher Закрыт порт origin Откройте порт origin в ufw
Сайт через Xipher не работает Закрыли адреса сети Разрешите порт origin всем — правила сети Xipher добавят сами себя заголовками
ufw: command not found Не установлен apt install ufw

ufw — обёртка над iptables/nftables; всё, что делает ufw, можно сделать и напрямую (iptables -A INPUT -p tcp --dport 22 -j ACCEPT). Для новичка ufw безопаснее: правила читаются человеком, ошибиться сложнее. Если ваш софт требует своих iptables-правил (Docker и т. п.), ufw с ним сосуществует, но у Docker свои цепочки — правила для контейнеров добавляются в DOCKER-USER.

Брандмауэр обязателен?

Нет, но хорошая практика: сервис, который слушает 0.0.0.0 «на всякий случай», перестаёт быть сюрпризом. Пару правил ufw — и периметр закрыт.

Нужно ли открывать порты для работы NAT-пробросов?

Да: нода доставляет пакет на ваш порт, а ufw решает на своей стороне. Закрытый в ufw порт не ответит и через проброс.

Забаню сам себя — что делать?

VNC-консоль в панели работает мимо сети сервера: входите через неё и правьте ufw. Поэтому правило № 1 — SSH разрешаем первым.