Nach diesem Beitrag , common_name
kann vom Benutzer nicht gefälscht werden.
Fügen Sie dies zu openvpn server.conf hinzu
script-security 2
# untrusted state
auth-user-pass-verify /etc/openvpn/scripts/check_cn_on_connect.sh via-env
/etc/openvpn/scripts/check_cn_on_connect.sh
enthält
#!/bin/bash
# username and common_name must be the same to allow access.
# users are not allowed to share their cert
if [ $username != $common_name ]; then
echo "$(date +%Y%m%d-%H%M%S) DENIED username=$username cert=$common_name" >> /var/log/openvpn-access.log
exit 1
fi
echo "$(date +%Y%m%d-%H%M%S) GRANTED username=$username cert=$common_name" >> /var/log/openvpn-access.log
exit 0
Aktualisieren
Dies ist für OpenVPN 2.1.4. In 2.2.0 haben sie viele neue Variablen hinzugefügt, die Sie sehen können env >> /tmp/env
, wobei eine dieser neuen Variablen der Fingerabdruck / die Seriennummer des Zertifikats ist.
auth-user-pass-verify /etc/openvpn/scripts/connect.sh via-env
, um den Benutzernamen des Benutzers zu erhalten. Wissen Sie, ob ich die ID auch aus dem Zertifikat erhalten kann, das der Benutzer verwendet? Wenn ja, kann ich ein Perl-Skript schreiben, das eine Yaml-Datei mit bekannten Zertifikats-IDs überprüft.Ich bin kein Sicherheitsprofi. Ich bin streng in Bezug auf Sicherheit. Ihre Frage erreicht genau den Kern der IT-Sicherheit: Vertrauen. Aus meiner Sicht sollte man niemals davon ausgehen, dass man Bob vertrauen kann. Sicher, Bob könnte ein wirklich netter und vertrauenswürdiger Typ sein. Er hat über 20 Jahre in Ihrem Unternehmen gearbeitet. Die Person "Bob" ist jedoch in Ihrer IT-Infrastruktur völlig irrelevant.
Bob verwendet beliebige "Relais", die den Zugriff ermöglichen. Relais können alles sein: Passwort, Zertifikat, Hardware-Token, Iris-Scan, DNA. Dies sind Schlüssel, die den Zugriff auf Ihr System ermöglichen. Wenn es bei Ihrer Frage darum geht, die Identität der Person zu überprüfen, die einen Schlüssel verwendet, ist die einzig ehrliche Antwort wahrscheinlich, dass Sie sich im selben Raum befinden müssen. In allen anderen Fällen denke ich, dass Sie sich nicht versichern dürfen, dass Bob wirklich Bob ist und derzeit nicht mit vorgehaltener Waffe festgehalten wird, während Sie seinen Zugang erhalten. In Ihrem Entwurfsplan für die IT-Infrastruktur ist es daher logisch, sich nicht auf "Bob" zu beziehen: Eine Entität hat Zugriff auf Ihre Site erhalten.
Da Sie nur wirklich wissen können, dass „eine Entität“ mit einem Schlüssel, den Sie in der Vergangenheit ohnmächtig gemacht haben, Zugriff erhalten hat, besteht die richtige Perspektive wahrscheinlich darin, die Anzahl der Türen zu begrenzen, die der Schlüssel öffnen kann. Je mehr Schlüssel Sie verteilen, desto weniger Türen öffnen sie.
OpenVPN bietet auch die Option, nur eine gleichzeitige Verbindung pro Schlüssel zuzulassen. Wenn sich Alice dann mit Bobs Schlüssel anmeldet, während Bob bereits drinnen ist, wird Alice der Zugriff verweigert. Leider bedeutet dies auch, dass Bob sich nicht anmelden kann, wenn Alice mit Bobs Schlüssel angemeldet ist. Sie sollten Ihr System daher so konfigurieren, dass Sie über gleichzeitige Anmeldeversuche von mehreren Quell-IPs informiert werden. Und starten Sie beide, wenn ein Verstoß auftritt, sodass Bob um Hilfe bitten muss.
Der Punkt ist: Überzeugen Sie sich nicht von Dingen, bei denen Sie sich nicht sicher sind, und berücksichtigen Sie dies bei der Gestaltung Ihres Sicherheitsplans. Angenommen, es gibt immer eine klügere Person da draußen, weit vor Ihnen, die es kaum erwarten kann, Ihnen das Gegenteil zu beweisen ... nur "für den Lulz". :-)
quelle