lucadp - stock.adobe.com
Netzwerkverschlüsselung mit MACsec zwischen Switch/Switch
MACsec im statischen CAK-Modus schützt Switch-zu-Switch-Verbindungen ohne dynamische Aushandlung. Beispiel für Arista, Cisco, Nokia und Hinweise zu Ciphers, Offsets und Rekeying.
Die Netzwerkverschlüsselung auf Layer 2 schließt die Lücke zwischen physischem Leitungsschutz und IPsec auf Layer 3. MACsec nach IEEE 802.1AE sichert Ethernet-Frames gegen Abhören und Manipulation. Der statische CAK-Modus ohne 802.1X-Authentisierung bietet eine robuste, latenzarme Option ohne externe PKI und eignet sich besonders für dedizierte Leitungen und Carrier-Anbindungen.
Der letzte Teil der Serie zu MACsec befasst sich mit der Absicherung von Links zwischen Switchen, also dem statischen CAK-Modus (Connectivity Association Key). Dieser bietet sich für die sichere und performante Standortkopplung oder Anbindung von Switches in öffentlichen Bereichen an oder falls Dritte Zugang zum physischen Link erhalten könnten, wie beispielsweise bei Dark-Fiber- oder Metro-Ethernet-Verbindungen. Die vorangegangenen drei Teile der Artikelserie finden Sie hier:
- Netzwerkverschlüsselung mit MACsec: Grundlagen und Szenarien
- Netzwerkverschlüsselung mit MACsec: Schlüsselverteilung
- Netzwerkverschlüsselung mit MACsec zwischen Switch und Endgerät
Switch zu Switch im statischen CAK-Modus
Etwas einfacher als die dynamische Schlüsselverteilung im Fall von Switch zu Endgerät, ist die Einrichtung für MACsec zwischen Switches. Dies kann entweder Punkt-zu-Punkt zwischen zwei Switches oder in einer Punkt-zu-Mehrpunkt Variante sein, wobei nicht alle Hersteller Punkt-zu-Mehrpunkt Varianten unterstützen. Ein Beispiel für die Unterstützung von Punkt-zu-Mehrpunkt bilden Nokia, Cisco, Arista und HPE Aruba, wobei Nokia und HPE Aruba es Clear Tag Mode, Cisco WAN MACsec und Arista VLAN tagged MACsec nennt. Das ermöglicht auf einem physischen Link per VLAN-Trennung multiple MACsec-Sessions zu unterschiedlichen Ziel-Switches aufzubauen.
Im statischen CAK-Modus entfällt die dynamische Schlüsselaushandlung für den CAK. Stattdessen wird der CAK und ein Connectivity Key Name (CKN) manuell auf beiden Kommunikationspartnern konfiguriert. Beide Werte müssen auf den beiden Switches oder bei Multipoint-Verbindungen auf den beiden Kommunikationspartnern gleich gesetzt sein. Dieser statisch gesetzte CAK dient dann als Grundlage für die Ableitung des SAK, der anschließend die Nutzdaten verschlüsselt. Das bedeutet, dass der SAK nicht direkt manuell eingegeben, sondern aus dem CAK und dem Connectivity Association Key Name (CKN) abgeleitet wird.
Um besser zu verstehen, wie MACsec im statischen CAK-Modus funktioniert, zeigen wir nun einige Konfigurationsbeispiele von Herstellern. Dabei beginnen wir mit einer Konfiguration auf Arista-EOS-Switches für ein Punkt-zu-Punkt-Szenario zwischen zwei Switches. Dabei aktivieren wir in Listing 1 zunächst MACsec über das Kommando mac security im globalen Konfigurationsmodus und erstellen darunter ein MACsec-Profil namens Pfister-LAB. Diesem Profil weisen wir die gewünschten Cipher-Suites zu, also in unserem Beispiel AES256-GCM. Über das key-Kommando weisen wir den CAK zu. Dieser muss für 256-Bit-Verschlüsselung 64 hexadezimale Ziffern enthalten. Optional kann bei Arista auch ein Fallback-CAK in einem Profil konfiguriert werden. Dieser Fallback-CAK wird von MACsec zur Schlüsselaushandlung verwendet, wenn der primäre CAK ausfällt und wird einfach mit dem Argument fallback hinter dem hexadezimalen Schlüssel hinterlegt. Im Anschluss definieren wir die Key-Server Priorität für das MKA. Eine niedrigere numerische Priorität hat eine höhere Wertigkeit. Die MKA Rekey-Period gibt an, wie oft der SAK aufgefrischt werden soll. Zu guter Letzt binden wir das MACsec Profil an eine Schnittstelle, also in unserem Beispiel ethernet1/1/1.
mac security
profile Pfister-LAB
cipher aes256-gcm
key 0abc12340def56780abc12340def5678 7 06070E234E4D0A48544540585F507E
key 0def56780abc12340def56780abc1234 7 09484A0C1C0311475E5A527D7C7C70 fallback
mka key-server priority 5
mka session rekey-period 600
interface ethernet1/1/1
mac security profile Pfister-LAB
Listing 1: Parametrisierung des statischen CAK-Modus auf einem Arista-EOS-Switch.
Unter Cisco IOS-XE sieht es leicht anders aus. Zunächst definiert der Integrator dort einen Schlüsselbund (key chain) für MACsec mit einer Schlüsselnummer, also in Listing 2 entsprechend die 1000. Diese Schlüsselnummer dient als Connectivity Association Key Name (CKN). Innerhalb der Schlüsselnummer legt er den Algorithmus des Schlüssels und die Zeichenkette des Schlüssels an. Dieser Schlüssel dient als CAK.
Im Anschluss definiert der Administrator die MKA-Richtlinie mit Key-Server Priorität, Cipher Suite und Confidentiality-Offset. Unter Confidentiality-Offset versteht man, wie viele Byte des Ethernet-Frames unverschlüsselt sein sollen. In diesem Fall soll also der gesamte Frame verschlüsselt werden. Dies kommt zum Einsatz falls man beispielsweise 802.1Q-VLAN-Tags, MPLS-Labels oder sogar IPv4- und IPv6-Adressierungsinformationen unverschlüsselt belassen möchte. Es stehen dabei die Werte 30 und 50 zur Auswahl. 30 bietet sich für IPv4 an, da dabei IPv4-, sowie TCP- oder UDP-Header unverschlüsselt bleiben, wobei bei 50 das gleiche für IPv6 gilt. Diese Daten können dann für die Wegewahl, wie beispielsweise Hashing von Link-Aggregationen oder Equal-Cost Multi-Pathings herangezogen werden. Final nimmt der Integrator die Bindung der MKA-Richtlinie, sowie des Schlüsselbunds als Pre-Shared-Key und die Aktivierung von MACsec über macsec network-link auf der physischen Schnittstelle vor.
key chain CW macsec
key 1000
cryptographic-algorithm aes-256-cmac
key-string 12345678911234567890123456789012
!
mka policy CW_MKA_Switch
key-server priority 100
macsec-cipher-suite gcm-aes-256
confidentiality-offset 0
!
interface TenGigabitEthernet1/0/1
description CW_MACsec_Client
switchport mode trunk
macsec network-link
mka policy CW_MKA_Switch
mka pre-shared-key key-chain CW
Listing 2: Beispielkonfiguration einer MACsec Verschlüsselung auf einem Uplink zu einem anderen Switch basierend auf einem Cisco Catalyst-9300-Switch in IOS-XE 17.12.
Bei Nokia SR-OS weicht die CLI-Syntax zwar deutlich ab, die MACsec-Komponenten bleiben jedoch nahezu identisch. Listing 3 zeigt eine Beispielkonfiguration mit SR-OS mit Punkt-zu-Multipunkt MACsec. Dabei werden zwei eingehende Kundenports eth2 und eth3 auf einem Port namens eth1 zusammengefasst und als VLANs mit zwei MACsec-Sessions, also einer je VLAN, auf einem Link übertragen. eth2 erhält das VLAN10 und Eth3 VLAN20.
Die Konfiguration beginnt zunächst mit einer Definition der beiden Connectivity-Associations cak01 und cak02. Diese werden zunächst mit Verschlüsselung aktiv geschaltet. Um den VLAN-Tag im Klartext übertragen zu können, setzen wir clear-tag-mode single-tag. Im nächsten Schritt legen wir die Cipher-Suite für MACsec, also in diesem Fall AES256-GCM-XPN fest, sowie den Verschlüsselungsalgorithmus für den CAK, den CAK selbst und den CKN. Dies führen wir einmal mit cak01 für das spätere VLAN10 und einmal mit cak02 für das spätere VLAN20 aus.
Im Nachgang richten wir die Schnittstelle port1/1/c1/1 mit zwei Sub-Ports für die VLANs ein und binden die VLAN-Tags an die jeweilige CA-Definition. Nachdem dann die Eingangsschnittstellen 1/1/c2 und 1/1/c3 vorbereitet sind, verknüpfen wir die beiden ungetaggten Eingangsports jeweils mit VLAN10 und VLAN20 über einen epipe-Service.
configure macsec connectivity-association „cak01“ admin-state enable
configure macsec connectivity-association „cak01“ macsec-encrypt true
configure macsec connectivity-association „cak01“ clear-tag-mode single-tag
configure macsec connectivity-association „cak01“ cipher-suite gcm-aes-xpn-256
configure macsec connectivity-association „cak01“ static-cak pre-shared-key 1 encryption-type aes-256-cmac
configure macsec connectivity-association „cak01“ static-cak pre-shared-key 1 cak „t0sps3cret hash2“
configure macsec connectivity-association „cak01“ static-cak pre-shared-key 1 cak-name „010101010101010“
configure macsec connectivity-association „cak02“ admin-state enable
configure macsec connectivity-association „cak02“ macsec-encrypt true
configure macsec connectivity-association „cak02“ clear-tag-mode single-tag
configure macsec connectivity-association „cak02“ cipher-suite gcm-aes-xpn-256
configure macsec connectivity-association „cak02“ static-cak pre-shared-key 1 encryption-type aes-256-cmac
configure macsec connectivity-association „cak02“ static-cak pre-shared-key 1 cak „gehteuchnichtsan hash2“
configure macsec connectivity-association „cak02“ static-cak pre-shared-key 1 cak-name „010101010101010“
configure port 1/1/c1 admin-state enable
configure port 1/1/c1 description „TO_WAN“
configure port 1/1/c1 connector breakout c1-100g
configure port 1/1/c1/1 admin-state enable
configure port 1/1/c1/1 ethernet mode access
configure port 1/1/c1/1 ethernet encap-type qinq
configure port 1/1/c1/1 ethernet mtu 9000
configure port 1/1/c1/1 ethernet dot1x macsec sub-port 1 admin-state enable
configure port 1/1/c1/1 ethernet dot1x macsec sub-port 1 ca-name „cak01“
configure port 1/1/c1/1 ethernet dot1x macsec sub-port 1 max-peers 1
configure port 1/1/c1/1 ethernet dot1x macsec sub-port 1 encap-match single-tag „10“
configure port 1/1/c1/1 ethernet dot1x macsec sub-port 2 admin-state enable
configure port 1/1/c1/1 ethernet dot1x macsec sub-port 2 ca-name „cak02“
configure port 1/1/c1/1 ethernet dot1x macsec sub-port 2 max-peers 1
configure port 1/1/c1/1 ethernet dot1x macsec sub-port 2 encap-match single-tag „20“
configure port 1/1/c2 admin-state enable
configure port 1/1/c2 description „FROM_CUSTOMER1“
configure port 1/1/c2 connector breakout c1-100g
configure port 1/1/c2/1 admin-state enable
configure port 1/1/c2/1 ethernet mode access
configure port 1/1/c2/1 ethernet encap-type null
configure port 1/1/c3 admin-state enable
configure port 1/1/c3 description „FROM_CUSTOMER2“
configure port 1/1/c3 connector breakout c1-100g
configure port 1/1/c3/1 admin-state enable
configure port 1/1/c3/1 ethernet mode access
configure port 1/1/c3/1 ethernet encap-type null
configure service epipe „CUSTOMER1_PTP“ admin-state enable
configure service epipe „CUSTOMER1_PTP“ service-id 1
configure service epipe „CUSTOMER1_PTP“ customer „1“
configure service epipe „CUSTOMER1_PTP“ sap 1/1/c1/1.10.* admin-state enable
configure service epipe „CUSTOMER1_PTP“ sap 1/1/c2/1 admin-state enable
configure service epipe „CUSTOMER2_PTP“ admin-state enable
configure service epipe „CUSTOMER2_PTP“ service-id 2
configure service epipe „CUSTOMER2_PTP“ customer „2“
configure service epipe „CUSTOMER2_PTP“ sap 1/1/c1/1.20.* admin-state enable
configure service epipe „CUSTOMER2_PTP“ sap 1/1/c3/1 admin-state enable
Listing 2: Beispielkonfiguration einer MACsec-Verschlüsselung auf einer Nokia SR-OS-Komponente mit zwei MACsec-Sessions in zwei VLANs (10 und 20).
Fazit
MACsec kann keine Ende-zu-Ende Verschlüsselung ersetzen. Geht es jedoch darum, einen definierten Link mit hoher Performance zu verschlüsseln, bietet sich MACsec an. Trotz der ersten Standards, wie 802.1AE aus dem Jahr 2006 und IEEE 802.1X-2010 gibt es noch immer eine geringe Verbreitung von Supplicants. Die Hersteller von Netzwerkkomponenten gehen jedoch zunehmend dazu über, MACsec in Ihre Geräte zu integrieren, wodurch die zuvor dargestellte Kopplung von Switches über MACsec für viele Kunden attraktiv wird. Es bleibt zu hoffen, dass sich die Verbreitung von Supplicants in Endgeräte noch verstärkt.