Dies ist G o o g l e s Cache von http://dergraf.webds.de/linuxecke/FreeswanHOWTO.htm.
G o o g l es Cache enthält einen Schnappschuss der Webseite, der während des Webdurchgangs aufgenommenen wurde.
Unter Umständen wurde die Seite inzwischen verändert. Klicken Sie hier, um zur aktuellen Seite ohne Hervorhebungen zu gelangen.
Diese Seite im Cache bezieht sich eventuell auf Bilder, die nicht länger zur Verfügung stehen. Klicken Sie hier, um nur den Text im Cache anzuzeigen.
Um einen Link oder ein Bookmark zu dieser Seite herzustellen, benutzen Sie bitte die folgende URL: http://www.google.com/linux?q=cache:FDj2MPhYw_AJ:dergraf.webds.de/linuxecke/FreeswanHOWTO.htm+FreeS/WAN+howto&hl=de&lr=lang_de


Google steht zu den Verfassern dieser Seite in keiner Beziehung.
Diese Suchbegriffe wurden hervorgehoben: frees wan howto 

FreeS/Wan auf einem DEBIAN

Zur Sicherung eines WLAN mit X.509 Zertifikaten

Moritz von Schwerin

18.06.2003

 

Warum…    2

Things u need   2

Debian installieren   3

Vor der Installation   3

Installation   3

Nach der Installation   3

FreeS/Wan installieren   5

FreeS/Wan und Kernelkompilierung   5

Kernel installieren   5

OpenSSL einrichten und Zertifikate erstellen   6

CA  6

Zertifikate erstellen   6

Zertifikate installieren   8

IPSEC einrichten   9

ipsec.secrets   9

ipsec.conf  9

Clients Setup   12

Windows 2000/XP   12

Linux   13

Fehlersuche   14

Fehler beim Kompilieren   14

Fehler beim starten von IPsec auf dem GW   14

Fehler beim Verbindungsaufbau   14

Informationsquellen   14

 

 

 

Warum…

 

Ich hab diese HOWTO für alle geschrieben, die das gleiche Problem haben, wie ich es hatte… Viele HOWTOs aus dem man alles zusammenstückeln muss.

In diesem HOWTO wird beschrieben, auf was man bei der Installation von DEBIAN (meistens auch bei allen anderen Linuxen) achten muss, wenn man ein IPSEC Gateway aufsetzen will und wie Fresswan zu installieren ist.

Die ganzen Beispiele dieses Dokuments habe ich aus anderen HOWTOs übernommen, und ein bisschen angepasst.

 

 

Things u need

 

FreeS/Wan: http://www.freeswan.org

X.509 Patch: http://www.strongsec.com/

Kernel-Sourcen: Am besten von CD oder www.debian.org (nehmt am besten die Sourcen vom Distributor)

VPN Tool für Windows von Markus Müller: http://vpn.ebootis.de/


Erst mal zum aufwärmen…

Debian installieren

 

Vor der Installation

Erst genau aufschreiben, welche Hardware verwendet wird.

Am besten den COMPACT Kernel verwenden, denn dieser unterstütz mehr Netzwerkkartentypen

 

Installation

Den Bildschirmanweisungen folgen und das System nach euren wünschen gestalten.

Zu empfehlen ist:

-          MD5 – und shadow Passwörter ???yes“

-          Nur SSH 2 zulassen

-          Im Kernel IP-Filter aktivieren und richtige Treibermodule auswählen … und ganz wichtig richtigen Prozessortyp

-          Partitionen, die einzeln angelegt werden sollten

o       / (Root-Patition) (ca. 100MB)

o       /home (so viel Ihr wollt/könnt)

o       /usr (min 500MB,kommt drauf an wie viele Pakete Ihr installiert, die kommen hier hin)

o       /tmp (ca. 20-50MB)

o       /var (alle variablen Daten des Systems, es reichen 300-500MB wenn ihr nur ein VPN Gate wollt, habt Ihr platz übrig steckt ruhig noch mehr in die Partition)

