Hasła dwudziestoznakowe, zmieniane co miesiąc i przechowywane w sejfie, nie czynią serwera PPTP z MS-CHAPv2 nowoczesnym VPN. Hasło jest wejściem do wymiany, której słabość tkwi w samej wymianie. Ten runbook jest dla tego, kto odziedziczył ten serwer i musi przenieść użytkowników, nie odcinając witryny, która od niego zależy. Wykonaj kroki po kolei, bo każdy zostawia zapis, którego będziesz potrzebować, gdy ktoś zapyta, dlaczego dostęp nagle się zmienił.

Zapisz stos, zanim czegokolwiek dotkniesz

Trzy warstwy są zwinięte w słowo PPTP i każda zawodzi na swój sposób. Tunel to sam PPTP, GRE plus TCP 1723. Uwierzytelnianie to metoda PPP oferowana przez serwer, tutaj MS-CHAPv2. Ochrona łącza to MPPE, którego klucze pochodzą z tej wymiany uwierzytelniania. Nazwanie wszystkich trzech zapobiega temu, by późniejsza poprawka wylądowała na niewłaściwej warstwie.

Czytaj żywą konfigurację, zamiast ufać stronie wiki, i zanotuj plik, nasłuchujący proces oraz ostatnie uwierzytelnione sesje.

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

W roli dostępu zdalnego Windows ta sama inwentaryzacja pochodzi z dwóch poleceń, a drugie ma znaczenie, bo rola może reklamować kilka metod naraz, podczas gdy klienci w terenie zawsze negocjują tylko najsłabszą.

Get-VpnAuthProtocol
netstat -ano | findstr :1723

Zdecyduj, co tunel faktycznie przenosi dziś

Wypisz użytkowników, zanim wybierzesz zamiennik: wędrujące laptopy, router oddziału, terminal płatniczy, zestaw tabletów polowych. Użytkownika, który musi dotrzeć tylko do jednego hosta wewnętrznego, łatwo przenieść. Użytkownik osadzony w sprzęcie, którego nie można przeprogramować, może wymagać bramy pośredniej zamiast aktualizacji klienta, a ta decyzja należy do planu, nie do środka przejścia.

Potem zapytaj, co zyskałby atakujący, który może obserwować wymianę logowania lub na nią wpływać. W MS-CHAPv2 odpowiedź obejmuje materiał pozwalający odzyskać hasło użytkownika offline, i właśnie dlatego długość i rotacja nie naprawiają projektu: odzyskany sekret jest ważny w każdym systemie, w którym użytkownik użył go ponownie.

MPPE dziedziczy tę samą słabość, bo jej klucze pochodzą z tej wymiany, i nie daje integralności każdego pakietu ani zachowania przy powtórzeniach jak nowoczesny szyfr AEAD. Sesja, która uwierzytelnia się czysto, dowiodła tylko zgodności ze skonfigurowanymi kontrolami i niczego więcej.

Ani krótka przerwa na lunch, ani mała liczba użytkowników nie zamienia właściwości kryptograficznej we właściwość polityki.

Przeprowadź migrację w jednym oknie serwisowym

Postaw zamiennik, udowodnij go jedną grupą pilotażową, a potem zatrzymaj stary nasłuch, zamiast zostawiać go jako cichy fallback. Fallback, do którego każdy wciąż dotrze, nie jest migracją, i utrzymuje słabą wymianę dostępną właśnie dla tych użytkowników, którzy nigdy nie zadają sobie trudu przejścia.

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

Zamknij ścieżkę firewalla w tym samym oknie. GRE nie ma portu do zapamiętania, więc reguła zezwalająca na protokół 47 według numeru łatwo umyka i zostawia usługę osiągalną nawet po zniknięciu demona. Zapisz usuniętą regułę, jej poprzednie miejsce i powód, aby późniejszy przegląd zmian jej przypadkiem nie przywrócił.

Poświadczeniami zajmuj się osobno od konfiguracji. Usunięcie profilu klienta nie jest odwołaniem, a konto, które wciąż uwierzytelnia się gdzie indziej, nie zostało wycofane.

Sprawdź, czy zamiennik wykonuje pracę, którą wykonywał PPTP

Lista kontrolna to nie „czy się łączy”. To, czy uwierzytelnianie, przydział adresów, rozwiązywanie DNS, wybór trasy, zachowanie przy ponownym łączeniu i weryfikacja peera nadal się utrzymują pod zamiennikiem. Przetestuj każdy punkt na urządzeniu pilotażowym, w tej kolejności, i zapisz zaobserwowany wynik obok oczekiwania.

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

Adres na interfejsie dowodzi, że negocjacje się zakończyły. Nie dowodzi, że druga strona autoryzowała trasę, której oczekujesz, a powyższe zapytanie odpowiada tylko za tego hosta, nie za przekazywany LAN. Odpowiedź resolvera dowodzi osiągalności resolvera, a nie tego, że polityka dzielonego DNS wysyła tam właściwe nazwy.

Ponowne łączenie sprawdź na końcu, bo tam większość zamienników regresuje: uśpij laptop, zmień sieć i potwierdź, że tunel odtwarza się bez pozostawiania nieaktualnych tras.

Wycofanie, odwołanie i zapis, który zostawiasz

Wycofanie przywraca usługę; nie przywraca bezpieczeństwa, i tę różnicę trzeba powiedzieć głośno, zanim okno się otworzy. Jeśli nowa ścieżka zawiedzie, sprowadź użytkowników z powrotem przez drugi nowoczesny punkt końcowy lub tymczasową bramę, a nie przez ponowne włączenie PPTP dla wszystkich. Trzymanie jednej ścieżki awaryjnej na starym protokole poszerza ekspozycję, którą właśnie udokumentowałeś.

Po przejściu odwołaj konta, które uwierzytelniały się przez PPTP, pozwól ich zapisanym profilom wygasnąć i potwierdź, że reguła GRE zniknęła z każdego urządzenia brzegowego, łącznie z kopią odtworzeniową po awarii, której nikt nie pamięta.

Zostaw krótki zapis: protokoły, które znalazłeś, datę zatrzymania każdego nasłuchu, wersje klienta obsługiwane przez zamiennik i właściciela, który może ponownie otworzyć decyzję. Higiena haseł nadal ma znaczenie później, ale jako higiena na protokole, który na nią zasługuje, nie jako argument za utrzymywaniem starego przy życiu.

Powiązane artykuły