In dem Dokumentationssatz für dieses Produkt wird die Verwendung inklusiver Sprache angestrebt. Für die Zwecke dieses Dokumentationssatzes wird Sprache als „inklusiv“ verstanden, wenn sie keine Diskriminierung aufgrund von Alter, körperlicher und/oder geistiger Behinderung, Geschlechtszugehörigkeit und -identität, ethnischer Identität, sexueller Orientierung, sozioökonomischem Status und Intersektionalität impliziert. Dennoch können in der Dokumentation stilistische Abweichungen von diesem Bemühen auftreten, wenn Text verwendet wird, der in Benutzeroberflächen der Produktsoftware fest codiert ist, auf RFP-Dokumentation basiert oder von einem genannten Drittanbieterprodukt verwendet wird. Hier erfahren Sie mehr darüber, wie Cisco inklusive Sprache verwendet.
Cisco hat dieses Dokument maschinell übersetzen und von einem menschlichen Übersetzer editieren und korrigieren lassen, um unseren Benutzern auf der ganzen Welt Support-Inhalte in ihrer eigenen Sprache zu bieten. Bitte beachten Sie, dass selbst die beste maschinelle Übersetzung nicht so genau ist wie eine von einem professionellen Übersetzer angefertigte. Cisco Systems, Inc. übernimmt keine Haftung für die Richtigkeit dieser Übersetzungen und empfiehlt, immer das englische Originaldokument (siehe bereitgestellter Link) heranzuziehen.
Dieses Dokument beschreibt die Verlängerung des Zertifikats der FirePOWER Management Center (FMC) Sftunnel Certificate Authority (CA) in Verbindung mit der FirePOWER Threat Defense (FTD)-Verbindung.
Cisco empfiehlt, dass Sie über Kenntnisse in folgenden Bereichen verfügen:
Dieses Dokument ist nicht auf bestimmte Software- und Hardware-Versionen beschränkt.
Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die möglichen Auswirkungen aller Befehle kennen.
FMC und FTD kommunizieren über Sftunnel (Sourcefire-Tunnel) miteinander. Diese Kommunikation verwendet Zertifikate, um die Kommunikation über eine TLS-Sitzung sicher zu machen. Mehr Informationen über den Sftunnel und wie er sich etabliert, finden Sie unter diesem Link.
Aus der Paketerfassung geht hervor, dass das FMC (in diesem Beispiel 10.48.79.232) und FTD (10.48.79.23) Zertifikate miteinander austauschen. Dabei wird überprüft, ob die Kommunikation mit dem richtigen Gerät erfolgt und ob ein Lauschangriff oder Man-In-The-Middle-Angriff (MITM) nicht stattfindet. Die Kommunikation wird mit diesen Zertifikaten verschlüsselt, und nur der Teilnehmer, dem der private Schlüssel für das Zertifikat zugeordnet ist, kann das Zertifikat erneut entschlüsseln.
Sie können sehen, dass die Zertifikate von derselben Zertifizierungsstelle (Certificate Authority, CA) der internen Zertifizierungsstelle (Issuer) signiert werden, die auf dem FMC-System eingerichtet ist. Die Konfiguration wird im FMC in der Datei /etc/sf/sftunnel.conf definiert, die Folgendes enthält:
proxyssl {
proxy_cert /etc/sf/keys/sftunnel-cert.pem; ---> Certificate provided by FMC to FTD for the sftunnel communication (signed by InternalCA)
proxy_key /etc/sf/keys/sftunnel-key.pem;
proxy_cacert /etc/sf/ca_root/cacert.pem; ---> CA certificate (InternalCA)
proxy_crl /etc/sf/ca_root/crl.pem;
proxy_cipher 1;
proxy_tls_version TLSv1.2;
};
Dies gibt die Zertifizierungsstelle an, die zum Signieren aller Zertifikate für Sftunnel (FTD und FMC) verwendet wird, sowie das Zertifikat, das vom FMC zum Senden an alle FTDs verwendet wird. Dieses Zertifikat wird von der InternalCA signiert.
Wenn sich FTD beim FMC registriert, erstellt das FMC auch ein Zertifikat, um das FTD-Gerät zu senden, das für die weitere Kommunikation auf dem Sftunnel verwendet wird. Dieses Zertifikat wird ebenfalls vom gleichen internen Zertifizierungsstellenzertifikat signiert. Auf FMC finden Sie dieses Zertifikat (und den privaten Schlüssel) unter /var/sf/peers/<UUID-FTD-device> und möglicherweise unter dem Ordner certs_push. und heißt sftunnel-cert.pem (sftunnel-key.pem für den privaten Schlüssel). Auf FTD finden Sie diese unter /var/sf/peers/<UUID-FMC-device> mit derselben Namenskonvention.
Jedes Zertifikat hat jedoch auch eine Gültigkeitsdauer für Sicherheitszwecke. Bei der Überprüfung des InternalCA-Zertifikats wird auch die Gültigkeitsdauer angezeigt, die 10 Jahre für die FMC InternalCA beträgt, wie aus der Paketerfassung ersichtlich.
Das FMC InternalCA-Zertifikat ist nur 10 Jahre gültig. Nach Ablauf der Ablaufzeit vertraut das Remote-System diesem Zertifikat (sowie von ihm signierten Zertifikaten) nicht mehr und dies führt zu Problemen bei der Sftunnel-Kommunikation zwischen FTD- und FMC-Geräten. Dies bedeutet auch, dass einige wichtige Funktionen wie Verbindungsereignisse, Malware-Suchen, identitätsbasierte Regeln, Richtlinienbereitstellungen und viele andere Dinge nicht funktionieren.
Die Geräte werden auf der FMC-Benutzeroberfläche auf der Registerkarte Devices (Geräte) > Device Management (Geräteverwaltung) als deaktiviert angezeigt, wenn der Sftunnel nicht verbunden ist. Das Problem, das mit diesem Ablauf zusammenhängt, wird unter der Cisco Bug-ID CSCwd08098 nachverfolgt. Beachten Sie, dass alle Systeme betroffen sind, auch wenn Sie eine feste Version des Fehlers ausführen. Weitere Informationen zu diesem Fix finden Sie im Lösungsabschnitt.
Das FMC aktualisiert die Zertifizierungsstelle nicht automatisch und veröffentlicht die Zertifikate nicht erneut auf den FTD-Geräten. Außerdem gibt es keinen FMC-Integritätsalarm, der anzeigt, dass das Zertifikat abläuft. Die Cisco Bug-ID CSCwd08448 wird in dieser Hinsicht nachverfolgt, um eine Statuswarnung für die FMC-Benutzeroberfläche bereitzustellen.
Anfänglich passiert nichts und die sftunnel Kommunikationskanäle laufen weiter wie bisher. Wenn jedoch die Sftunnel-Kommunikation zwischen FMC- und FTD-Geräten unterbrochen wird und versucht wird, die Verbindung wiederherzustellen, schlägt sie fehl, und Sie können Protokollzeilen in der Protokolldatei beobachten, die auf das Ablaufdatum des Zertifikats hinweisen.
Protokollzeilen vom FTD-Gerät aus /ngfw/var/log/messages:
Sep 20 04:10:47 FTD-hostname SF-IMS[50792]: [51982] sftunneld:sf_ssl [INFO] Initiating IPv4 connection to 10.10.200.31:8305/tcp
Sep 20 04:10:47 FTD-hostname SF-IMS[50792]: [51982] sftunneld:sf_ssl [INFO] Wait to connect to 8305 (IPv4): 10.10.200.31
Sep 20 04:10:47 FTD-hostname SF-IMS[50792]: [51982] sftunneld:sf_ssl [INFO] Connected to 10.10.200.31 from resolved_ip_list (port 8305) (IPv4)
Sep 20 04:10:47 FTD-hostname SF-IMS[50792]: [51982] sftunneld:sf_ssl [ERROR] -Error with certificate at depth: 1
Sep 20 04:10:47 FTD-hostname SF-IMS[50792]: [51982] sftunneld:sf_ssl [ERROR] issuer = /title=InternalCA/OU=Intrusion Management System/CN=06f5f3ca-c77b-11e2-81bf-884d9d11f3ef/O=Sourcefire, Inc.
Sep 20 04:10:47 FTD-hostname SF-IMS[50792]: [51982] sftunneld:sf_ssl [ERROR] subject = /title=InternalCA/OU=Intrusion Management System/CN=06f5f3ca-c77b-11e2-81bf-884d9d11f3ef/O=Sourcefire, Inc.
Sep 20 04:10:47 FTD-hostname SF-IMS[50792]: [51982] sftunneld:sf_ssl [ERROR] err 10:certificate has expired
Sep 20 04:10:47 FTD-hostname SF-IMS[50792]: [51982] sftunneld:sf_ssl [ERROR] SSL_renegotiate error: 1: error:00000001:lib(0):func(0):reason(1)
Sep 20 04:10:47 FTD-hostname SF-IMS[50792]: [51982] sftunneld:sf_ssl [ERROR] Connect:SSL handshake failed
Sep 20 04:10:47 FTD-hostname SF-IMS[50792]: [51982] sftunneld:sf_ssl [WARN] SSL Verification status: certificate has expired
Protokollzeilen von FMC-Gerät aus /var/log/messages:
Sep 20 03:14:23 FMC-hostname SF-IMS[1504]: [4171] sftunneld:sf_ssl [INFO] VERIFY ssl_verify_callback_initial ok=1!
Sep 20 03:14:23 FMC-hostname SF-IMS[1504]: [4171] sftunneld:sf_ssl [ERROR] SSL_renegotiate error: 1: error:00000001:lib(0):func(0):reason(1)
Sep 20 03:14:23 FMC-hostname SF-IMS[1504]: [4171] sftunneld:sf_ssl [WARN] establishConnectionUtil: SSL handshake failed
Sep 20 03:14:23 FMC-hostname SF-IMS[1504]: [4171] sftunneld:sf_ssl [WARN] establishConnectionUtil: SSL Verification status: ok
Sep 20 03:14:23 FMC-hostname SF-IMS[1504]: [4171] sftunneld:sf_ssl [WARN] establishConnectionUtil: SSL handshake failed: error:14094415:SSL routines:ssl3_read_bytes:sslv3 alert certificate expired
Sep 20 03:14:23 FMC-hostname SF-IMS[1504]: [4171] sftunneld:sf_ssl [INFO] establishConnectionUtil: Failed to connect using SSL to: '10.10.21.10'
Sep 20 03:14:23 FMC-hostname SF-IMS[1504]: [4171] sftunneld:sf_ssl [ERROR] establishSSLConnection: Unable to connect with both threads:
Sep 20 03:14:23 FMC-hostname SF-IMS[1504]: [4171] sftunneld:sf_ssl [ERROR] establishSSLConnection: ret_accept status : Too many levels of symbolic links
Sep 20 03:14:23 FMC-hostname SF-IMS[1504]: [4171] sftunneld:sf_ssl [ERROR] establishSSLConnection: iret_connect status: Too many levels of symbolic links
Sep 20 03:14:23 FMC-hostname SF-IMS[1504]: [4171] sftunneld:sf_ssl [ERROR] establishSSLConnection: Failed connecting with SSL to using to: '10.10.21.10' rval[40] *CA cert from FMC
Die Sftunnel-Kommunikation kann aus verschiedenen Gründen unterbrochen werden:
Da es so viele Möglichkeiten gibt, die die sftunnel-Kommunikation unterbrechen können, ist es sehr ratsam, die Situation so schnell wie möglich zu korrigieren, auch wenn derzeit alle FTD-Geräte trotz abgelaufenem Zertifikat ordnungsgemäß angeschlossen sind.
Am einfachsten ist es, diese Befehle in der FMC SSH-Sitzung auszuführen:
expert
sudo su
cd /etc/sf/ca_root
openssl x509 -dates -noout -in cacert.pem
Hier sehen Sie die Validity-Elemente des Zertifikats. Wichtigster Teil ist hier das "notAfter", welches zeigt, dass das Zertifikat hier bis zum 5. Oktober 2034 gültig ist.
Wenn Sie die Ausführung eines einzelnen Befehls vorziehen, der Ihnen sofort die Anzahl der Tage anzeigt, für die das Zertifikat noch gültig ist, können Sie Folgendes verwenden:
CERT_PATH="/etc/sf/ca_root/cacert.pem"; EXPIRY_DATE=$(openssl x509 -enddate -noout -in "$CERT_PATH" | cut -d= -f2); EXPIRY_DATE_SECONDS=$(date -d "$EXPIRY_DATE" +%s); CURRENT_DATE_SECONDS=$(date +%s); THIRTY_DAYS_SECONDS=$((30*24*60*60)); EXPIRY_THRESHOLD=$((CURRENT_DATE_SECONDS + THIRTY_DAYS_SECONDS)); DAYS_LEFT=$(( (EXPIRY_DATE_SECONDS - CURRENT_DATE_SECONDS) / (24*60*60) )); if [ "$EXPIRY_DATE_SECONDS" -le "$CURRENT_DATE_SECONDS" ]; then DAYS_EXPIRED=$(( (CURRENT_DATE_SECONDS - EXPIRY_DATE_SECONDS) / (24*60*60) )); echo -e "\nThe certificate has expired $DAYS_EXPIRED days ago.\nIn case the sftunnel communication with the FTD is not yet lost, you need to take action immediately in renewing the certificate.\n"; elif [ "$EXPIRY_DATE_SECONDS" -le "$EXPIRY_THRESHOLD" ]; then echo -e "\nThe certificate will expire within the next 30 days!\nIt is ONLY valid for $DAYS_LEFT more days.\nIt is recommended to take action in renewing the certificate as quickly as possible.\n"; else echo -e "\nThe certificate is valid for more than 30 days.\nIt is valid for $DAYS_LEFT more days.\nThere is no immediate need to perform action but this depends on how far the expiry date is in the future.\n"; fi
Ein Beispiel für eine Konfiguration, bei der das Zertifikat noch mehrere Jahre gültig ist, wird angezeigt.
Nach den letzten VDB-Updates (399 oder höher) werden Sie automatisch benachrichtigt, wenn Ihr Zertifikat innerhalb von 90 Tagen abläuft. Sie müssen dies daher nicht manuell nachverfolgen, da Sie kurz vor Ablauf der Frist benachrichtigt werden. Diese werden dann auf der FMC-Webseite in zwei Formen angezeigt. Beide Möglichkeiten finden Sie auf der Seite mit den Feldhinweisen.
Die erste Methode wird über die Registerkarte Task ausgeführt. Diese Nachricht ist klebrig und für den Benutzer verfügbar, es sei denn, sie wird explizit geschlossen. Das Benachrichtigungs-Popup wird ebenfalls angezeigt und steht zur Verfügung, bis es vom Benutzer explizit geschlossen wird. Es wird immer als Fehler angezeigt.
Die zweite Methode ist der Integritätsalarm. Dies wird auf der Registerkarte "Status" angezeigt, ist jedoch nicht haftbar und wird ersetzt oder entfernt, wenn der Integritätsmonitor ausgeführt wird, der standardmäßig alle 5 Minuten ausgeführt wird. Es wird auch ein Benachrichtigungs-Popup angezeigt, das vom Benutzer explizit geschlossen werden muss. Dies kann sowohl als Fehler (wenn abgelaufen) als Warnung (wenn abläuft) angezeigt werden.
Dies ist die beste Situation, da wir dann je nach Ablauf des Zertifikats noch Zeit haben. Entweder verfolgen wir den vollständig automatisierten Ansatz (empfohlen), der von der FMC-Version abhängt, oder wir verfolgen einen manuelleren Ansatz, der eine Interaktion mit dem TAC erfordert.
Dies ist die Situation, in der unter normalen Umständen keine Ausfallzeiten und ein geringster manueller Arbeitsaufwand zu erwarten sind.
Bevor Sie fortfahren, müssen Sie den Hotfix für Ihre spezielle Version wie hier aufgeführt installieren. Der Vorteil dabei ist, dass diese Hotfixes keinen Neustart des FMC und damit keine potenzielle unterbrochene Sftunnel-Kommunikation erfordern, wenn das Zertifikat bereits abgelaufen ist. Folgende Hotfixes stehen zur Verfügung:
Nach der Installation des Hotfix enthält das FMC nun das Skript generate_certs.pl, das:
Anmerkung: Das Skript generate_certs.pl überprüft derzeit, ob kritische Vorgänge ausgeführt werden. Wenn nicht, wird es nicht ausgeführt.
Kritische Betriebsabläufe können sein: Der Smart Agent ist nicht registriert oder wird gerade registriert, es wird eine Sicherungs-/Wiederherstellungsaufgabe ausgeführt, es wird eine SRU-Aktualisierungsaufgabe ausgeführt, es wird eine VDB-Aktualisierungsaufgabe ausgeführt, es wird eine Domänenaufgabe ausgeführt, es wird ein HA-Vorgang ausgeführt oder das Upgrade wird ausgeführt.
Daher können Sie dieses Skript nicht ausführen, wenn Sie nur Classic-Lizenzen für Ihr FMC verwenden (oder einen der aufgeführten Vorgänge zuerst ausführen müssen). In diesem Fall müssen Sie sich an das Cisco TAC wenden, um diese Überprüfung zu umgehen, die Zertifikate neu zu generieren und dann die Umgehung wieder rückgängig zu machen.
Daher wird (wenn möglich) empfohlen:
Anmerkung: Wenn FMC in Hochverfügbarkeit (HA) ausgeführt wird, müssen Sie den Vorgang zuerst auf dem primären Knoten und dann auf dem sekundären Knoten durchführen, da dieser diese Zertifikate ebenfalls für die Kommunikation zwischen den FMC-Knoten verwendet. Die interne Zertifizierungsstelle auf beiden FMC-Knoten ist unterschiedlich.
Im Beispiel hier sehen Sie, dass es eine Protokolldatei auf /var/log/sf/sfca_generation.log erstellt, angibt, sftunnel_status.pl zu verwenden, die Ablaufzeit auf der InternalCA angibt und angibt, ob Fehler aufgetreten sind. In diesem Fall konnten die Zertifikate beispielsweise nicht an das Gerät BSNS-1120-1 und EMEA-FPR3110-08 übertragen werden. Dies ist zu erwarten, da der Sftunnel für diese Geräte ausgefallen war.
Um den Sftunnel für die fehlerhaften Verbindungen zu korrigieren, führen Sie die folgenden Schritte aus:
cp cacert.pem cacert.pem.backup
cp sftunnel-cert.pem sftunnel-cert.pem.backup
cp sftunnel-key.pem sftunnel-key.pem.backup
> cacert.pem
> sftunnel-cert.pem
> sftunnel-key.pem
In dieser Situation haben wir zwei verschiedene Szenarien. Entweder sind alle Tunnelverbindungen noch nicht (oder nur teilweise) funktionsfähig.
Wir können das gleiche Verfahren anwenden, wie im Zertifikat angegeben ist noch nicht abgelaufen (ideales Szenario) - Empfohlener Ansatz Abschnitt.
Führen Sie in diesem Fall jedoch KEIN Upgrade oder Neustart des FMC (oder eines FTD) durch, da es die Verbindung mit allen Sftunnel-Verbindungen unterbricht und alle Zertifikats-Updates manuell auf jedem FTD ausgeführt werden müssen. Die einzige Ausnahme sind die aufgeführten Hotfix-Versionen, da sie keinen Neustart des FMC erfordern.
Die Tunnel bleiben verbunden und die Zertifikate werden auf jedem FTD ersetzt. Falls einige Zertifikate nicht ausgefüllt werden können, werden die fehlerhaften Zertifikate angezeigt, und Sie müssen den manuellen Ansatz wie im vorherigen Abschnitt beschrieben anwenden.
Wir können das gleiche Verfahren anwenden, wie im Zertifikat angegeben ist noch nicht abgelaufen (ideales Szenario) - Empfohlener Ansatz Abschnitt. In diesem Szenario wird das neue Zertifikat auf dem FMC generiert, kann jedoch nicht auf die Geräte kopiert werden, da der Tunnel bereits ausgefallen ist. Dieser Prozess kann mit den Skripten copy_sftunnel_certs.py / copy_sftunnel_certs_jumpserver.py automatisiert werden.
Wenn alle FTD-Geräte vom FMC getrennt sind, können wir das FMC in diesem Fall aktualisieren, da dies keine Auswirkungen auf die Softunnel-Verbindungen hat. Wenn Sie noch einige Geräte über sftunnel verbunden haben, dann beachten Sie, dass das Upgrade des FMC alle sftunnel-Verbindungen schließt und sie nicht wieder kommen, weil das Zertifikat abgelaufen ist. Der Vorteil des Upgrades besteht darin, dass es Ihnen eine gute Anleitung für die Zertifikatsdateien bietet, die auf die einzelnen FTDs übertragen werden müssen.
In dieser Situation können Sie dann das Skript generate_certs.pl vom FMC ausführen, das die neuen Zertifikate generiert, Sie müssen sie jedoch manuell auf jedes FTD-Gerät übertragen. Je nach Anzahl der Geräte ist dies machbar oder kann eine mühsame Aufgabe sein. Bei Verwendung der Skripte copy_sftunnel_certs.py / copy_sftunnel_certs_jumpserver.py ist dies jedoch hochautomatisiert.
Überarbeitung | Veröffentlichungsdatum | Kommentare |
---|---|---|
3.0 |
26-Nov-2024 |
Update für Situationen, in denen generate_certs.pl noch für andere Vorgänge aussteht, die zuerst abgeschlossen werden sollen. |
2.0 |
14-Nov-2024 |
Hotfix als empfohlener Ansatz |
1.0 |
14-Nov-2024 |
Erstveröffentlichung |