Samstag, 14. März 2009

DE - Hub-Spoke Konfiguration Pix /ASA - Task 1

Endlich ist es geschafft und vor allem beschrieben. Also jetzt zur Frage Task 1 wie konfiguriere ich 2 Pixen so das sie mit der Zentralen Pix kommunizieren können und auch untereinander Daten verschicken können.

Ein bisschen was zu Theorie aber vorab.
Im VPN Netzwerken (nicht nur dort) kann man grundsätzlich zwischen zwei Topologie unterscheiden. Zum Einen Hub-Spoke und zum Anderen Full-Mesh Netzen.
Hub Spoke Netze sind Zentral ausgerichtet. Alle Remotestandorte verbinden sich zu einer Zentrale und über diese findet auch die Kommunikation zwischen den Remotestandorten statt. Administrativ ist die Konfiguration vermeintlich sehr elegant, da der Administrator sich nur an einer Stelle Gedanken machen muss, wer worauf zugreifen darf. In den Remotestandorten muss nur sicherstellen werden das die Zentrale erreicht wird. Fällt die Zentrale oder die Verbindung dorthin aus, ist das Datentechnisch der Super GAU – der Ausdruck „Nichts geht mehr“ trifft es so ziemlich genau.

Im Gegensatz dazu sind Full-Mesh Netzwerke ausfallsicher. Es gibt keine klare Zentrale und jeder Teilnehmer ist, an sich, mit jedem anderen vernetzt. Dies ermöglicht eine große Flexibilität falls einmal eine Lokation nicht erreichbar ist, sorgt aber im schlimmsten Fall auch für einen enormen administrativen Zusatzaufwand, da die Verbindungen konfiguriert, gemonitort und auch „gepflegt“ werden müssen.

Oft findet man in großen Organisationen eine Mischform aus beiden Konzepten. So sind oft bei einer Firma die Landesfilialen untereinander mittels Full-Mesh Konzept verbunden, die Regionalbüros aber dann wiederum mittels Hub-Spoke Topologie an die Landesfiliale angebunden.

Aber zurück zur Aufgabe
Testaufbau:


Verwendete Netzwerke:
192.168.1.0 /24 - LAN in der Zentrale (Main); Routing via Default Route
192.168.2.0 /24 – LAN bei Kunden 1 (Cust_1); Routing via Default Route
192.168.3.0 /24 – LAN bei Kunden 2 (Cust_2); Routing via Default Route
10.10.1.x /30 Verbindungsnetze zwischen ISP Router und PIX/ASA ; Routing via Default Route
10.10.98.x /30 Verbindungsnetze zwischen den ISP Routern, Routing via OSPF
10.10.99.x /32 Management IP der ISP Router; in OSPF Routing eingebunden

Verwendete Tools, Router, Software Versionen
Konfiguration und Simulation GNS3 + Dynamips + Pemu
3x Router 7200 (IOS 12.4.24T) als ISP Router
3x Router 1700 (IOS 12.3.26) als LAN Hosts
3x PIX 525 (ASA/PIX 8.0.3) als Firewall und VPN Endpunkt

Schritt für Schritt Lösung der Aufgabe:

Konfiguration der ISP Zone
Anlegen der Interface auf den Routern:


Gerät: ISP_Main
interface Loopback0
description ### MGMT INT ###
ip address 10.10.99.1 255.255.255.255
interface FastEthernet0/0
description ### FW_Main-e0 ###
ip address 10.10.1.1 255.255.255.252
duplex auto
speed auto
interface FastEthernet0/1
description ### Uplink ISP-Cust-2_f0/1 ###
ip address 10.10.98.5 255.255.255.252
duplex auto
speed auto
interface FastEthernet1/0
description ### Uplink ISP-Cust-1_f1/0 ###
ip address 10.10.98.1 255.255.255.252
duplex full
speed auto

Gerät: ISP_Cust_1
interface Loopback0
description ### MGMT INT ###
ip address 10.10.99.3 255.255.255.255
interface FastEthernet0/0
description ### FW_Cust_1-e0 ###
ip address 10.10.1.5 255.255.255.252
duplex full
speed auto
interface FastEthernet0/1
description ### Uplink to ISP_Cust_2-f1/0 ###
ip address 10.10.98.10 255.255.255.252
duplex full
speed auto
interface FastEthernet1/0
description ### Uplink to ISP_Main-f1/0 ###
ip address 10.10.98.2 255.255.255.252
duplex full
speed auto

