IPSec-Übersicht in Mikrotik

    IPSec (IP Security) ist ein Satz von Protokollen und Algorithmen zum Verschlüsseln von Daten in IPv4- und IPv6-Netzwerken. Das hört sich nicht kompliziert an, aber IPSec legt keine klaren Regeln für die Verschlüsselung des Datenverkehrs fest, stattdessen implementieren die Entwickler eine Reihe von Tools (Protokolle und Algorithmen), mit denen der Administrator einen sicheren Datenkanal erstellt.


    Ich möchte auf das Thema IPSec in RouterOS ein wenig tiefer eingehen als ein einfaches HOWTO, mit minimalem Eintauchen in die Theorie und Beispielen für das Konfigurieren und Debuggen von IPSec. Dies ist kein Leitfaden und ohne Übung an einem Prüfstand wird es nicht empfohlen, echte Tunnel und VPN-Server einzurichten.


    Vor- und Nachteile von IPSec


    Starke Seiten:


    • Funktioniert auf der Netzwerkschicht des OSI-Modells
    • Es kann das Quellpaket vollständig von der Transportschicht und darüber verschlüsseln.
    • Es gibt einen Mechanismus, um NAT zu überwinden
    • Eine Vielzahl von Verschlüsselungs- und Traffic-Hashing-Algorithmen stehen zur Auswahl
    • IPSec - eine Reihe offener, erweiterbarer Standards
    • Erfordert im Falle von Mikrotik keine zusätzlichen Gebühren oder Lizenzen

    Schwächen:


    • Komplexität
    • Unterschiedliche Terminologie- und Konfigurationstools verschiedener Hersteller.
    • Die Verwendung starker Verschlüsselungsalgorithmen erfordert eine gute Rechenleistung.
    • Einfach, DPI zu erkennen

    In IPSec enthaltene Protokolle



    Weltweit können alle Protokolle, mit denen Sie sich während der Konfiguration befassen, in zwei Gruppen unterteilt werden: Schlüsselaustauschprotokolle und Datenschutzprotokolle.


    Key Exchange Protocols (IKE)
    Die Hauptaufgabe besteht darin, die Teilnehmer an der Verbindung zu authentifizieren und die Parameter und Verschlüsselungsschlüssel zum Schutz der übertragenen Informationen zu vereinbaren.


    • IKE (Internet Key Exchange) - 1998 definiert. Viele Funktionen (z. B. Überwindung von NAT) wurden später als Add-Ons hinzugefügt und werden möglicherweise nicht von verschiedenen Anbietern implementiert. Die Basis für die Schlüsselverhandlung ist das ISAKMP-Protokoll.
    • IKEv2 (Internet Key Exchange Version 2) ist die neueste Ausgabe von 2014. Es ist die Entwicklung des IKE-Protokolls, bei dem einige Probleme gelöst wurden, der Schlüsselvereinbarungsmechanismus vereinfacht wurde, Erweiterungen (NAT-T, Keepalives, Mode Config) wurden Teil des Protokolls.

    In der Praxis werden die meisten IPSec-Verbindungen mithilfe von IKE implementiert, weil veraltete Geräte vorhanden sind oder nicht bereit sind, Änderungen an Administratoren vorzunehmen.


    Datenschutzprotokolle (ESP, AH)
    Die Hauptaufgabe besteht darin, Benutzerdaten zu schützen.


    • ESP (Encapsulating Security Payload) - verschlüsselt und authentifiziert die übertragenen Daten teilweise
    • AH (Authentication Header) - authentifiziert das gesamte Paket (mit Ausnahme von veränderbaren Feldern), verschlüsselt keine Daten, stellt jedoch sicher, dass das Paket während der Übertragung über das Netzwerk nicht geändert wurde

    IPSec-Verbindungsaufbau



    Die Teilnehmer einer IPSec-Verbindung werden Peers (Peers) genannt, was ihre Gleichwertigkeit in der aufgebauten Verbindung angibt. Eine Konfiguration in der Nähe des Client-Servers ist möglich. Beim Aufbau persistenter IPSec-Tunnel kann jeder der Peers ein Initialisierer sein.


    1. Einer der Peers initialisiert die IPSec-Verbindung
    2. Schlüsselinformationen werden ausgetauscht, Peer-Authentifizierung, Verhandlung von Verbindungsparametern
    3. Basierend auf den empfangenen Schlüsselinformationen wird ein verschlüsselter Hilfstunnel gebildet.
    4. Mithilfe eines verschlüsselten Tunnels bestimmen Peers Datenverschlüsselungsparameter und tauschen Informationen zur Schlüsselgenerierung aus.
    5. Das Ergebnis der vorherigen Phase ist ein Satz von Regeln und Schlüsseln für den Datenschutz (SA).
    6. In regelmäßigen Abständen aktualisieren Peers die Verschlüsselungsschlüssel

    Eines der Schlüsselkonzepte in IPSec ist die SA (Security Association) - es ist ein Peer-koordinierter Satz von Informationsverschlüsselungs- und Hash-Algorithmen sowie Verschlüsselungsschlüsseln.


    Manchmal finden Sie eine Abteilung für:


    • ISAKMP SA - Parameter und Schlüssel, die sich auf den Hilfstunnel beziehen
    • Data SA (oder nur SA) - Parameter und Schlüssel für die Verschlüsselung des Datenverkehrs

    Der Betrieb der Schlüsselvereinbarungsprotokolle


    Das IKE-Protokoll kann in zwei Modi arbeiten: hauptsächlich (Haupt) und aggressiv (aggressiv), das IKEv2-Protokoll enthält einen Modus.


    Ike Haupt



    Die erste Phase besteht aus sechs Paketen:
    1-2: Koordination der Verschlüsselungsparameter des Hilfstunnels und verschiedenen IPSec
    3-4- Optionen : Informationsaustausch zum Erzeugen des geheimen Schlüssels
    5-6: Authentifizierung von Peers über einen zusätzlichen verschlüsselten Kanal


    Die zweite Phase besteht aus drei Paketen:
    1-3: Verwenden eines verschlüsselten Hilfskanals. Koordination der Verkehrsschutzparameter, Informationsaustausch zur Erzeugung eines geheimen Schlüssels


    IKE Aggressiv



    Die erste Phase besteht aus drei Paketen:
    1: Senden eines Vorschlags zum Installieren eines zusätzlichen verschlüsselten Kanals und Informationen zum Erzeugen eines geheimen Schlüssels
    2: Antwort auf das Angebot, Informationen zum Erzeugen eines geheimen Schlüssels, Daten zur Authentifizierung
    3: Daten zur Authentifizierung


    Die zweite Phase besteht aus drei Paketen:
    1-3: Verwenden eines verschlüsselten Hilfskanals. Koordination der Verkehrsschutzparameter, Informationsaustausch zur Erzeugung eines geheimen Schlüssels


    Im aggressiven Modus sendet der Initiator nur einen Parametersatz im Angebot. Peer-Authentifizierungsinformationen werden vor der Installation eines sicheren Hilfstunnels ausgetauscht. Aggressiver Modus ist konsistent schneller, aber weniger sicher.


    IKEv2



    In IKEv2 heißen die Phasen: IKE_SA_INIT und IKE_AUTH. Wenn ich im folgenden Text jedoch von Phase1 und Phase2 spreche, gilt dies auch für IKEv2-Phasen.


    Jede IKEv2-Phase besteht aus zwei Paketen:
    IKE_SA_INIT: Koordinieren der Verschlüsselungsparameter des sekundären Tunnels, wobei Informationen ausgetauscht werden, um den geheimen Schlüssel zu generieren


    IKE_AUTH: Verwendung eines verschlüsselten Hilfskanals. Peers authentifizieren, Verkehrsschutzparameter aushandeln, Informationen austauschen, um einen geheimen Schlüssel zu erzeugen


    Sicherheitsdatenbank (SAD)


    Das Ergebnis der Arbeit von IKE (und IKEv2) sind Security Assotiations (SA), die die Parameter des Verkehrsschutzes und der Verschlüsselungsschlüssel bestimmen. Jede SA ist unidirektional und die IPSec-Verbindung enthält ein SA-Paar. Alle SAs werden in der SAD-Datenbank gespeichert und stehen dem Administrator zum Anzeigen und Zurücksetzen zur Verfügung.


    Datenkapselung



    IPSec bietet zwei Möglichkeiten zum Einkapseln von Daten:


    • Transportmodus - Nur die Nutzdaten des Pakets werden geschützt, der ursprüngliche Header bleibt dabei erhalten. Für die Erstellung von Tunneln wird der Transportmodus normalerweise in Verbindung mit ipip oder gre verwendet, deren Nutzdaten bereits das gesamte Quellpaket enthalten.
    • Tunnelmodus - kapselt das ursprüngliche Paket vollständig in ein neues (analog zu gre oder ipip). Für den Tunnel ipsec wird jedoch keine explizite Schnittstelle im System erstellt. Dies kann ein Problem sein, wenn dynamisches oder komplexes statisches Routing verwendet wird.

    Sicherheitsrichtlinien-Datenbank (SPD)


    Die Regelbasis, die bestimmt, welcher Datenverkehr verschlüsselt werden soll, das Datenschutzprotokoll, der Typ der Einkapselung und eine Reihe anderer Parameter.
    Die Position der SPD-Prüfung kann im Paketflussdiagramm angezeigt werden.



    NAT überwinden


    IPSec verwendet Netzwerkschichtprotokolle, um Daten zu übertragen, die NAT nicht verarbeiten kann. Zur Lösung des Problems wird das NAT-T-Protokoll verwendet (Erweiterung in IKE und Teil von IKEv2). Das Kernstück von NAT-T ist die zusätzliche Einkapselung von IPSec-Paketen in UDP-Pakete, die NAT verarbeitet.


    IPSec in Mikrotik


    IPSec ist kostenlos auf jedem Gerät verfügbar, auf dem RouterOS ausgeführt wird und das Sicherheitspaket installiert ist.


    Hardware-Verschlüsselung


    Für das Entladen der CPU wird einigen Modellen von MikroTik-Routern die Hardwarebeschleunigung der Verschlüsselung hinzugefügt. Eine vollständige Liste finden Sie im Wiki .
    Die meisten Budgetoptionen : RB750Gr3 , RB3011 , HAP AC ^ 2 .


    Ich selbst habe die IPSec-Geschwindigkeit zwischen zwei RB1100AHx2 und zwei RB750Gr3 überprüft.


    Um maximale Ergebnisse bei RB1100AHx2 zu erzielen, benötigen Sie:


    • Verwenden Sie Port 11, der direkt mit der CPU verbunden ist, und konfigurieren Sie einen CPU-Kern für den Datenverkehr an Port 11
    • Verwenden Sie für Schnittstellen nur Hardware-Warteschlangen, und deaktivieren Sie RPS
    • Aktivieren Sie Layer3 FastPath (ca. 800 MBit / Sek.) Oder schließen Sie IPSec-Datenverkehr von Conntrack (ca. 700 MB / Sek.) Aus.
      Ohne die beschriebenen Manipulationen am langsamsten Port (Ether13) ist es möglich, ~ 170 MBit / Sek. Auf die üblichen ~ 400 MBit / Sek.

    Bei RB750Gr3 ohne Optimierungen um 200 MBit / s.


    Router auf Single-Core-Qualcomm zeigen je nach Modell ein Ergebnis von 10 bis 40 MBit / s, Optimierungen und Überlastungen mit anderen Prozessen.


    Ich empfehle, sich mit dem Vortrag des Mitarbeiters mikrotik vertraut zu machen. Es gibt Themen, wie Sie die Einstellungen optimieren, um die CPU-Belastung zu reduzieren und die Geschwindigkeit zu erhöhen, die ich dem Text nicht hinzugefügt habe.


    Unterschiede 6.42.X und 6.43.X


    Abhängig von der verwendeten Version von RouterOS unterscheidet sich das IPSec-Konfigurationsmenü.





    Es gibt bereits neue Änderungen in der Testversion. Lesen Sie daher die Versionshinweise, bevor Sie die Aktualisierung durchführen.



    IPSec-Konfiguration



    Menü [IP] -> [IPSec] ist nicht so unheimlich, wie es auf den ersten Blick erscheint. Das Diagramm zeigt, dass die Hauptkonfigurationspunkte folgende sind: Peers und Profile.
    Die Registerkarten Remote-Peers und installierte SAs dienen nur der Information.


    Peers- und Peers-Profile


    Die IPSec-Peers-Konfiguration zum Herstellen einer IKE-Verbindung und zum Erstellen eines sicheren Hilfstunnels.


    Bild


    Einrichten von IPSec-Remote-Peers



    Hinweise
    • Начиная с 6.43 RouterOS ругается при использовании PSK без дополнительной аутентификации. Если не хочется дополнительно настраивать ключи, сертификаты или xAuth можно перейти на IKEv2 или игнорировать предупреждение.
    • В качестве пиров можно указывать конкретные IP либо подсети (актуально для Client-Server VPN)
    • При наличии конфликтующих правил, для соединения с пиром будет использовано правило с более точной подсетью (по аналогии с routes)
    • Аутентификация xAuth и rsa key не работает в IKEv2
    • Для IKEv2 Mikrotik сделали свою реализацию xAuth не совместимую с другими платформами
    • Passive режим обычно используется для создания Client-Server VPN (L2TP/IPsec или IKEv2 mode config), но может быть полезен при подключении большого числа Site-to-Site туннелей к одной точке, для снижения паразитного трафика.
    • Если планируете использовать xAuth, то "сервер" должен быть passive. Пользователи для сервера создаются в [IPSec]->[Users]
    • При использовании Generate policy выбирайте режим port-strict

    Profile (Vorschläge) für das Matching der Phase 1 einstellen


    Bild



    Hinweise
    • Дополнительные опции для IKE стали частью IKEv2, настройки игнорируются
    • Соотношение групп DH с их номерами (номера групп используются у других вендеров)
    • При отправке предложений (Proposals) система сортирует пары алгоритм+группа dh от более стойких к менее стойким

    Richtlinien und Richtlinienvorschläge


    Richtlinien überprüfen das Weiterleiten von Paketen auf die Einhaltung der Bedingungen und wenden die angegebenen Aktionen an. Wenn Sie zum Paketfluss zurückkehren, werden die Blöcke mit der IPSec-Richtlinie mit den Richtlinien abgeglichen. Die Aktionen geben Folgendes an: IPSec-Sicherheitsprotokoll (ESP oder AH), Vorschläge für SA-Aushandlung, Einkapselungsmodus.
    Bild


    Das Paket übergibt die Richtlinie nacheinander, bis sie mit den Bedingungen von einer von ihnen übereinstimmt.


    Richtlinieneinstellung


    Gerüchte
    • Обычно не требуется указывать конкретный Src. и Dst. Port, но в целом возможность шифровать трафик отдельного приложения интересна
    • В списке Protocols представлены не все протоколы ip (например нет gre), можно указать номер нужного протокола вручную.
    • Шаблоны не являются политиками! Они используются, если в конфигурации пира установлено generate-policy
    • Что делать, если определенные SA для политики не были найдены. Раньше с L2TP/IPSec была проблема, когда несколько клиентов из-за одного NAT не могли подключиться (при использовании IKE), данный баг решается (при условии, что эти клиенты не windows) если установить level=unique. Иначе переходите на IKEv2
    • При настройке политик используйте [Safe mode], одно неловкое движение и вы рискуете потерять доступ к роутеру по Level3

    Customizing-Angebote (Vorschläge) zur Aushandlung von SA



    Gruppen


    Wird verwendet, um Richtlinienvorlagen und Peers zu verknüpfen.


    Bild


    In einer der alten Versionen von RouterOS gab es einen Fehler in der Standard-Nichtarbeitsgruppe.


    Modus Konfig


    Senden und Empfangen von IP-Parametern ohne Verwendung zusätzlicher Protokolle. Ermöglicht das Erstellen eines eigenständigen Client-to-Server-VPNs (nur IPSec).




    Schlüssel und Benutzer


    Wird für die erweiterte Peer-Authentifizierung verwendet.
    Schlüssel
    RSA-Schlüssel: Generieren, Importieren und Exportieren. Wird in IKEv2 nicht unterstützt.



    Benutzer
    xAuth-Benutzerdatenbank für "Server". Der Client gibt die xAuth-Einstellungen in der Peer-Konfiguration an. Es ist möglich, die xAuth-Authentifizierung an einen RADIUS-Server weiterzuleiten.



    Remote-Kollegen


    Eine Liste aller Peers, die einen Hilfstunnel installieren und installieren (Phase 1). Sie können Peers löschen, um sekundäre Tunnelschlüssel zu aktualisieren.


    Bild


    Bild


    Installierte SAs


    SAD-Datenbank oder Liste aller vereinbarten SAs. Sie können die verwendeten Datenschutzalgorithmen und -schlüssel sehen.


    Bild


    Bild


    Das Hardware-AEAD-Flag zeigt die Verwendung der Hardware-Verschlüsselung an.


    Bild


    Der Administrator kann die SA zurücksetzen, aber nur gleichzeitig alle des gleichen Typs (esp oder ah).


    IPSec und Firewall


    In der Firewall können Sie überprüfen, ob der Datenverkehr eingehende oder ausgehende IPSec-Richtlinien ist oder nicht. Die offensichtliche Verwendung ist L2TP / IPSec. Sie können die Installation von L2TP-Verbindungen verhindern, wenn der Datenverkehr noch nicht verschlüsselt wurde.



    In IPSec verwendete Protokolle und Ports


    • IKE - UDP: 500
    • IKEv2 - UDP: 4500
    • NAT-T-UDP: 4500
    • ESP - ipsec-esp (50)
    • AH - ipsec-ah (51)

    IPSec und Endpoinds


    Und nun zu den Wunden ...
    Im Wiki mikrotik gibt es Tabellen mit Hash- und Verschlüsselungsalgorithmen für Windows , iOS , OS-X .


    Ich habe keine Informationen über den in den Android-vpn integrierten Client gefunden, aber im Allgemeinen funktionieren die Vorschläge mit den Fenstern IKEv2 unterstützt Android nicht, Sie müssen StrongSwan verwenden .


    Konfigurationsbeispiele


    Schema und grundlegende Konfiguration für Beispiele mit Site-to-Site-Tunneln:



    #Mikrotik1
    /ip address
    add address=10.10.10.10/24 interface=ether1 network=10.10.10.0
    add address=192.168.100.1/24 interface=ether2 network=192.168.100.0
    /ip firewall nat
    add action=masquerade chain=srcnat out-interface=ether1
    /ip route
    add distance=1 gateway=10.10.10.1 dst-address=0.0.0.0/0
    #Mikrotik2
    /ip address
    add address=10.20.20.20/24 interface=ether1 network=10.20.20.0
    add address=192.168.200.1/24 interface=ether2 network=192.168.200.0
    /ip firewall nat
    add action=masquerade chain=srcnat out-interface=ether1
    /ip route
    add distance=1 gateway=10.20.20.1 dst-address=0.0.0.0/0

    IPSec im Tunnelmodus



    Schritt Konfiguration:


    1. Erstellen Sie Vorschläge für IKE-Phase1
    2. Erstellen Sie ein Fest. Geben Sie Adresse, Vorschläge, Austauschmodus und Schlüssel-PSK an. Ich habe IKEv2 gewählt, Sie können main / agressive nach Wunsch verwenden
    3. Erstellen Sie Vorschläge für SA
    4. Geben Sie die Subnetze an, zwischen denen wir den Tunnel erstellen
    5. Geben Sie die Adressen von SA, den Tunnelmodus und Vorschläge zum Verschlüsseln des Datenverkehrs an
    6. Bearbeiten der NAT-Regel

    Mikrotik1


    Консольный вариант:


    #1
    /ip ipsec peer profile
    add dh-group=modp2048 enc-algorithm=aes-128 hash-algorithm=sha256 name=ipsec-tunnel-ike nat-traversal=no
    #2
    /ip ipsec peer
    add address=10.20.20.20/32 exchange-mode=ike2 profile=ipsec-tunnel-ike secret=test-ipsec
    #3
    /ip ipsec proposal
    add auth-algorithms=sha256 enc-algorithms=aes-256-cbc name=ipsec-tunnel-sa
    #4-5
    /ip ipsec policy
    add dst-address=192.168.200.0/24 proposal=ipsec-tunnel-sa sa-dst-address=10.20.20.20 sa-src-address=10.10.10.10 src-address=192.168.100.0/24 tunnel=yes
    #6
    /ip firewall nat
    set 0 ipsec-policy=out,none

    Mikrotik2


    Консольный вариант:


    #1
    /ip ipsec peer profile
    add dh-group=modp2048 enc-algorithm=aes-128 hash-algorithm=sha256 name=ipsec-tunnel-ike nat-traversal=no
    #2
    /ip ipsec peer
    add address=10.10.10.10/32 exchange-mode=ike2 profile=ipsec-tunnel-ike secret=test-ipsec
    #3
    /ip ipsec proposal
    add auth-algorithms=sha256 enc-algorithms=aes-256-cbc name=tets-ipsec-sa
    #4-5
    /ip ipsec policy
    add dst-address=192.168.100.0/24 proposal=tets-ipsec-sa sa-dst-address=10.10.10.10 sa-src-address=10.20.20.20 src-address=192.168.200.0/24 tunnel=yes
    #6
    /ip firewall nat
    set 0 ipsec-policy=out,none

    Und dann NAT?

    Для работы в туннельном режиме необходим фейковый маршрут до удаленной подсети, либо маршрут по умолчанию, иначе пакеты не пройдут дальше Routing decision. С первым вариантом проблем обычно нет, а вот с дефолтным маршрутом и Source NAT (первое и второе присутствует на подавляющем большинстве домашних и офисных маршрутизаторов) будут проблемы.


    Вспоминаем Packet Flow. Пакеты проходят Source NAT раньше чем политики IPSec, правило с masquerade ничего не знает о том что трафик предназначен для отправки в "эфимерный" туннель и будет транслировать заголовки пакетов подлежащих отправки в IPSec, когда пакет с измененным заголовком попадет на проверку в Policies адрес источкина в заголовке не будет подходить под правило и пакет улетит на default route, который увидев адрес назначения из приватной сети вероятнее всего его отбросит.


    Есть несколько решений проблемы:


    • Использование фейкового маршрута
    • Использование дополнительного accept правила перед SourceNAT
    • Подвергать src-nat только те пакеты, для которых нет политик IPSec (в примере)
    • Исключать трафик из connection tracking средствами RAW

    Verbindung überprüfen
    Bild


    1. Wir sehen einen Nachbarn in den Remote Peers
    2. Wir sehen installierte SA (Verkehrszähler ändern sich nicht, bis Sie sie loslassen)
    3. In der Politik: Status etabliert und Flagge (A)

    IPIP / IPSec



    Vorkonfiguration des IPIP-Tunnels:


    #Mikrotik1
    #Настройка интерфейса ipip
    /interface ipip
    add allow-fast-path=no clamp-tcp-mss=no name=ipip-vpn remote-address=10.20.20.20
    #Установка ip адреса на ipip интерфейс
    /ip address
    add address=10.30.30.1/30 interface=ipip-vpn
    #Статический маршрут до удаленной подсети
    /ip route
    add distance=1 dst-address=192.168.200.0/24 gateway=10.30.30.2
    #Mikrotik2
    #Все аналогично, меняются только адреса и подсети
    /interface ipip
    add allow-fast-path=no clamp-tcp-mss=no name=ipip-vpn remote-address=10.10.10.10
    /ip address
    add address=10.30.30.2/30 interface=ipip-vpn
    /ip route
    add distance=1 dst-address=192.168.100.0/24 gateway=10.30.30.1

    Schrittweise IPSec-Konfiguration:


    1. Erstellen Sie Vorschläge für IKE-Phase1
    2. Erstellen Sie ein Fest. Geben Sie Adresse, Vorschläge, Austauschmodus und PSK-Schlüssel an
    3. Erstellen Sie Vorschläge für SA
    4. Geben Sie die Subnetze an, zwischen denen wir den Tunnel erstellen
    5. Geben Sie die Adressen der SA, die Art des zu verschlüsselnden Datenverkehrs und die Vorschläge an

    Mikrotik1


    Консольный вариант:


    #1
    /ip ipsec peer profile
    add dh-group=modp2048 enc-algorithm=aes-128 hash-algorithm=sha256 name=ipsec-tunnel-ike nat-traversal=no
    #2
    /ip ipsec peer
    add address=10.20.20.20/32 exchange-mode=ike2 profile=ipsec-tunnel-ike secret=test-ipsec
    #3
    /ip ipsec proposal
    add auth-algorithms=sha256 enc-algorithms=aes-256-cbc name=ipsec-tunnel-sa
    #4-5
    /ip ipsec policy
    add dst-address=10.20.20.20/32 proposal=ipsec-tunnel-sa protocol=ipencap src-address=10.10.10.10/32 sa-dst-address=10.20.20.20 sa-src-address=10.10.10.10

    Mikrotik2


    #1
    /ip ipsec peer profile
    add dh-group=modp2048 enc-algorithm=aes-128 hash-algorithm=sha256 name=ipsec-tunnel-ike nat-traversal=no
    #2
    /ip ipsec peer
    add address=10.10.10.10/32 exchange-mode=ike2 profile=ipsec-tunnel-ike secret=test-ipsec
    #3
    /ip ipsec proposal
    add auth-algorithms=sha256 enc-algorithms=aes-256-cbc name=tets-ipsec-sa
    #4-5
    /ip ipsec policy
    add dst-address=10.10.10.10/32 proposal=tets-ipsec-sa protocol=ipencap src-address=10.20.20.20/32 sa-dst-address=10.10.10.10 sa-src-address=10.20.20.20

    Der unaufmerksame Unterschied besteht in der Konfiguration des Tunnel- und Transportmodus in den IPSec-Richtlinien:
    Bild


    Der Verbindungstest ähnelt dem Tunnelmodus.


    L2TP / IPSec


    Die vorherigen Beispiele eignen sich gut zum Erstellen persistenter VPNs zwischen zwei Peers mit statischen externen IP-Adressen.


    Wenn die Adresse eines Peers dynamisch ist (und sich normalerweise hinter einem NAT befindet), müssen Sie ein anderes Client-to-Server-VPN verwenden.
    Bild


    Vorläufige L2TP-Konfiguration:


    #Создание пула адресов для клиентов
    /ip pool
    add name=pool-l2tp ranges=192.168.77.10-192.168.77.20
    #Создание профиля для клиентов
    /ppp profile
    add change-tcp-mss=yes local-address=192.168.77.1 name=l2tp-ipsec only-one=yes remote-address=pool-l2tp use-compression=no use-encryption=no use-mpls=no use-upnp=no
    #Создание учетных записей
    /ppp secret
    add name=user1 password=test1 profile=l2tp-ipsec service=l2tp
    add name=user2 password=test2 profile=l2tp-ipsec service=l2tp
    add name=user3 password=test3 profile=l2tp-ipsec service=l2tp
    #Включение сервера L2TP (без автонастройки ipsec)
    /interface l2tp-server server
    set authentication=chap,mschap2 default-profile=l2tp-ipsec enabled=yes

    Warum ignoriere ich die automatische IPSec-Konfiguration?

    В конфигурации ipip,gre,eoip,l2tp присутствует автонастройка ipsec соединения, по сути система создает динамические правила для Peers и Policies за вас, но во-первых — мы не ищем легких путей, во-вторых при обновлении с 6.42 на 6.43 автоматически созданные туннели ломались и не факт, что этого не повторится.


    Schrittweise IPSec-Konfiguration:


    1. Erstellen Sie eine neue Gruppe (Sie können Standard verwenden)
    2. Erstellen Sie Vorschläge für IKE-Phase1
    3. Erstellen Sie ein Fest oder eher ein Subnetz. Schwört auf den PSK-Schlüssel, aber wenn wir uns mit Windows als Client beschäftigen, haben wir die Wahl: Zertifikate oder PSK.
    4. Setze passiv = yes und send-init-contact = no, in generate-policy = port-strict (akzeptiere Port vom Client)
    5. Erstellen Sie Vorschläge für SA
    6. Erstellen Sie eine Vorlage zum Generieren von Richtlinien
    7. Vorschlag für SA angeben

    Mikrotik-Konfiguration

    image
    На скриншоте ошибка — указывать dst. port и src. port не нужно


    Консольный вариант:


    #1
    /ip ipsec policy group
    add name=l2tp-ipsec
    #2
    /ip ipsec peer profile
    add dh-group=modp1024 enc-algorithm=aes-256 hash-algorithm=sha256 name=l2tp-ipsec-ike
    #3-4
    /ip ipsec peer
    add address=0.0.0.0/0 generate-policy=port-strict passive=yes policy-template-group=l2tp-ipsec profile=l2tp-ipsec-ike secret=secret-ipsec-pass send-initial-contact=no
    #5
    /ip ipsec proposal
    add auth-algorithms=sha256,sha1 enc-algorithms=aes-256-cbc,aes-128-cbc name=l2tp-ipsec-sa pfs-group=none
    #6-7
    /ip ipsec policy
    add dst-address=0.0.0.0/0 group=l2tp-ipsec proposal=l2tp-ipsec-sa protocol=udp src-address=0.0.0.0/0 template=yes

    Konfigurieren einer Firewall zum Erstellen von L2TP-Verbindungen nur nach IPSec


    /ip firewall filter
    #Разрешаем IKE, NAT-T и ipsec-esp
    add chain=input protocol=17 dst-port=500,4500 action=accept
    add chain=input protocol=50 action=accept
    #Разрешаем L2TP, только если есть политика ipsec для данного трафика
    add chain=input protocol=17 dst-port=1701 ipsec-policy=in,ipsec action=accept
    add chain=input protocol=17 dst-port=1701 action-drop

    IKEv2-VPN


    Die Variante mit L2TP ist beliebt, aber dank der Moduskonfiguration können Sie den VPN-Server nur mit IPSec konfigurieren. Dies ist eine vielversprechende Art von VPN, die bisher jedoch nur selten verwendet wird. Neben der serverseitigen Konfiguration gebe ich ein Beispiel für die Einrichtung eines strongSwan-Clients auf Android.


    Bild


    Natürlich ist nicht alles so rosig. Die meisten "Benutzer" -Betriebssysteme (insbesondere Windows und Android) stimmen zu, mit einem solchen VPN nur zu arbeiten, wenn sie durch Zertifikate oder EAP authentifiziert werden.


    Zertifikate sind mein Schwachpunkt, wenn jemand weiß, wie er ein selbstsigniertes Zertifikat generiert, das von Windows importiert wird und in einer Verbindung verwendet wird. Schreiben Sie in einen Kommentar.


    Zertifikate vor der Generierung:


    #Root CA и сапомодпись
    /certificate add name=ca common-name="IKEv2 CA" days-valid=6928
    /certificate sign ca ca-crl-host=<IP роутера>
    #Сертификат для сервера vpn
    /certificate add common-name=<IP роутера> subject-alt-name=IP:<IP роутера> key-usage=tls-server name=vpn days-valid=6928
    #Подпись серверного сертификата
    /certificate sign vpn ca=ca
    #Сертификат для клиента
    #Клиенты с одним сертификатам не смогут работать одновременно, поэтому генерируйте по одному для каждого
    #Для отмены доступа необходимо сделать Revoke клиентского сертификата
    /certificate add common-name=client key-usage=tls-client name=client days-valid=6928
    #Подпись клиентского сертификата
    /certificate sign client ca=ca

    Schritt für Schritt IKEv2 VPN-Konfiguration:


    1. Wir erstellen einen Adresspool für die Verteilung an Kunden
    2. Erstellen Sie ein Modus-Konfigurationsprofil zum Verteilen von IP-Einstellungen an Clients
    3. Erstellen Sie Gruppen, um Peers- und Vorlagenrichtlinien zu verknüpfen.
    4. Erstellen Sie Vorschläge für IKE-Phase1
    5. Erstellen Sie ein Profil, um Peers zu verbinden. Authentifizierung über Zertifikate, IKEv2-Protokoll, Passivmodus
    6. Geben Sie das Profilprofilkonfigurationsprofil sowie eine Gruppe von 3 Schritten an und aktivieren Sie die Richtliniengenerierung
    7. Erstellen Sie Vorschläge für SA
    8. Erstellen Sie eine Vorlage zum Generieren von Richtlinien
    9. Angeben von Vorschlägen für SA

    Mikrotik-Setup

    image


    #1
    /ip pool
    add name=pool-ike ranges=192.168.77.10-192.168.77.20
    #2
    /ip ipsec mode-config
    add address-pool=pool-ike address-prefix-length=32 name=ikev2-vpn static-dns=77.88.8.8 system-dns=no
    #3
    /ip ipsec policy group
    add name=ikev2-vpn
    #4
    /ip ipsec peer profile
    add enc-algorithm=aes-256,aes-128 hash-algorithm=sha256 name=ikev2-vpn
    #5-6
    /ip ipsec peer
    add address=0.0.0.0/0 auth-method=rsa-signature certificate=vpn exchange-mode=ike2 generate-policy=port-strict mode-config=ikev2-vpn passive=yes policy-template-group=ikev2-vpn profile=ikev2-vpn send-initial-contact=no
    #7
    /ip ipsec proposal
    add auth-algorithms=sha256,sha1 enc-algorithms=aes-256-cbc,aes-128-cbc name=ikev2-vpn
    #8-9
    /ip ipsec policy
    add dst-address=0.0.0.0/0 group=ikev2-vpn proposal=ikev2-vpn src-address= 0.0.0.0/0 template=yes

    Konfiguration strongSwan auf Android.

    Предварительно необходимо перенести client и ca сертификаты на телефон.
    https://habrastorage.org/webt/tp/pk/ad/tppkadaifd1k7xi6hf3jxgg7vcs.png


    Для глазастых: Крестик около wi-fi стоит т.к. большая часть системных приложений заблокирована средствами AFWall+.


    Wenn die Verbindung erfolgreich ist, gibt es eine dynamische Richtlinie, einen Eintrag in Remote-Peers und ein SA-Paar.


    Bild


    Bild


    Bild


    Die Demo-Lizenz von RouterOS x86 hat keine Einschränkungen hinsichtlich der Anzahl der IPSec-Tunnel, einschließlich IKEv2-VPN. Sie können die RouterOS x86-Demo auf dem VPS bereitstellen (nicht mit RouterOS CHR kostenlos verwechseln, alles ist traurig) und mit minimalem Verwaltungsaufwand einen persönlichen VPN-Server erhalten, ohne eine Lizenz für RouterOS oder RouterOS CHR zu erwerben.


    Ein paar Worte zur Analyse von IPSec-Protokollen


    Die Protokolle in Mikrotik sind eine separate Geschichte, und manchmal sind sie detailliert genug, um das Problem zu analysieren, aber das Fehlen trivialer Funktionen: clear, copy, find, zwingt Sie zur Installation eines separaten Syslog-Servers.


    In Bezug auf IPSec gibt es hier eine schnelle Protokollanalyseoption (wobei nur die benötigte auf einer separaten Registerkarte verbleibt):


    Bild


    /system logging action
    add memory-lines=100000 name=ipsec target=memory
    /system logging
    add action=ipsec topics=ipsec,error
    add action=ipsec topics=ipsec,debug,!packet
    add action=ipsec topics=ipsec,info

    Und einige Beispiele für typische IPSec-Konfigurationsprobleme:


    Vorschläge, die mit dem Problem in Phase1 übereinstimmen

    image


    1. Читаем сообщение об ошибке. Проблема при согласовании Proposals на первой фазе.
    2. Смотрим выше, роутер сам подсказывает что прислал пир, а что настроено локально

    Problem der Koordinierung der Vorschläge IKE_SA_INIT

    В логах вы увидите примерно следующее:



    Анализируем трафик


    В запросе можно посмотреть proposals от пира:



    В ответе видим, что не найдено подходящих proposals:



    Verhandlungsproblem bei Vorschlägen für SA


    Роутер подсказывает о ошибке proposals на phase2 и показывает что настроено локально, а что удаленно.


    Problem bei der Verhandlung von Vorschlägen IKE_AUTH


    Видим, что произошло соединение и аутентификация пиров, но дальше ошибка proposals. В debug подробностей не увидите, в wireshark тоже (трафик IKE_AUTH зашифрован).


    PSK-Authentifizierungsfehler

    Для IKE:



    Для IKEv2:


    Falscher IKE-Modus

    image
    Видим, что Phase1 рвется по таймауту, хотя пакеты между пирами ходят. Но размер входящего пакета значительно больше, если проанализировать через wireshark, то увидим, что удаленный пир использует aggressive mode.



    Видим, что от нас пакеты отправляются на UDP:500, а приходят на UDP:4500 причем довольно крупные. Тут у удаленного пира стоит режим IKEv2.


    Lesen Sie schließlich auch den Abschnitt zur Fehlerbehebung im Wiki . Das gesamte Material zu IPSec ist für eine Überprüfung wünschenswert. Ich habe nur die grundlegenden Werkzeuge und Einstellungen beschrieben.


    Jetzt auch beliebt: