Unterschiede zwischen den Revisionen 3 und 4
Revision 3 vom 2012-06-13 21:26:24
Größe: 9227
Autor: anonym
Kommentar: converted to 1.6 markup
Revision 4 vom 2023-08-19 18:12:36
Größe: 0
Autor: phil
Kommentar: Veraltet
Gelöschter Text ist auf diese Art markiert. Hinzugefügter Text ist auf diese Art markiert.
Zeile 1: Zeile 1:
= Virtual Private Network mini-howto (Linux-Kernel 2.6.x && Windows 2000/XP) =

Wichtigste Quellen um Überblick:
 * ausführlich Linux: http://www.ipsec-howto.org
 * ausführlich Windows: http://www.wiretapped.net/~fyre/ipsec/
----

<<TableOfContents>>

-----


== Linux mit Kernel 2.6.x ==

Vier Schritte zum privaten IP-Verkehr (nötige Zeit 20min-1.5h)

=== Kernel v2.6 kompilieren ===
{{{
 *
 * Networking Options
 * DeviceDrivers->NetworkingSupport->NetworkingOptions
 *
 PF_KEY sockets (NET_KEY) [Y/n/m/?] y
 IP: AH transformation (INET_AH) [Y/n/m/?] y
 ** bei NAT kein AH verwenden!
 IP: ESP transformation (INET_ESP) [Y/n/m/?] y
 IP: IPsec user configuration interface (XFRM_USER) [Y/n/m/?] y

 *
 * Cryptographic API
 * folgende Punkte sollten nicht veraenderbar sein, sonst y/m
 Cryptographic API (CRYPTO) [Y/n/?] y
 HMAC support (CRYPTO_HMAC) [Y/n/?] y
 Null algorithms (CRYPTO_NULL) [Y/n/m/?] y
 MD5 digest algorithm (CRYPTO_MD5) [Y/n/m/?] y
 SHA1 digest algorithm (CRYPTO_SHA1) [Y/n/m/?] y
 DES and Triple DES EDE cipher algorithms (CRYPTO_DES) [Y/n/m/?] y
 AES cipher algorithms (CRYPTO_AES) [Y/n/m/?] y
}}}

=== IPSec Tools installieren ===

 * Debian: apt-get install ipsec-tools [testing]
 * sonst: von ''http://sourceforge.net/projects/ipsec-tools'' runterladen
 * installieren:{{{
./configure
make
make install}}}

=== Konfiguration ===
Achtung: ab Kernel 2.6.10 funktioniert die folgende Konfiguration nicht mehr zum Tunneln von Daten - Details waren leider zum Zeitpunkt des Schreibens dieses Textes (Januar 02004) noch nicht verfügbar - die Problemlösung findest du unter http://lkml.org/lkml/2004/12/26/80

==== manuelle Schlüssel ====
 * /etc/ipsec.conf anlegen (BspIpsecConf, schlecht formatiert)
  * damit werden feste 128Bit Keys benutzt, nur zum testen verwenden!
  * eigene 128Bit Keys generierst du so: `dd if=/dev/random count=16 bs=1| xxd -ps`
 * die ipsec.conf kopierst du auf beide Rechner und vertauschst bei einem "in" mit "out" in der "spdadd" Sektion
  * dabei auf die Reihenfolge achten (rechner mit ip-adresse x.x.x.1 hat "out" bei x.x.x.1 -> x.x.x.2 stehen und andersrum hat er "in" bei x.x.x.2 -> x.x.x.1 stehen)

