Drei Uhren in einem VPN-Protokoll: Client, Gateway, Sammler
Ein Client-Log, ein Gateway-Eintrag und die Ankunft beim Sammler sind drei Ereignisse mit drei Uhren. Bestimmen Sie den Urheber, bevor Sie Zeitstempel vergleichen.
Die Zeitachse eines VPN-Vorfalls beginnt meist mit zwei Zeitstempeln, die um einige Minuten voneinander abweichen, und mit einer Anzeige, die eine andere Stunde zeigt. Die Versuchung ist, einen davon als richtig zu wählen und den anderen umzuschreiben. Beide können richtig sein, denn sie wurden von verschiedenen Uhren über verschiedene Ereignisse geschrieben. Der Mythos ist, dass ein VPN eine einzige Uhr hat; die Arbeit besteht darin, herauszufinden, welche Komponente welches Feld geschrieben hat.
Der Mythos: das VPN hat eine einzige Uhr
Ein Client schreibt ein Ereignis, wenn er eine Verbindung versucht. Ein Gateway schreibt ein Ereignis, wenn es diesen Versuch empfängt oder annimmt. Ein Sammler schreibt eine Ankunftszeit, wenn er die Nachricht des Gateways empfängt. Das sind drei Ereignisse, und jedes wird von der Uhr gestempelt, der die schreibende Komponente vertraut hat. Sie zu einer einzigen Zeitachse zusammenzufassen ist eine Bequemlichkeit, die die Abweichung verbirgt, die Sie erklären wollen.
Die Zahlen unterscheiden sich meist um Sekunden bis Minuten, und das ist normal. Entscheidend ist, ob die Differenz eine Zustellverzögerung, ein Uhrenversatz oder ein wirklich anderes Ereignis ist. Um zu entscheiden, was Sie vor sich haben, brauchen Sie die Herkunft jedes Feldes, nicht eine stärkere Meinung darüber, welche Maschine recht hat.
Erst den Urheber lesen, dann den Wert
Bevor Sie Werte vergleichen, bestimmen Sie, wer jeden davon erzeugt hat und um welches Feld es sich handelt. Eine Syslog-Nachricht trägt einen Zeitstempel des Urhebers, wie RFC 5424 beschreibt, und das Format kann auch Zeitqualitätsangaben zu Synchronisation und Genauigkeit tragen. Dasselbe Format erlaubt es dem Urheber, gar keinen Zeitstempel zu senden, wenn er die Systemzeit nicht lesen kann, was für sich genommen ein nützliches Signal ist.
journalctl -o short-iso --utc -n 20
logger -t vpn-check "test event"
Ein Client kann einen Zeitwert auch als Anwendungsmetadaten senden, und ein Dienst, der ihn speichert, sollte ihn als vom Client gemeldet kennzeichnen, statt ihn als unabhängig geprüft zu behandeln. Diese Kennzeichnung ist der Unterschied zwischen Beweis und Behauptung. Wenn Sie Protokolle für einen Fall exportieren, halten Sie Feldnamen, Herkunft und Versatz zusammen. Sie auf eine bequeme Ortszeit zu reduzieren zerstört genau die Information, die Sie brauchen.
Halten Sie an, wenn Sie nicht sagen können, welche Komponente ein Feld geschrieben hat. Es mit irgendetwas anderem zu vergleichen ist Raten.
Zeitzonenanzeige ist kein anderer Zeitpunkt
Derselbe Zeitpunkt als 10:00Z und als 18:00+08:00 dargestellt ist keine Diskrepanz, und ihn als eine zu behandeln kostet einen halben Tag. Rechnen Sie beide vor dem Vergleich in UTC um und behalten Sie den Originaltext neben der Umrechnung. Ein Dezimalbruch auf der einen und ganze Sekunden auf der anderen Seite sind ebenfalls kein Konflikt. Präzision ist nicht Genauigkeit: ein Wert mit Millisekunden kann trotzdem von einer Uhr stammen, die Minuten daneben liegt.
date -u +%FT%TZ
timedatectl
Zustellverzögerung ist die andere gewöhnliche Erklärung. Das Gateway zeichnet auf, wann es die Verbindung angenommen hat, und der Sammler zeichnet auf, wann die Nachricht ihn erreicht hat, also ist die Lücke dazwischen Transportzeit. Diese Lücke sagt etwas über die Log-Pipeline aus, nicht über die VPN-Sitzung. Kennzeichnen Sie sie als Ankunftszeit, und sie konkurriert nicht mehr mit der Ereigniszeit.
Korrelieren, ohne die Beweise umzuschreiben
Behalten Sie die ursprünglichen Zeitstempel und fügen Sie eine abgeleitete Spalte hinzu, wenn Sie eine gemeinsame Sicht brauchen. Erklären Sie die Umrechnung in den Notizen, statt die Quellaufzeichnungen zu bearbeiten, denn die Quelle ist das, was ein späterer Prüfer kontrolliert. Bewahren Sie die Ankunftszeit des Sammlers überall dort getrennt auf, wo sie existiert.
chronyc tracking
journalctl --utc -u openvpn-client@work -n 50 --no-pager
Das Ändern einer Geräteuhr ist keine Datenschutzkontrolle und schreibt keine Aufzeichnungen um, die ein anderes System bereits hält. Es macht auch Support-Beweise schwerer vergleichbar und kann die Zertifikats- und Codeprüfungen brechen, die von der Zeit abhängen. Halten Sie Uhren für den normalen Betrieb synchron und behandeln Sie jede absichtliche Abweichung als zu untersuchenden Fehler. Wenn die beiden Aufzeichnungen außer der Reihe erscheinen, prüfen Sie Uhrensynchronisation und Zustellung, bevor Sie eine neue Geschichte konstruieren.
Der Mythos, den es zu verabschieden gilt, ist, dass es eine einzige VPN-Zeit gibt. Fragen Sie, was jedes Feld geschrieben hat und was geschah, als es das tat, und die Zeitachse wird zu einer Menge beschrifteter Beobachtungen statt zu einem Widerspruch.