Gerät: ISP_Cust_2
interface Loopback0
description ### MGMT INT ###
ip address 10.10.99.2 255.255.255.255
interface FastEthernet0/0
description ### FW-cust-2-e0 ###
ip address 10.10.1.9 255.255.255.252
duplex full
speed auto
interface FastEthernet0/1
description ### Uplink ISP_Main-f0/1 ###
ip address 10.10.98.6 255.255.255.252
duplex full
speed auto
interface FastEthernet1/0
description ### Uplink ISP_Cust_1-f0/1 ###
ip address 10.10.98.9 255.255.255.252
duplex full
speed auto


Konfiguration des OSPF auf den Routern
Auf wenn die Aufgabe einfach ist, wird für die drei Internet Router ein Routing Protokoll in der einfachsten Form implementiert.
Mit dem Befehl router ospf [Prozess ID] wird auf dem Router das OSPF Protokoll aktiviert. Die network Statements definieren die Netze die im Routing verteilt werden sollen. In diesem Fall werden alle Netze nur im Area 0 des OSPF Netzwerks bekannt gegeben.

Gerät: ISP_Main
router ospf 100
router-id 10.10.99.1
log-adjacency-changes
network 10.10.1.0 0.0.0.3 area 0
network 10.10.98.0 0.0.0.3 area 0
network 10.10.98.4 0.0.0.3 area 0
network 10.10.99.1 0.0.0.0 area 0

Gerät: ISP_Cust_1
router ospf 100
router-id 10.99.99.2
log-adjacency-changes
network 10.10.1.4 0.0.0.3 area 0
network 10.10.98.0 0.0.0.3 area 0
network 10.10.98.8 0.0.0.3 area 0
network 10.10.99.3 0.0.0.0 area 0

Gerät: ISP_Cust_2
router ospf 100
router-id 10.99.99.3
log-adjacency-changes
network 10.10.1.8 0.0.0.3 area 0
network 10.10.98.4 0.0.0.3 area 0
network 10.10.98.8 0.0.0.3 area 0
network 10.10.99.2 0.0.0.0 area 0

Die Kernaufgaben auf den Routern sind damit abgeschlossen. Ein kurzes pingen der einzelnen Interfaces von jedem Router aus, ergab das das „Internet“ funktioniert.

Anmerkungen:
Ich wollte unbedingt 12.4.24T einsetzen, und habe mir damit mehr Ärger als nötig eingehandelt, da die 72er Router regelmäßig nachdem sie konfiguriert wurden, mussten ihren IDLEPC Werte im Dynamips angepasst werden. 37er hätten es wohl auch getan und dann 12.4.15T8.

Konfiguration der LAN „Hosts“
Einrichten einer IP auf dem angeschlossenen Interface und setzen einer statischen Default Router in Richtung der PIX war alles was hier zu konfigurieren war.

Gerät: Host_Main
interface FastEthernet0
ip address 192.168.1.2 255.255.255.0
speed auto
ip route 0.0.0.0 0.0.0.0 192.168.1.1

Gerät: Host_Cust_1
interface FastEthernet0
ip address 192.168.2.2 255.255.255.0
speed auto
ip route 0.0.0.0 0.0.0.0 192.168.2.1

Gerät: Host_Cust_2
interface FastEthernet0
ip address 192.168.3.2 255.255.255.0
speed auto
ip route 0.0.0.0 0.0.0.0 192.168.3.1

Die Hosts waren schnell erledigt und nachdem ein no shutdown auf allen Interfaces gesetzt war, konnte man sie auch von den PIXen nach deren Konfiguration erreichen.

Konfiguration der PIX
Grundlagen


Als erstes wurden die Dinge, die es auf jeder PIX/ ASA gibt konfiguriert. Also in dem Fall die Interfaces, die (default) Routen zu den ISPs und die Optionalen Objekt Gruppen.

Gerät: FW_Main
interface Ethernet0
nameif IF_Outside
security-level 0
ip address 10.10.1.2 255.255.255.252

