Zredagować log VPN, nie tracąc wskazówek, które mają znaczenie
Usuń wszystko, co da się wykorzystać, zachowaj jedną etykietę na każdą rzeczywistą wartość i zachowaj kolejność oraz wersje. Zredagowany log powinien nadal pozwolić obcemu prześledzić awarię.
Wklejasz log do wątku pomocy, odpowiedź wskazuje, że zawiera twój klucz prywatny, a wklejenie jest trwałe. Cichsza awaria ujawnia się później, gdy każdy adres stał się X, a plik nie dowodzi już, że klient i serwer były różnymi hostami. Przebieg redakcji usuwa to, co daje dostęp lub wskazuje osobę, i zachowuje to, co wyjaśnia awarię. To przekształcenie z regułami, a nie usuwanie za pomocą pola wyszukiwania.
Redakcja to przekształcenie, nie usuwanie
Log niesie strukturę równie dobrze jak wartości: ten adres rozmawiał z tamtym, o tej porze, a handshake zatrzymał się na tym kroku. To wartości czynią plik niebezpiecznym do publikacji. To struktura czyni go w ogóle wartym publikacji.
Usunięcie całych linii zabiera jedno i drugie naraz, dlatego przycięty log często nic nie odpowiada. Złożenie każdej wartości w jeden token zawodzi inaczej, bo dwa odrębne peery stają się jednym aktorem. Oba przebiegi mogą wyglądać schludnie i mimo to zniszczyć dowód. Test polega na tym, czy czytelnik, który nigdy nie widział twojej sieci, potrafi prześledzić sekwencję i dojść do wniosku, do którego doszedłeś.
Najpierw wyimek, potem czyszczenie
Wytnij fragment wokół awarii, zanim cokolwiek zmienisz. Mniejszy wyimek łatwiej sprawdzić i mniej prawdopodobne, że przeniesie coś, o czym zapomniałeś, że było w pliku. Przechowuj nietknięty oryginał w chronionym miejscu, aż sprawa zostanie zamknięta. Redakcja jest stratna, a surowy plik to jedyny sposób, by odpowiedzieć na pytanie uzupełniające.
Przeczytaj wyimek jako zwykły tekst, zanim zaufasz, że polecenie eksportu usunęło części prywatne, bo eksportery podsumowują i rotują pola, zamiast je czyścić. Tryby debug i verbose to najbardziej prawdopodobne miejsce na blok klucza lub osadzone dane logowania. Otwórz plik w edytorze pokazującym pełne wiersze, nie w przeglądarce, która zawija i ukrywa koniec.
Co musi zniknąć i w jakiej kolejności
Zacznij od materiału dającego dostęp, bo pominięcie tutaj kończy ćwiczenie: bloki kluczy prywatnych, hasła, klucze wstępnie współdzielone, tokeny API, kody odzyskiwania. Nie tylko identyfikują; może ich użyć każdy, kto czyta wątek. Przebieg, który usuwa wszystko inne i zostawia jeden z nich, zawiódł.
Potem warstwa tożsamości: nazwy użytkowników, podmioty i numery seryjne certyfikatów, identyfikatory kont i każda ścieżka zawierająca imię i nazwisko osoby. Nic z tego nie jest użyteczne samo, ale razem wskazuje osobę, a tego publiczny wątek nie potrzebuje.
Potem warstwa topologii, i tu wchodzi osąd. Publiczne adresy, zakresy wewnętrzne i nazwy hostów można zastąpić, gdy ich ujawnienie nie służy żadnemu celowi diagnostycznemu, a stabilne etykiety biją puste miejsca. Kolejność ma znaczenie, bo wcześniejsze warstwy są bezwzględne, a ostatnia jest decyzją. Praca w tej kolejności chroni też przed spędzeniem godziny nad nazwami hostów, gdy blok klucza leży w czterdziestym wierszu.
| Original kind | Replace with | Keep |
|---|---|---|
| Client address | CLIENT_A | Which side initiated |
| Server address | SERVER_B | Port and protocol |
| Username | USER_1 | The failure that mentions it |
| Hostname | HOST_1 | Resolution order |
Nie niszcz relacji
Nadaj każdej rzeczywistej wartości jeden symbol zastępczy i używaj go ponownie za każdym razem, gdy ta wartość się pojawia. Jeśli dwa adresy były różne, muszą pozostać różne po przebiegu, inaczej czytelnik dojdzie do wniosku, że klient połączył się sam ze sobą. Spójność to cały mechanizm: czytelnik uczy się mapowania, widząc powracającą etykietę. Jeden ponownie użyty token dla dwóch aktorów to najszybszy sposób, by log stał się nieczytelny.
Kolejność i czas są częścią tej samej struktury. Zachowaj sekwencję nietkniętą, a jeśli przesuwasz znaczniki czasu, przesuń wszystkie o tę samą wartość i powiedz to w jednej linii. Mieszanie zmienionych i prawdziwych czasów jest gorsze niż ich usunięcie, bo wtedy luki wyglądają jak dowód czegoś, co nigdy się nie zdarzyło.
Porty, protokół i kierunek zostają takie, jakie są. Symbol zastępczy na adresie nie wymaga symbolu zastępczego na porcie.
Zachowaj pytanie, na które log musi odpowiedzieć
Zapisz pola, których potrzebuje pomocnik, zanim zaczniesz edytować: dokładny, niebędący tajemnicą tekst błędu, wersje klienta i serwera, transport i to, która strona zainicjowała próbę. To one pozwalają obcemu rozpoznać awarię. Trzymanie listy obok zamienia przebieg w sprawdzenie, a nie w nadzieję.
Gdy wysyłasz plik, dodaj jedną linię mówiącą, co zastąpiono, żeby nikt nie spędził godziny na diagnozowaniu zastępczej nazwy hosta. Dokumentacja OpenVPN dotycząca logów diagnostycznych wymienia pola, które niosą jej logi, i to jest lista, którą właśnie zmieniasz. Zapytaj, zanim wyślesz zrzut pamięci lub przechwycenie pakietów, i używaj kanału pomocy, który możesz zweryfikować. Te artefakty zawierają znacznie więcej niż log tekstowy, a część z nich nie jest twoja do publikacji.
Przeczytaj gotowy wyimek raz od pierwszego do ostatniego wiersza, łącznie z początkiem i końcem. Zrzuty ekranu zasługują na więcej nieufności niż tekst, bo niosą inne okna, nazwy kont i pozycje menu.