o       SWAP-Partition (das doppelte Eures Speichers)

 

ACHTUNG!!! Es kann durchaus sein, dass Ihr Dselect mehrmals durchlaufen lassen müsst, bis alle Pakte installiert sind

 

Nach der Installation

            Eventuell noch das Netzwerk konfigurieren

            Bei 2 Netz - Karten Portforwarding einschalten: In der Datei /etc/sysctl.conf

                                   net/ipv4/ipforward=1 eintragen

 

            Folgende Pakete müssen installiert sein

-          gmp

-          gawk

-          libssl-dev

-          ncurses-dev

-          kernel-package (manche mögens, man braucht es aber nicht zwingend)

-          fileutil

Am besten mit apt-get nachinstallieren

 

Wenn Libaries nicht gefunden werden noch die Datei /etc/ld.so.conf anlegen und /usr/lib eintragen und anschließend ldconfig ausführen. (Auf die ld.so.conf greift die ldconfig zu und erstellt den ld.so.cache und da drauf greifen wiederum die Programme zu, um die Libaries zu finden. Bei mir wurden ein paar Libs nicht gefunden, deshalb hab ich das oben gemacht!!)

Wichtig!! Ihr müsst bei Debian noch ein Verlinkung ändern, da bei Debian awk auf mawk gelinkt ist, von Freeswan aber gawk verlangt ist.

            Ins Verzeichniss /etc/alternatives wechseln

 

rm awk

ln /usr/bin/gawk awk -s


Soooo….. jetzt wirds happig

FreeS/Wan installieren

           

Kernelsourcen vorbereiten

Kernelsource (am besten die von Debian (zB CD) nehmen und ein 2.4erKernel, ist dann viel stressfreier) nach /usr/src/linux entpacken

Nach /usr/src/linux wechseln und make menuconfig eingeben

Den Kernel wie oben schon erwähnt anpassen, speichern.

Dann make dep und make clean

 

FreeS/Wan und Kernelkompilierung

Freeswan nach /usr/src/freeswan entpacken (geht auch woandershin wenn Ihr wollt). Ich habe ich mich die originalpakete entschieden, da die Debian Vesion, die man mir apt-get installieren kann, nicht den enuesten Stand hatte.

            Dann mit dem zur Version passenden X.509 – Patch patchen.

                        freeswan.diff ins Freeswan Verzeichnis

                        ins Freeswan Verzeichnis wechseln

 

                        patch –p1 < freeswan.diff

 

Dann am besten make oldgo (um den neuen Kernel zu patchen und kompilieren…jetzt dauerts und wenn kein Paket fehlt klappt auch alles)

In /usr/src/linux wechseln

 

 

make modules

make modules_install (um die Module zu kompilieren und installieren)

 

Kernel installieren

            Den fertigen, neuen, gepatchten Kernel kopiert ihr in /boot:

 

cp /usr/src/linux/arch/i386/boot/bzImage /boot/{kernelname} (zB linux-2.4.18-ipsec)

 

die dazugehörige .config – Datei kopiert ihr aus Dokumentationsgründen nach /boot:

cp /usr/src/linux/.config /boot/{kernelname}.config

 

Dann Euren Bootloader anpassen (lilo,grub,…)


Das schwerste liegt jetzt hinter Euch….

OpenSSL einrichten und Zertifikate erstellen

 

Zur Authentifizierung der Teilnehmer benutzen wir Zertifikate, die wir selber ausstellen und ???unterschreiben“. Dazu wird OpenSSL benutzt. Ist es noch nicht installiert, jetzt mit apt-get install openssl installieren.

Erst müssen wir die CertificateAuthority, dann ein Zertifikat für das Gateway erstellen, und dieses mit der CA unterschreiben.

 

