UFW сообщает, что не находит профиль, соответствующий OpenSSH, и поиск причины ведёт прямо к серверу SSH. Это неверное направление: сообщение касается именованного определения межсетевого экрана и ничего не говорит о том, установлен ли sshd, запущен или слушает. Профиль приложения UFW — это список портов и протоколов с меткой. Чтение определения занимает одну команду и обычно завершает расследование.

Шаг 1: перечислите имена, которые UFW действительно знает

Спросите межсетевой экран, какие имена у него есть, прежде чем просить разрешить одно из них. Список берётся из профилей, установленных на этой машине, поэтому отсутствующее имя — факт об этой системе, а не о программном обеспечении, которое вы пытались защитить. Если имя есть, ошибка возникла из-за опечатки или устаревшего псевдонима в истории вашей оболочки.

ufw app list
ufw app info OpenSSH

Список короток при стандартной установке, и имена не являются именами пакетов. Профиль с именем OpenSSH может отсутствовать, хотя пакет openssh-server установлен, и обратное тоже возможно. Используйте точное имя, которое печатает список; имя VPN-профиля или ярлык рабочего стола с похожим написанием не является профилем приложения UFW. Если нужного имени нет, это и есть вывод, а следующий шаг — посмотреть, что должно его предоставлять.

Шаг 2: читайте определение, а не метку

Профиль — это файл в стиле INI в /etc/ufw/applications.d, с именем, заголовком, описанием и полем портов. Поле портов может перечислять несколько портов и транспортов, поэтому метка говорит меньше, чем определение. Руководство UFW описывает эти поля и операцию обновления приложений. Читайте файл, а не предполагайте, что имя означает один знакомый порт.

cat /etc/ufw/applications.d/openssh-server
ufw app info OpenSSH

Определение, содержащее 22/tcp, описывает TCP-порт 22 и ничего больше. Оно не доказывает, что демон на этой машине слушает там, и не охватывает второй порт, добавленный позже. Если демон работает в другом месте, профиль — это неверное разрешение, даже если его имя совпадает с продуктом. Сравните слушателя с определением, прежде чем разрешать любой из них.

ss -ltnp 'sport = :22'

Остановитесь, если определение и слушатель расходятся. Разрешение профиля, который называет порт, где никто не слушает, создаёт правило, которое выглядит как прогресс и ничего не защищает.

Шаг 3: отделите профиль от работающей службы

Разрешение именованного профиля не устанавливает, не запускает и не настраивает службу, а работающей службе не нужен упакованный профиль, чтобы быть доступной. Это отдельные решения, принадлежащие разным инструментам: менеджеру пакетов, менеджеру служб и межсетевому экрану. Отношение к ним как к одному — это то, как люди устанавливают ненужный сервер, чтобы появилось символическое имя.

Для VPN-сервера разделение продолжается после разрешения внешнего слушателя. Разрешение для порта зашифрованного транспорта не включает пересылку в ядре, не добавляет правило NAT и не даёт пользователям туннеля доступ к LAN. Каждое из этого — отдельная политика со своим обзором. Профиль, названный в честь продукта VPN, описывает только перечисленные порты, а остальную часть конфигурации сервера по-прежнему писать вам.

Если профиль отсутствует и он нужен, проверенное явное правило порта или локальный профиль в applications.d — оба законны. Устанавливать пакет, который вам не нужен, — нет.

Шаг 4: сохраните путь назад перед перезагрузкой межсетевого экрана

Перед любым изменением правила убедитесь, что у вас есть второй путь в машину: консоль, адрес вне полосы или запланированный откат. Затем прочитайте набор правил и политику по умолчанию, потому что отказ по умолчанию без правила SSH — классический способ заблокировать себя снаружи во время тестирования. Меняйте по одному правилу за раз и читайте подтверждение, которое печатает UFW. Сохранённое правило, активное правило и доступная служба — это три разных наблюдения.

ufw status verbose
ufw allow 22/tcp
ufw app update OpenSSH

После изменения проверьте разрешённое соединение и один путь, который должен остаться запрещённым. Тест отказа так же важен, как тест разрешения, потому что правило шире задуманного проходит первый тест и проваливает второй. Запишите имя профиля, порты, которые он содержал, и слушателя, с которым вы сверялись.

Контрольный список заканчивается, когда имя существует или намеренно заменено, определение соответствует реальному слушателю, служба управляется отдельно, и вы проверили как разрешённый, так и запрещённый путь, имея под рукой путь восстановления. Имя в списке не является ни одним из этого.

Похожие статьи