==== racoon zum Schlüsselaustausch ====
 * racoon ist die bessere Wahl (siehe IKECrack) - allerdings traten (zumindest im Oktober 02004) auch gelegentlich Kommunikationsverweigerungen auf (danach sind wir auf manuelle Schlüssel umgestiegen)
 * dazu kann aus der ipsec.conf der obere Teil mit den statischen Kennwörtern raus (es bleiben 2flushs und 2spdadds)
 * `apt-get install racoon` (racoon-tool zum konfigurieren wählen, falls du ausschliessich pre-shared-keys verwenden möchtest - ansonsten wird deine racoon.conf regelmäßig geplättet)
 * `vi /etc/racoon/racoon.conf` den remote- und sainfo-Bereich auskommentieren und anpassen
  * "path pre_shared_key" - Pfad für psk-Datei festlegen, in die du dann die IP-Adresse und eine Passphrase deiner Wahl schreibst
  * "log notify" ist fuer den Anfang noch ganz hilfreich
  * denn gewünschten Algorithmus eintragen
  * vorerst evtl. firewalls runterfahren, das spart ne Menge Zeit beim Fehlersuchen ;)
 * auf der Gegenseite machst du das gleiche, nur "in" & "out" in der ipsec.conf werden wieder vertauscht und die IP-Adressen in ''racoon.conf'' und zu guter letzt auch noch der Rechnername in der psk-Datei

=== letz fetz! ===

 * `setkey -f /etc/ipsec.conf` (nicht vergessen, bestenfalls in bootscript schreiben)
 * `racoon -F -f /etc/racoon/racoon.conf` (-F steht fuer foreground, so kannst du genau mitlesen, was abgeht)
  * beide befehle auf beiden Rechnern ausführen
  * racoon gibt recht ausführliche Meldungen, damit findet man schnell Fehler. Später dann ohne "-F" starten (lassen) und "log notify" auf "debug" stellen
  * bsp-confs liegen unter ''/usr/share/doc/racoon'' oder auf oben angegebener Seite
 * bei Erfolg wandern nur noch "ESP" Pakete von 1 nach 2 und selbst nfs macht wieder Spass. Fehlt nur noch Hardware-AES ...
 * der Kernel erkennt nun automatisch ob er zu einem Ziel verschlüsseln soll und wenn ja leitet er ggf. das !InternetKeyExchange Verfahren ein (racoon). D.h. zu anderen Rechnern hat man immernoch eine ungekapselte Verbindung - jubelfreu
 * ein Ping kann im ersten Moment 2-3 Sekunden dauern, da erst der Diffie-Hellman-Schlüsselaustausch (geiles Teil) stattfindet und dann der Tunnel "gebaut" wird
 * auf dem entfernten Rechner sollte man die verschlüsselte Verbindung nur als ''use'' und nicht als ''require'' (siehe ''ipsec.conf'') definieren, um bei Problemen notfalls die Verschlüsselung vom lokalen Rechner aus deaktivieren zu koennen (`setkey -FP; setkey -F`)


=== Hilfe ===

KleinesGlossar


=== iptables-Regeln ===
 * ''ah'' und ''esp'' als Input erlauben: {{{
iptables -A INPUT -i ethX --protocol esp -j ACCEPT
iptables -A INPUT -i ethX --protocol ah -j ACCEPT}}}
 * udp-Port 500 fuer ''racoon'' oeffnen: {{{
iptables -A INPUT -i ethX --protocol udp --dport 500 -j ACCEPT
iptables -A OUTPUT -o ethX --protocol udp --dport 500 -j ACCEPT}}}

----

== x.509-Zertifikate ==
Als Alternative zu statischen Schlüsseln kannst du auch x.509-Zertifikate verwenden. Ein Schlüsselwechsel ist hier problemloser zu bewerkstelligen, solange der neue Schlüssel von einer anerkannten CA (notfalls eine selbstgemachte) signiert wird.

=== faxe als ca ===
 * auf faxe erstellen: {{{
/home/scripts/makeCert.sh ipsec-NAME}}}
 * Namensvorschläge (falls du magst):{{{
Organizational Unit: Sektion SecureBits
Common Name: NAME.nodes.systemausfall.org}}}
 * das Systemausfall-Zertifikat: ''/home/certificates/demoCA/cacert.pem'' ins racoon-Schlüsselverzeichnis kopieren
  * zusätzlich braucht ''racoon'' auch die certificate-revocation-List (''crl'')
  * beide müssen im racoon-Schlüsselverzeichnis per Hash verlinkt werden (`c_rehash VERZEICHNIS` - beachtet nur ''.pem''-Dateien)