CA

            Die /etc/ssl/openssl.cnf editieren, ändere

                        ???default_bits“ von 1024 auf 2048 (Verschlüsselungstiefe)

                        ???default_days“ von 365 auf zB 3650 (Zertifikat ist 10 Jahre gültig)

                       

Ein Verzeichnis erstellen, in dem die CA gespeichert werden kann (zB /root/sslCA, es ist aber egal wo)

Die  /usr/lib/ssl/misc/CA.sh editieren, ändere

DAYS=“-days 365“ in einen Wert, der höher ist als oben ???default_days“, denn sonst meckert WINDOWS später

            Jetzt die CA erstellen, mit /usr/lib/ssl/misc/CA.sh –newca

 

nate@example:~/sslca$ /usr/lib/ssl/misc/CA.sh -newca
CA certificate filename (or enter to create)
(enter)
Making CA certificate ...
Using configuration from /usr/lib/ssl/openssl.cnf
Generating a 2048 bit RSA private key
.............................................................................+++
........................................+++
writing new private key to './demoCA/private/./cakey.pem'
Enter PEM pass phrase: test (enter password) Dieses Passwort brauchst Ihr, um später die anderen Zertifikate zu erstellen

Verifying password - Enter PEM pass phrase:(repeat password)
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DE(enter) Hier den Ländercode eingeben
State or Province Name (full name) [Some-State]:State(enter) Hier zB das Bundesland, kann man aber weglassen

Locality Name (eg, city) []:Stadt(enter) Hier die Stadt
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ExampleCo(enter) Hier den Firmennamen oder weglassen

Organizational Unit Name (eg, section) []:(enter) Hier die Abteilung, die kann man aber wirklich weglassen

Common Name (eg, YOUR name) []:CA(enter) Hier der Name der CA
Email Address []:ca@example.com(enter) E-Mail Addresse, keine Sonderzeichen, gibt Probleme
nate@example:~/sslca$

 

 

Zertifikate erstellen

Jetzt habt ihr Eure eigene CA und könnt mit dem erstellen der Zertifikate beginnen. Als erstes braucht Ihr ein Zertifikat für Euer VPN Gateway:

Dies macht Ihr mit  /usr/lib/ssl/misc/CA.sh –newreq. Das meiste ist dem erstellen der CA gleich

 

nate@example:~/sslca$ /usr/lib/ssl/misc/CA.sh -newreq
Using configuration from /usr/lib/ssl/openssl.cnf
Generating a 2048 bit RSA private key
...................................+++
...............................+++
writing new private key to 'newreq.pem'
Enter PEM pass phrase:(enter password) Passwort mit dem das Zertifikat verschlüsselt wird
Verifying password - Enter PEM pass phrase:(repeat password)
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DE(enter)
State or Province Name (full name) [Some-State]:State(enter)
Locality Name (eg, city) []:City(enter)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ExampleCo(enter)
Organizational Unit Name (eg, section) []:(enter)
Common Name (eg, YOUR name) []:host.example.com(enter)Hier kann ein Hostname, ein normaler Name oder eine Emailadresse hin, eigentlich egal

Email Address []:user@example.com(enter)

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:(enter)
An optional company name []:(enter)
Request (and private key) is in newreq.pem

 

Jetzt noch das Zertifikat unterschreiben mit /usr/lib/ssl/misc/CA.sh –sign


nate@example:~/sslca$ /usr/lib/ssl/misc/CA.sh -sign
Using configuration from /usr/lib/ssl/openssl.cnf
Enter PEM pass phrase:(Das Passwort von der CA, hier: test)
Check that the request matches the signature
Signature ok
The Subjects Distinguished Name is as follows
countryName :PRINTABLE:'US'
stateOrProvinceName :PRINTABLE:'State'
localityName :PRINTABLE:'City'
organizationName :PRINTABLE:'ExampleCo'
commonName :PRINTABLE:'host.example.com'
emailAddress :IA5STRING:'user@example.com'
Certificate is to be certified until Feb 13 16:28:40 2012 GMT (3650 days)
Sign the certificate? [y/n]:y(enter)

 

