Что было. На сервере с Ubuntu 16.04 администратор выполнил ufw enable. Система предупредила, что команда может прервать SSH-сессию; он подтвердил. Сессия оборвалась, сайты стали недоступны. После перезагрузки ufw оказался выключен (правила не были сохранены как включённые), доступ вернулся, но включить брандмауэр он так и боялся.
Почему. ufw по умолчанию запрещает все входящие соединения. Если до включения не добавить правило для SSH, первым же действием он выгоняет вас с сервера. Предупреждение перед enable именно об этом. Участники предложили сброс к настройкам по умолчанию (ufw reset), затем ufw allow ssh и только потом ufw enable; итог автор не подтвердил.
Правильный порядок для удалённой машины.
- Открыть консоль виртуальной машины из панели управления во второй вкладке: она не зависит от брандмауэра.
- Посмотреть, на каком порту слушает SSH:
ss -ltnp | grep sshd. Если порт нестандартный,ufw allow sshне поможет: нуженufw allow 2222/tcp. - Добавить правила для SSH и для сервисов, которые должны быть доступны снаружи:
ufw allow ssh,ufw allow 80,443/tcp. - Проверить список до включения:
ufw show added. - Включить:
ufw enable. Текущая SSH-сессия не рвётся, если правило для её порта есть. - Проверить снаружи, что новая SSH-сессия открывается, и только после этого закрывать старую.
Дополнительные меры. Ограничить SSH по адресам, если они постоянные: ufw allow from 203.0.113.0/24 to any port 22 proto tcp. Включить защиту от перебора: ufw limit ssh. И помнить, что опубликованные порты Docker ufw не видит, об этом есть отдельная тема.
Если уже отрезало. Консоль из панели управления → ufw allow ssh (или свой порт) → ufw status. Отключать брандмауэр целиком не обязательно.
Настройка ufw описана в документации Ubuntu Server.