interface Ethernet1
nameif IF_Inside
security-level 100
ip address 192.168.1.1 255.255.255.0

route IF_Outside 0.0.0.0 0.0.0.0 10.10.1.1 1


Gerät: FW-Cust-1
interface Ethernet0
nameif IF_Outside
security-level 0
ip address 10.10.1.6 255.255.255.252

interface Ethernet1
nameif IF_Inside
security-level 100
ip address 192.168.2.1 255.255.255.0

route IF_Outside 0.0.0.0 0.0.0.0 10.10.1.5 1


Gerät: FW-Cust-2
interface Ethernet0
nameif IF_Outside
security-level 0
ip address 10.10.1.10 255.255.255.252

interface Ethernet1
nameif IF_Inside
security-level 100
ip address 192.168.3.1 255.255.255.0

route IF_Outside 0.0.0.0 0.0.0.0 10.10.1.9 1

Die Objekt Gruppen sind auf allen drei PIXen identisch.

Geräte: FW-Main / FW-Cust-1 /FW-Cust-2
object-group network OBJ_VPN_Main
network-object 192.168.1.0 255.255.255.0
object-group network OBJ_VPN_Customer_1
network-object 192.168.2.0 255.255.255.0
object-group network OBJ_VPN_Customer_2
network-object 192.168.3.0 255.255.255.0
object-group network OBJ_VPN_Customer
group-object OBJ_VPN_Customer_1
group-object OBJ_VPN_Customer_2

Die definierten Objekt Gruppen werden vor allem in ACLs eingesetzt, da man dann die ACLs bereits durch das ändern der Objekt Definition anpassen kann.


Site 2 Site VPNs zeichnen sich durch 3 Punkte aus, die zwingend in der Konfiguration vorhanden sein müssen.

1. ACLs die den zu verschlüsselnden Traffice definieren
2. Eine Tunnelgruppe die den Tunnel charakterisiert
3. den ISAKMP und IPSEC Parametern um den Tunnel aufzubauen

Die ACLs die die Tunnel definieren sind im Grunde genommen immer gleich. Erlaube Traffic von IP oder Netz A nach IP oder Netz B im Remote-Standort. Dabei ist nur zu beachten das die ACL gespiegelt auf dem anderen Teilnehmer zur Anwendung kommt.
So ergibt sich für die Crypto ACLs folgender Inhalt:

Gerät: FW-Main
access-list ACL_Cry_map_10 remark ### traffic for VPN to Customer 1 ###
! Folgende Zeile erlaubt: Traffic von der Zentralen Main Seite zum Netz im Standort Cust_1
access-list ACL_Cry_map_10 extended permit ip object-group OBJ_VPN_Main object-group OBJ_VPN_Customer_1
! Folgende Zeile erlaubt: Traffic vom LAN Cust_2 zum LAN Cust_1
access-list ACL_Cry_map_10 extended permit ip object-group OBJ_VPN_Customer_2 object-group OBJ_VPN_Customer_1
access-list ACL_Cry_map_20 remark ### traffic for VPN to Customer 2 ###
! Folgende Zeile erlaubt: Traffic aus dem Main LAN zum Netz Standort Cust_2
access-list ACL_Cry_map_20 extended permit ip object-group OBJ_VPN_Main object-group OBJ_VPN_Customer_2
! Folgende Zeile erlaubt: Traffic vom LAN Cust_2 zum LAN Cust_1
access-list ACL_Cry_map_20 extended permit ip object-group OBJ_VPN_Customer_1 object-group OBJ_VPN_Customer_2

Gerät: FW-Cust-1
access-list ACL_Cry_map_10 remark ### traffic for VPN to Main Location ###
! Folgende Zeile erlaubt: Traffic vom LAN Cust_1 zum Main_LAN
access-list ACL_Cry_map_10 extended permit ip object-group OBJ_VPN_Customer_1 object-group OBJ_VPN_Main
! Folgende Zeile erlaubt: Traffic vom LAN Cust_1 zum LAN Cust_2
access-list ACL_Cry_map_10 extended permit ip object-group OBJ_VPN_Customer_1 object-group OBJ_VPN_Customer_2