1 out of 1 certificate requests certified, commit? [y/n]y(enter)
Write out database with 1 new entries
Data Base Updated
(certificate snipped)
Signed certificate is in newcert.pem

 

Jetzt sollten die beiden erstellten Dateien noch schlüssige Namen bekommen

                       

mv newcert.pem host.example.com.pem

            mv newreq.pem host.example.com.key

 

und das .key-File noch editiert werden. Einfach den bereich '-----BEGIN CERTIFICATE REQUEST-----' löschen. Dannach sollte die Datei mit '-----BEGIN RSA PRIVATE KEY-----' beginnen und mit '-----END RSA PRIVATE KEY-----' enden

 

Zertifikate installieren

 

Dazu müssen die einfach ein paar Dateien an den richtigen Platz kopiert werden

 

cp host.example.com.pem /etc/ipsec.d

            cp host.example.com.key /etc/ipsec.d/private

            cp demoCA/cacert.pem /etc/ipsec.d/cacerts

 

                        und

 

openssl ca -gencrl -out /etc/ipsec.d/crls/crl.pem


 

IPSEC einrichten

 

ipsec.secrets

           

            In der /etc/ipsec.secrets sollte folgendes stehen

                       

                        : RSA host.example.com.key "Passwort"

 

Das Passwort ist das was ihr bei der Erstellung des Zertifikates benutzt habt. Und die Zugriffsrechte auf diese Datei sollte noch mit

 

            chmod 700 root

 

            geändert werden.

 

ipsec.conf

 

Dies ist sozusagen die Schaltzentrale der ganzen Sache. Der Teufel steckt im Detail wie ich feststellen musste. Am besten schaut ihr Euch erst mal richtig an was die einzelnen Kommandos bedeuten.

            Hier meine Konfiguration mit der ich ein Wireless Netz verschlüsselt habe.

 

 

version 2.0     # conforms to second version of ipsec.conf specification

 

# basic configuration

config setup

        interfaces="ipsec0=eth1"

        uniqueids=no

 

# Add connections here.

conn %default

        keyingtries=1

        compress=yes

        disablearrivalcheck=no

        authby=rsasig

        leftrsasigkey=%cert

        rightrsasigkey=%cert

        auto=add

        pfs=yes

 

 

conn wireless

        right=%any

        rightcert=client.example.com

        left=192.168.1.1

        leftsubnet=0.0.0.0/0

        leftcert=gateway.example.com.pem

 

config setup

Dieser Abschnitt beschreibt Parameter zur Initialisierung des gesamten IPSec-Subsystems.

interfaces=%defaultroute bereitet genau ein Interface, nämlich das, über das die Defaultroute geht, als IPSec-Interface vor.

 

interfaces=ipsec0=eth1 bereitet Interface eth1 als IPSec-Interface vor. Dies ist vor allem bei zwei Netzwerkkarten sinnvoll.

 

conn %default

Diese Sektion enthält die Parameter, die für alle Verbindungen gelten.

auto=add bewirkt, dass der Host auf Verbindungen wartet, von selbst aber keine initiiert. Um das zu bewirken, müsste es auto=start heissen. Das ist eigentlich nur bei Clients sinnvoll. Fast alles Parameter die hier gesetzt sind seit Version 2.0 eigentlich schon Standard.

 

Alle Parameter in conn %default können genauso gut pro Verbindung einzeln in einer conn Verbindungsname-Sektion angegeben werden. Was am Ende wo steht, hängt nur von den Anforderungen des jeweiligen Netzwerk-Layouts ab.

 

