{"id":758,"date":"2008-07-04T09:56:52","date_gmt":"2008-07-04T07:56:52","guid":{"rendered":"http:\/\/my.stargazer.at\/?p=758"},"modified":"2016-09-01T10:31:44","modified_gmt":"2016-09-01T08:31:44","slug":"ipsec-between-linux-and-the-netscreen","status":"publish","type":"post","link":"https:\/\/my.stargazer.at\/de\/2008\/07\/04\/ipsec-between-linux-and-the-netscreen\/","title":{"rendered":"IPSec zwischen Linux und der NetScreen"},"content":{"rendered":"<p>Ein VPN an sich ist eine feine Sache wenn man mal nicht Zuhause ist und trotzdem an seine Rechner kommen will. Seit ich die <a href=\"http:\/\/www.pfsense.org\">Pfsense<\/a> laufen hatte, habe ich diese Funktion sch\u00e4tzen gelernt. Meine damalige Implementation war eine simple OpenVPN L\u00f6sung.<\/p>\n<p>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\u00fcr die &#8218;DialUp&#8216; 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.<\/p>\n<p><!--more-->Die aktuelle Situation sieht wie folgt aus:<\/p>\n<blockquote>\n<ul>\n<li>Netscreen: 1.2.3.4<\/li>\n<li>Roadwarrioir: 172.16.1.2<\/li>\n<li>Netz hinter Netscreen: 192.168.10.0\/24<\/li>\n<\/ul>\n<\/blockquote>\n<p>User &amp; Keys:<\/p>\n<blockquote>\n<ul>\n<li>User: myuser<\/li>\n<li>IKE ID: user@host.com<\/li>\n<li>Group: dialupusers<\/li>\n<li>Preshared Key: secret<\/li>\n<\/ul>\n<\/blockquote>\n<p>Als erstes muss das VPN auf der NetScreen eingerichtet werden. Da ich es gerne kurz und B\u00fcndig habe, verwende ich dazu die Commandline via SSH. Der Einfachheit halber, unterteile ich es f\u00fcr die Anleitung hier in mehrere Schritte.<\/p>\n<h3>Benutzer und Gruppe<\/h3>\n<p>Zuallererst ben\u00f6tigen wir einen Benutzer, der sich einw\u00e4hlen darf und durch seine IKE ID eindeutig identifiziert wird. Um die Sache einfach zu halten, weise ich diesem User auch noch eine Gruppe zu, \u00fcber welche ich alle Berechtigungen verwalten werde:<\/p>\n<blockquote><p><code>set user \"myuser\" ike-id u-fqdn \"user@host.com\" share-limit 1<br \/>\nset user \"myuser\" type ike<br \/>\nset user \"myuser\" \"enable\"<br \/>\nset user-group \"dialupusers\" user \"myuser\"<\/code><\/p><\/blockquote>\n<p><\/p>\n<h3>Auto-IKE VPN und Policy<\/h3>\n<p>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.<\/p>\n<blockquote><p><code>set ike gateway \"dialupvpn\" dialup \"dialupusers\" Aggr outgoing-interface \"ethernet0\/0\" preshare \"secret\" proposal \"pre-g2-3des-sha\"<br \/>\nset ike gateway \"dialupvpn\" nat-traversal<br \/>\nset ike gateway \"dialupvpn\" udp-checksum<br \/>\nset vpn \"dialupvpn\" gateway \"dialupvpn\" no-replay tunnel idletime 0 proposal \"g2-esp-3des-sha\"<br \/>\nset address \"Trust\" \"192.168.10.0\/24\" 192.168.10.0 255.255.255.0<br \/>\nset policy top from \"Untrust\" to \"Trust\" \"Dial-Up VPN\" \"192.168.10.0\/24\" \"ANY\" Tunnel vpn \"dialupvpn\" log<\/code><\/p><\/blockquote>\n<p>Das war&#8217;s dann aber auch schon auf der NetScreen. Mit den Kommandos &#8217;save&#8216; und &#8218;exit&#8216; loggen wir uns schlie\u00dflich aus und schreiten zur Linux-Box, wo bereits die IPSec-Tools installiert wurden. Bei Gentoo sind diese als net-firewall\/ipsec-tools verf\u00fcgbar. Was den Kernel betrifft, sollten folgende Dinge entweder fix eingebaut oder zumindest als Modul verf\u00fcgbar sein:<\/p>\n<blockquote>\n<ul>\n<li>PF_KEY sockets (CONFIG_NET_KEY)<\/li>\n<li>AH transformation (CONFIG_INET_AH)<\/li>\n<li>ESP transformation (CONFIG_INET_ESP)<\/li>\n<li>IPCOMP transformation (CONFIG_INET_IPCOMP)<\/li>\n<li>DES, SHA1, (etc) from Crypto API<\/li>\n<\/ul>\n<\/blockquote>\n<p>Die Preshared Keys (PSK) der einzelnen Verbindungen werden in der Datei \/etc\/racoon\/psk.txt eingetragen und zugeordnet.<br \/>\n\/etc\/racoon\/psk.txt:<\/p>\n<blockquote>\n<pre># ipv4\/ipv6 adresses\r\n1.2.3.4        abc123<\/pre>\n<\/blockquote>\n<p>In der racoon.conf Datei legen wir die Ziele fest<br \/>\n\/etc\/racoon\/racoon.conf:<\/p>\n<blockquote>\n<pre># Pre-shared key\r\npath pre_shared_key \"\/etc\/racoon\/psk.txt\";\r\n\r\n# Remote host\r\nremote 1.2.3.4\r\n{\r\nexchange_mode aggressive;\r\nmy_identifier user_fqdn \"user@host.com\";\r\nproposal {\r\nencryption_algorithm 3des;\r\nhash_algorithm sha1;\r\nauthentication_method pre_shared_key;\r\ndh_group modp1024;\r\n}\r\n}\r\n\r\n# A sample sainfo section\r\n# Create one for each subnet you want to access, etc.\r\nsainfo address 172.16.1.2 any address 192.168.10.0\/24 any\r\n{\r\npfs_group modp1024;\r\nencryption_algorithm 3des;\r\nauthentication_algorithm hmac_sha1;\r\ncompression_algorithm deflate;\r\n}<\/pre>\n<\/blockquote>\n<p>&#8230; welche wir dann schliesslich in der ipsec.conf Datei verwenden.<br \/>\n\/etc\/ipsec.conf:<\/p>\n<blockquote>\n<pre>\r\n#!\/usr\/sbin\/setkey -f\r\n\r\nflush;\r\nspdflush;\r\n\r\n# outbound\r\nspdadd 192.168.2.0\/24 192.168.10.0\/24 any\r\n    -P out ipsec esp\/tunnel\/172.16.1.2-1.2.3.4\/require;\r\n\r\n# inbound\r\nspdadd 192.168.10.0\/24 192.168.2.0\/24 any\r\n    -P in ipsec esp\/tunnel\/1.2.3.4-172.16.1.2\/require;\r\n<\/pre>\n<\/blockquote>\n<p>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.<\/p>","protected":false},"excerpt":{"rendered":"<p>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\u00e4tzen gelernt. Meine damalige Implementation war eine simple OpenVPN L\u00f6sung. Da ich nun aber inzwischen eine NetScreen\/Juniper SSG5 mein Eigen nenne, muss ich mich den Gegebenheiten anpassen [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,1],"tags":[34,22,170],"class_list":["post-758","post","type-post","status-publish","format-standard","hentry","category-it-related-stuff","category-uncategorized","tag-firewall","tag-linux","tag-security"],"_links":{"self":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts\/758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/comments?post=758"}],"version-history":[{"count":0,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts\/758\/revisions"}],"wp:attachment":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/media?parent=758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/categories?post=758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/tags?post=758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}