=== eigene ca ===
 * gute GUIs:
  * ''xca'' - (es beruht leider auf ''libdb3++'' (stable) - also muss ''libdb3c102'' (testing/unstable) entfernt werden)
  * ''tinyca'' - empfehlenswert
 * du musst die Zertifikate der CAs, deren Schlüssel du akzeptieren willst, in dein racoon-Schlüsselverzeichnis legen und dort deren Hash-Werte verlinken ('''c_rehash VERZEICHNIS''' - beachtet nur ''.pem''-Dateien)
 * alle Schlüssel, die von diesen CAs signiert wurden, sind nun zulässig

== Beispielkonfiguration ==
=== racoon.conf ===
{{{path certificate "/home/certificates";

remote anonymous {
       exchange_mode main;
       generate_policy on;
       verify_cert on;
       certificate_type x509 "ipsec-staub.crt" "ipsec-staub.key";
       my_identifier asn1dn;
       peers_identifier asn1dn;
       proposal {
               encryption_algorithm 3des;
               hash_algorithm md5;
               authentication_method rsasig;
               dh_group modp1024;
       }
}

sainfo anonymous {
       pfs_group modp768;
       encryption_algorithm 3des;
       authentication_algorithm hmac_md5;
       compression_algorithm deflate;
}
}}}

=== ipsec.conf ===
{{{flush;
spdflush;

spdadd 192.168.23.1 192.168.23.21 any -P in ipsec esp/transport//require ah/transport//require;
spdadd 192.168.23.21 192.168.23.1 any -P out ipsec esp/transport//require ah/transport//require;
spdadd 192.168.23.21 0.0.0.0/0 any -P out ipsec esp/tunnel/192.168.23.21-192.168.23.1/require;
spdadd 0.0.0.0/0 192.168.23.21 any -P in ipsec esp/tunnel/192.168.23.1-192.168.23.21/require;
}}}

----

== M$ Windows 2000/XP ==

Quelle: http://www.wiretapped.net/~fyre/ipsec/

=== Kurzzusammenfassung mit den deutschsprachigen Menüpunkten ===
 1. erstmal PKCS#12-Zertifikate erstellen, mit denen Windows umgehen kann: '''openssl pkcs12 -export -inkey abyss.key -certfile ca.crt -in abyss.crt -out abyss.p12'''
 1. unter ''Start -> Ausführen'' das Programm '''mmc''' starten
 1. ''<nowiki>Konsole -> Snap-In hinzufügen/entfernen</nowiki>'' anschließend auf ''Hinzufügen''
 1. ''Zertifikate'', dann ''Dienstkonto'' und nun ''IPSEC-Richtlinienagent'' wählen
 1. zusätzlich ''IP-Sicherheitsrichtlinienverwaltung'' und dann ''lokaler Computer'' hinzufügen
 1. Snap-In-Fenster schließen
 1. den ''Zertifikate''-Baum öffnen und mit der rechten Maustaste auf den Unterpunkt ''Eigene Zertifikate'' klicken
 1. ''Alle Tasks -> Importieren'' und die vorher erstellte Datei auswählen
 1. im Unterpunkt ''Vertrauenswürdige Stammzertifizierungsstellen'' ebenfalls importieren - diesmal das Zertifikat der eigenen CA (muss wohl auch im PKCS#14-Format sein)
 1. nun den ''IP-Sicherheitsrichtlinien''-Baum öffnen und im rechten Teilfenster die rechte Maustaste drücken
 1. ''IP-Sicherheitsrichtlinie erstellen'' und einen Namen festlegen
 1. das Häkchen neben ''Standardantwortregel aktivieren'' entfernen
 1. ''Eigenschaften bearbeiten''
 1. ''Hinzufügen'' und ''Diese Regel spezifiziert keinen Tunnel'' wählen
 1. ''LAN'' und ''Verwenden eines Zertifikats von einer Zertifizierungsstelle''
 1. vorher hinzugefügte CA auswählen
 1. neue Filterregel für alle Pakete zwischen den beiden gewünschten Rechnern herstellen

Creative Commons Lizenzvertrag
This page is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.