*) authby=rsasig: Um eine reine RSA-Authentisierung ohne den x509-Patch zu verwirklichen, muss auf beiden Hosts je ein RSA-Key-Paar mittels ipsec newhostkey erzeugt werden. Der Output dieses Kommandos wird dann in /etc/ipsec.secrets eingetragen. Mit ipsec showhostkey --left bzw. ipsec showhostkey --right wird auf dem jeweiligen Host der RSA-Public-Key extrahiert. Diese Keys werden dann als leftrsasigkey bzw. rightrsasigkey in /etc/ipsec.conf eingetragen. Aber Achtung: Da diese Keys pro Host unique sein müssen, funktioniert dann natürlich der Parameter left=%any auf dem Gateway nicht mehr. Statt dessen muss für jeden Host, der diese Methode verwendet, eine eigene conn-Sektion erstellt werden. Für alle andern Hosts müsste (untested!) wohl nach left=%any dann mittels authby=psk festgelegt werden, dass sie Preshared Secrets verwenden.

 

conn wireless

Unter conn Verbindungsname werden die Parameter angegeben, die für eine bestimmte Verbindung gelten. Sinnvollerweise kommt hier alles hin, was mit IP-Adressen, Zertifikaten und anderen Host-spezifischen Einstellungen zu tun hat. Da ein Host beliebig viele Verbindungen (Tunnels) aufbauen kann, können beliebig viele conn-Sektionen bestehen. Der Name Verbindungsname ist beliebig und wird nur lokal verwendet.

 

left und right bezeichnen die beiden Tunnel-Endpunkte. Welcher Host als left und welcher als right bezeichnet wird, spielt keine Rolle, FreeS/WAN ist schlau genug, herauszufinden, welcher Parameter für welchen Host gilt. Eine einheitliche Nomenklatur erhöht die Übersichtlichkeit aber exponentiell! In den Beispielen steht (r)ight für (r)emote und (l)eft für (l)ocal.

 

right=%any: Das ist einfach eine Wildcard. Alle Hosts, die sich authentifizieren können werden erlaubt. Hier kann auch eine einzelne Ip-Adressen stehen, um nur diese zuzulassen

rightcert=client.example.com: Der Name des Zertifikats mit dem sich der Client authentifizieren will

left=192.168.1.1: die IP des Gateways

leftsubnet=0.0.0.0/0: Verbindungen in dieses Subnetz (das hinter dem Gateway left liegt) werden bis zum Gateway verschlüsselt. Im VPN-Jargon die "Encryption Domain". In unserem Fall werden alle Verbindungen, die über das Gateway gehen, verschlüsselt; das sind alle Verbindungen zu Hosts ausserhalb des eigenen Subnetzes 192.168.1.0/24. Hier kann auch ein bestimmtes Netz stehen, wenn ihr das wollt. Dann kann nur zu diesem Netz connected werden.

leftcert=gateway.example.com.pem: Das Zertifikat des Gateways

 

Für jeden weitern Client müsst ihr natürlich eine neuen conn Section anlegen.

 

Das Gateway ist jetzt eigentlich betriebsbereit fehlen nur noch die Clients


 

 

Clients Setup

 

Windows 2000/XP

 

Nachdem ihr das Zertifikat für den Client auf dem Gateway erstellt habt (s.o.), müsst ihr dieses noch in eine ???Form“ packen, die Windows auch versteht.

 

$ openssl pkcs12 -export -in winhost.example.com.pem -inkey winhost.example.com.key -certfile demoCA/cacert.pem -out winhost.example.com.p12

 

Jetzt noch schnell openssl x509 -in demoCA/cacert.pem -noout –subject eingeben und den Output merken, aufschreiben,….(für rightca in ipsec.conf (s.u.))

Die p12-Datei dann auf einem sichern Weg (Diskette, SSH) auf den Windows Client kopieren.

            Auf dem Windowsrechner folgende Schritte ausführen.

1.      Für Windows 2000 das neueste Servicepack installieren oder zumindest ein high encryption package um 3DES zu unterstützen. WindowsXP User müssen in diese Richtung nichts tun

2.      Verzeichnis für das IPsec Tool erstellen und ipsecpol.exe (bei XP ipseccmd.exe) dorthin installieren (falls Ihr diese nicht habt könnt ihr einfach die ???Support Tools“ von der windowsCD nachinstallieren)