Gerät: FW-Cust-2
access-list ACL_Cry_map_10 remark ### traffic for VPN to Main Location ###
! Folgende Zeile erlaubt: Traffic vom LAN Cust_2 zum Main LAN
access-list ACL_Cry_map_10 extended permit ip object-group OBJ_VPN_Customer_2 object-group OBJ_VPN_Main
! Folgende Zeile erlaubt: Traffic vom LAN Cust_2 zum LAN Cust_1
access-list ACL_Cry_map_10 extended permit ip object-group OBJ_VPN_Customer_2 object-group OBJ_VPN_Customer_1

Somit wäre definiert, welcher Traffic zu verschlüsseln ist. Jetzt muss Der Tunnel genauer definiert werden. Neben diversen Parametern lässt sich vor allem in der Tunnelgruppe der Pre Shared Key bestimmen. Setzt man PSK ein sollte dieser möglichst Lang und Komplex sein und von Zeit zur Zeit geändert werden. Alternativ lassen sich Zertifikate verwenden. Der Einfachheit der Aufgabe aber ist das hier außen vor.
Für Site 2 Site VPNs werden in der Regel als Tunnelbezeichnung die IP Adresse der entfernten Seite der VPN Verbindung verwendet.

Gerät: FW-Main
! Tunnel Gruppe zur FW-Cust-1
tunnel-group 10.10.1.6 type ipsec-l2l
tunnel-group 10.10.1.6 ipsec-attributes
pre-shared-key 1234567890
! Tunnel Gruppe zur FW-Cust-2
tunnel-group 10.10.1.10 type ipsec-l2l
tunnel-group 10.10.1.10 ipsec-attributes
pre-shared-key 0987654321

Gerät: FW-Cust-1
! Tunnel Gruppe zur FW-Main
tunnel-group 10.10.1.2 type ipsec-l2l
tunnel-group 10.10.1.2 ipsec-attributes
pre-shared-key 1234567890

Gerät: FW-Cust-2
! Tunnel Gruppe zur FW-Main
tunnel-group 10.10.1.2 type ipsec-l2l
tunnel-group 10.10.1.2 ipsec-attributes
pre-shared-key 0987654321

Als letzten und größten Block müssen die ISAKMP und IPSec Parameter der Tunnel festgelegt werden und natürlich ein Zuordnung zwischen ISAKMP/ IPSec Parametern, Tunnel Gruppe und ACLs erfolgen.

Geräte: FW-Main/ FW-Cust-1 / FW-Cust-2
! Definieren der ISAKMP Parameter auf allen 3 Firewall Geräten gleich
crypto isakmp enable IF_Outside
crypto isakmp policy 100
authentication pre-share
encryption aes-256
hash sha
group 2
lifetime 86400

Bestimmen des IPSec Transform Sets

Geräte: FW-Main/ FW-Cust-1 / FW-Cust-2
crypto ipsec transform-set TRANS_1 esp-aes-256 esp-sha-hmac

Definieren der Crypto Map um die Parameter miteinander zu verknüpfen. Die Auswahl erfolgt beim Verbindungsaufbau über den bereits definierten Traffic durch die ACL.
Es kann pro Logischem Interface nur eine Crypto map gebunden werden, aber jede Crypto map bietet theoretisch Platz für 65534 statische Verbindungen.

Gerät: FW-Main
crypto map MAP_Outside 10 match address ACL_Cry_map_10
crypto map MAP_Outside 10 set peer 10.10.1.6
crypto map MAP_Outside 10 set transform-set TRANS_1
crypto map MAP_Outside 20 match address ACL_Cry_map_20
crypto map MAP_Outside 20 set peer 10.10.1.10
crypto map MAP_Outside 20 set transform-set TRANS_1
! Binden der Crypto Map auf das Extern Interface
crypto map MAP_Outside interface IF_Outside

Gerät: FW-Cust-1
crypto ipsec transform-set TRANS_1 esp-aes-256 esp-sha-hmac
crypto map MAP_Outside 10 match address ACL_Cry_map_10
crypto map MAP_Outside 10 set peer 10.10.1.2
crypto map MAP_Outside 10 set transform-set TRANS_1
crypto map MAP_Outside interface IF_Outside
crypto isakmp enable IF_Outside

