Launcher

Suchbegriff eingeben. Mit den Pfeiltasten navigieren und mit Enter auswählen.

Einstellungen

Ende der Ergebnisse

IPSec zwischen Linux und der NetScreen

Ein VPN an sich ist eine feine Sache wenn man mal nicht Zuhause ist und trotzdem an seine Rechner kommen will. Seit ich die Pfsense laufen hatte, habe ich diese Funktion schätzen gelernt. Meine damalige Implementation war eine simple OpenVPN Lösung.

Da ich nun aber inzwischen eine NetScreen/Juniper SSG5 mein Eigen nenne, muss ich mich den Gegebenheiten anpassen und ein IPSec VPN aufbauen. Da ich mit meinem Laptop auf Reisen bin, habe ich mich für die ‘DialUp’ Variante entschieden, was im eigentlich nichts mit einem Modem zu tun hat, sondern nur mit dem Fakt, dass der Client die Verbindung zur Firewall initiiert.

Die aktuelle Situation sieht wie folgt aus:

  • Netscreen: 1.2.3.4
  • Roadwarrioir: 172.16.1.2
  • Netz hinter Netscreen: 192.168.10.0/24
User & Keys:
  • User: myuser
  • IKE ID: user@host.com
  • Group: dialupusers
  • Preshared Key: secret
Als erstes muss das VPN auf der NetScreen eingerichtet werden. Da ich es gerne kurz und Bündig habe, verwende ich dazu die Commandline via SSH. Der Einfachheit halber, unterteile ich es für die Anleitung hier in mehrere Schritte.

Benutzer und Gruppe

Zuallererst benötigen wir einen Benutzer, der sich einwählen darf und durch seine IKE ID eindeutig identifiziert wird. Um die Sache einfach zu halten, weise ich diesem User auch noch eine Gruppe zu, über welche ich alle Berechtigungen verwalten werde:
set user "myuser" ike-id u-fqdn "user@host.com" share-limit 1 set user "myuser" type ike set user "myuser" "enable" set user-group "dialupusers" user "myuser"

Auto-IKE VPN und Policy

Um auch hinter Firewalls klar zu kommen konfiguriere ich hier NAT-Traversal. Sollte unser Roadwarrior jedoch nicht hinter einer Firewall sitzen, ist uns das auch egal. Unsere NetScreen wird diese Funktion in dem Fall nicht benutzen.
set ike gateway "dialupvpn" dialup "dialupusers" Aggr outgoing-interface "ethernet0/0" preshare "secret" proposal "pre-g2-3des-sha" set ike gateway "dialupvpn" nat-traversal set ike gateway "dialupvpn" udp-checksum set vpn "dialupvpn" gateway "dialupvpn" no-replay tunnel idletime 0 proposal "g2-esp-3des-sha" set address "Trust" "192.168.10.0/24" 192.168.10.0 255.255.255.0 set policy top from "Untrust" to "Trust" "Dial-Up VPN" "192.168.10.0/24" "ANY" Tunnel vpn "dialupvpn" log

Das war’s dann aber auch schon auf der NetScreen. Mit den Kommandos ‘save’ und ‘exit’ loggen wir uns schließlich aus und schreiten zur Linux-Box, wo bereits die IPSec-Tools installiert wurden. Bei Gentoo sind diese als net-firewall/ipsec-tools verfügbar. Was den Kernel betrifft, sollten folgende Dinge entweder fix eingebaut oder zumindest als Modul verfügbar sein:

  • PF_KEY sockets (CONFIG_NET_KEY)
  • AH transformation (CONFIG_INET_AH)
  • ESP transformation (CONFIG_INET_ESP)
  • IPCOMP transformation (CONFIG_INET_IPCOMP)
  • DES, SHA1, (etc) from Crypto API

Die Preshared Keys (PSK) der einzelnen Verbindungen werden in der Datei /etc/racoon/psk.txt eingetragen und zugeordnet. /etc/racoon/psk.txt:

# ipv4/ipv6 adresses
1.2.3.4        abc123

In der racoon.conf Datei legen wir die Ziele fest /etc/racoon/racoon.conf:

# Pre-shared key
path pre_shared_key "/etc/racoon/psk.txt";

Remote host

remote 1.2.3.4 { exchange_mode aggressive; my_identifier user_fqdn “user@host.com”; proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group modp1024; } }

A sample sainfo section

Create one for each subnet you want to access, etc.

sainfo address 172.16.1.2 any address 192.168.10.0/24 any { pfs_group modp1024; encryption_algorithm 3des; authentication_algorithm hmac_sha1; compression_algorithm deflate; }

… welche wir dann schliesslich in der ipsec.conf Datei verwenden. /etc/ipsec.conf:

#!/usr/sbin/setkey -f

flush; spdflush;

outbound

spdadd 192.168.2.0/24 192.168.10.0/24 any -P out ipsec esp/tunnel/172.16.1.2-1.2.3.4/require;

inbound

spdadd 192.168.10.0/24 192.168.2.0/24 any -P in ipsec esp/tunnel/1.2.3.4-172.16.1.2/require;

Wenn das erledigt ist, kann die Verbindung gestartet werden. Achtung: Die Verbindung wird nicht gleich beim ersten Paket funktionieren, da zuerst die Authentifizierung erfolgen muss. Ist die Verbindung nach 15 Sekunden noch immer nicht aufgebaut, lohnt sich ein Blick in die Logfiles.

Kommentare

Kommentare werden geladen…