3.      Entpacke das VPN Tool in diese Verzeichnis

4.      Importiere das Zertifikat in die MMC:

a.      Start à Ausführen à mmc

b.      Öffne die ipsec.msc aus dem vorhin erstelltem Verzeichnis

c.      Plus bei Zertifikaten (Lokaler Computer) klicken

d.      Rechtsklick auf Eigene Zertifikate

e.      Alle Tasks

f.        Importieren

g.      p12 Datei auswählen und Passwort eingeben

h.      Zertifikatsspeicher automatisch auswählen

i.        Fertig

5.      Die Konsoleneinstellungen speichern und schließen

6.      Jetzt editiere die ipsec.conf aus dem oben erstellten Verzeichnis. Meine Beispiel Datei passt zu der des oben genannten GWs. Die ipsec.conf funktioniert eigentlich genauso wie die von Freeswan.

 

conn wireless

      left=%any

      right=192.168.1.1

      rightca="C=DE,S=Some-State,L=Freiburg,O=BeispielFirma,CN=CA"

      rightsubnet=*

      network=lan

      auto=start

      pfs=yes

      mac=00-00-00-00-00-00

 

left=%any: da wird die ip von deinem Interface eingesetzt. Du kannst auch eine statische Ip hinschreiben, braucht man aber nicht

right=192.168.1.1: IP des Gateways

rightca=“C=DE,….“Die Signatur der Zertifizierungsstellen (hier: CA). Diese habt ihr euch vorhin hoffentlich gemerkt (s.o.). Man muss den Output aber noch Windowskonform machen. Aus / wird , und aus ST wird S. Das wars.

rightsubnet=*: steht für 0.0.0.0/0, d.h. das Netz hinter dem GW wird nicht auf ein Netz beschränkt. Wichtig für den Internetzugang. Ihr könnt den Zugang natürlich auch nur auf ein Netz beschränken (muss mit der ipsec.conf auf GW übereinstimmen)

network=lan: hier gebt ihr an, ob ihr das LAN oder eine DIALup Verbindung verschlüsseln wollt (lan, ras, auto)

mac=00-00-00-00-00-00: wenn ihr zwei Netzwerkarten habt könnt ihr hie die IP, der Karte angeben, über die IPsec laufen soll.

 

Linux

 

Hier muss ich euch leider auf andere Dokus verweisen, weil ich selber noch keine Erfahrung gemacht habe.

Generell ist hierzu aber zu sagen, daß Ihr

1.      Freeswan installieren müsst (s.o.)

2.      openssl installieren müsst (s.o)

3.      Ein Zertifikat auf dem GW erstellen und sicher auf den Client übertragen müsst (s.o.)

4.      die ipsec.conf editieren müsst. Diese dürfte sich im großen und ganzen nicht sehr von der des GW oder des Windowsclients unterscheiden


 

Fehlersuche

 

Fehler beim Kompilieren

 

Fehler beim starten von IPsec auf dem GW

 

Fehler beim Verbindungsaufbau

 

 

Informationsquellen

 

Offizielle FreeS/Wan Seite

www.freeswan.org

Noch eine FreeS/Wan Seite von einem User

            www.freeswan.ca

Nate Carlson’s Page. Die Standardhilfe. Gut erklärt

            http://www.natecarlson.com/linux/ipsec-x509.php

Markus Müller’s Hilfe. Er hat das ipsecTool für Windows entwickel

            http://vpn.ebootis.de/

Ein Erfahrungsbericht

            http://www.lugbe.ch/action/reports/ipsec_htbe.phtml

Ein deutsches Mini HOWTO von Christoph Thiel

            http://linux01.gwdg.de/~cthiel1/howtos/freeswan/freeswan.html

Microsft’s IPsec Hilfe

            http://www.microsoft.com/technet/treeview/default.asp?url=/technet/prodtechnol/windows2000serv/howto/ispstep.asp