Gerät: FW-Cust-2
crypto map MAP_Outside 10 match address ACL_Cry_map_10
crypto map MAP_Outside 10 set peer 10.10.1.2
crypto map MAP_Outside 10 set transform-set TRANS_1
crypto map MAP_Outside interface IF_Outside
crypto isakmp enable IF_Outside

Grundlegend ist nun alle Bereit um als VPN Tunnel zu arbeiten. Oft wird jedoch vergessen das auf der PIX/ASA NAT definiert ist. Dann versucht die Firewall Aufgrund der NAT Regeln den Traffic im Tunnel zu NATen.
Daher wird im Beisiel noch NAT 0 mit zugehöriger ACL konfiguriert. NAT 0 bedeutet das der Traffic der auf diese ACL zutrifft vom generellen NAT Prozess ignoriert wird.
Wieder erfolgt die Konfiguration der ACLs nach dem Syntax Erlaube von Netz A nach Remote Netz B.

Gerät: FW-Main
access-list ACL_NAT_0 remark ### Nat ZERO ###
! Kein NAT für Verbindungen von Main Lan zu den Remote Standorten
access-list ACL_NAT_0 extended permit ip object-group OBJ_VPN_Main object-group OBJ_VPN_Customer
! Kein NAT für Verbindungen von Kundennetz 1 zu Kundennetz 1
access-list ACL_NAT_0 extended permit ip object-group OBJ_VPN_Customer_2 object-group OBJ_VPN_Customer_1
! Kein NAT für Verbindungen von Kundennetz 1 zu Kundennetz 2
access-list ACL_NAT_0 extended permit ip object-group OBJ_VPN_Customer_1 object-group OBJ_VPN_Customer_2
! aktivieren der Nat Aufnahme für Traffic der der ACL entspricht und über das Interface IF_Outside geht
nat (IF_Outside) 0 access-list ACL_Nat_0

Gerät: FW-Cust-1
access-list ACL_NAT_0 remark ### Nat ZERO ###
! Kein NAT für Verbindungen von Kundennetz 1 zum Main Netz
access-list ACL_Nat_0 extended permit ip object-group OBJ_VPN_Customer_1 object-group OBJ_VPN_Main
! Kein NAT für Verbindungen von Kundennetz 1 zu Kundennetz 2
access-list ACL_Nat_0 extended permit ip object-group OBJ_VPN_Customer_1 object-group OBJ_VPN_Customer_2
! aktivieren der Nat Aufnahme für Traffic der der ACL entspricht und über das Interface IF_Outside geht
nat (IF_Outside) 0 access-list ACL_Nat_0

Gerät: FW-Cust-2
access-list ACL_NAT_0 remark ### Nat ZERO ###
! Kein NAT für Verbindungen von Kundennetz 2 zum Kundennetz 1
access-list ACL_Nat_0 extended permit ip object-group OBJ_VPN_Customer_2 object-group OBJ_VPN_Customer_1
! Kein NAT für Verbindungen von Kundennetz 2 zum Main Netz
access-list ACL_Nat_0 extended permit ip object-group OBJ_VPN_Customer_2 object-group OBJ_VPN_Main
! aktivieren der Nat Aufnahme für Traffic der der ACL entspricht und über das Interface IF_Outside geht
nat (IF_Outside) 0 access-list ACL_Nat_0

Zu Guterletz muss eine Restriktion der ASA / PIX aufgegeben werden, damit die Remote Netzwerke sich gegenseitig sehen können. Grundsätzlich dürfen Interfaces mit gleichem Security Level keine Daten austauschen. Dies wird generell mit folgendem Befehl aufgehoben.
Gerät: FW-Main
same-security-traffic permit intra-interface

Wenn alles glatt gelaufen ist, sollten sich von allen Drei Hosts nun Pings zu den Remote Hosts absetzen lassen.





Auf den PIXen /ASA zeigt sich ein „wunderschönes“ MM_Active sobald man show crypto isakmp sa eingibt.


Für Anregungen ,Idee und so weiter(gern auch Fragen und Richtigstellungen) bin ich gern zu haben. Einfach in die Kommentare posten.


Links zu den Konfigs
ISP1
ISP2
ISP3
Host_Main
Host_Cust_1
Host_Cust_2
FW-Main
FW-Cust-1
FW-Cust-2

Keine Kommentare:

Kommentar veröffentlichen