Пароли из двадцати символов, которые меняют ежемесячно и хранят в сейфе, не превращают сервер PPTP с MS-CHAPv2 в современный VPN. Пароль — это вход в обмен, слабость которого находится в самом обмене. Это руководство для того, кто унаследовал такой сервер и должен перевести пользователей с него, не отрезав площадку, которая от него зависит. Выполняйте шаги по порядку, потому что каждый оставляет запись, которая понадобится, когда кто-нибудь спросит, почему доступ внезапно изменился.

Запишите стек, прежде чем что-либо трогать

Три слоя сливаются в слово PPTP, и каждый ломается по-своему. Туннель — это сам PPTP, GRE плюс TCP 1723. Аутентификация — это тот метод PPP, который предлагает сервер, здесь MS-CHAPv2. Защита канала — MPPE, ключи которой выводятся из того самого обмена аутентификации. Если назвать все три, позднейшее исправление не попадёт не на тот слой.

Читайте живую конфигурацию, а не доверяйте вики-странице, и запишите файл, слушателя и последние сеансы, прошедшие аутентификацию.

grep -RniE 'mschap|mppe|require-mppe' /etc/ppp/options.pptpd /etc/pptpd.conf
ss -lntp 'sport = :1723'
journalctl -u pptpd -n 40 --no-pager

В роли удалённого доступа Windows та же инвентаризация получается двумя командами, и вторая важна, потому что роль может объявлять несколько методов сразу, а клиенты в поле всегда договариваются только о самом слабом.

Get-VpnAuthProtocol
netstat -ano | findstr :1723

Решите, что туннель несёт сегодня на самом деле

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

Затем спросите, что получит злоумышленник, который может наблюдать за обменом при входе или влиять на него. В случае MS-CHAPv2 ответ включает материал, позволяющий офлайн восстановить пароль пользователя, и именно поэтому длина и ротация не исправляют проект: восстановленный секрет действителен в каждой системе, где пользователь применил его повторно.

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

Ни короткий обеденный перерыв, ни малое число пользователей не превращают криптографическое свойство в политическое.

Проведите миграцию в одном окне обслуживания

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

sudo systemctl disable --now pptpd
sudo ss -lntp | grep -E ':(1723|1194|51820)\b'
sudo nft list ruleset | grep -i gre

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

Обращайтесь с учётными данными отдельно от конфигурации. Удаление профиля клиента — не отзыв, а учётная запись, которая всё ещё аутентифицируется в другом месте, не выведена из эксплуатации.

Проверьте, что замена выполняет ту работу, которую выполнял PPTP

Контрольный список — не «подключается ли». Он о том, держатся ли при замене аутентификация, выдача адресов, разрешение DNS, выбор маршрута, поведение при переподключении и проверка партнёра. Проверьте каждый пункт на пилотном устройстве, в этом порядке, и запишите наблюдаемый результат рядом с ожиданием.

ip -4 addr show tun0
ip route get 198.51.100.23
resolvectl query intranet.example.net

Адрес на интерфейсе доказывает, что согласование завершилось. Он не доказывает, что удалённая сторона разрешила ожидаемый вами маршрут, а запрос выше отвечает только за этот хост, не за пересылаемую LAN. Ответ резолвера доказывает доступность резолвера, а не то, что политика разделённого DNS отправляет туда правильные имена.

Переподключение проверяйте последним, потому что именно там большинство замен деградирует: усыпите ноутбук, смените сети и убедитесь, что туннель восстанавливается, не оставляя устаревших маршрутов.

Откат, отзыв и запись, которую вы оставляете

Откат восстанавливает сервис; он не восстанавливает безопасность, и эту разницу нужно произнести вслух до открытия окна. Если новый путь не удался, верните пользователей через вторую современную оконечную точку или временный шлюз, а не через повторное включение PPTP для всех. Сохранение одного аварийного пути на старом протоколе расширяет поверхность атаки, которую вы только что задокументировали.

После перехода отзовите учётные записи, которые аутентифицировались через PPTP, дайте их сохранённым профилям истечь и подтвердите, что правило GRE исчезло с каждого периферийного устройства, включая копию аварийного восстановления, которую никто не помнит.

Оставьте короткую запись: найденные протоколы, дату остановки каждого слушателя, версии клиентов, которые поддерживает замена, и владельца, который может снова открыть решение. Гигиена паролей после этого по-прежнему важна, но как гигиена на протоколе, который её заслуживает, а не как аргумент сохранять старый живым.

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