|
|
|
IPSec Remotestandortverbindung mit ISA 2004/2006 und dynamischer IP-Adresse per IPSecDie Informationen in diesem Artikel beziehen sich auf:
Warnung: Bitte testen Sie das Script zuerst in einer Testumgebung bei Ihnen. Wir können KEINE Gewährleistung im Schadenfall übernehmen! Seit ISA Server 2004 wird die Standortanbindung mit VPN-Appliances von Drittherstellern mit dem Protokoll IPSec unterstützt. Einziges Problem dabei ist, dass hierfür zwingend feste IP-Adressen benötigt werden. Dies liegt daran, dass Sie in der Verwaltungskonsole von ISA Server nur eine IP-Adresse als Remotegateway hinterlegen können. Einige VPN-Appliance-Hersteller, wie z.B. Sonicwall, können schon lange IPSec-VPN-Tunnel mit dynamischen IP-Adressen herstellen. Mit diesem Skript, welches in dieser Anleitung behandelt wird, können Sie ISA Server dazu bringen, dass dieser auch IPSec-VPN-Verbindungen mit Gegenstellen mit dynamischern IP-Adressen herstellen kann. SzenarioIn der Zentrale, am Standort München, steht ein ISA Server 2006 mit fester IP-Adresse auf der WAN-Schnittstelle. Der kleinere Standort Bamberg, mit 3 Mitarbeitern, benötigt Zugriff auf Daten die am Standort München gespeichert sind. Die Anschaffungskosten eines ISA Servers 2006 für diesen Standort würden bei weitem die Zweckmäßigkeit überschreiten. Durch die Verwendung von VPN-Endgeräten von Drittherstellern kann die Anbindung des Standorts Bamberg kostengünstig und trotzdem sicher ermöglicht werden. Am Standort Bamberg ist bislang keine feste öffentliche IP-Adresse beantragt, deshalb müssen Sie per Skript die IP-Adresse des Remotegateways überprüfen und gegebenenfalls ändern. Damit die korrekte IP-Adresse des Standorts Bamberg ermittelt werden kann, müssen Sie mittels eines DynDNS-Anbieters, wie z.B. DynDNS.org, die aktuelle IP-Adresse per FQDN bereitstellen. Dazu ist es zu empfehlen die Aktualisierung durch die VPN-Appliance durchzuführen, damit die Aktualisierung der IP-Adresse sofort nach der Änderung vorgenommen wird. 1. Konfiguration der Sonicwall TZ 150Prinzipiell unterscheidet sich die Konfiguration der Sonicwall nicht von der Vorgehensweise, wie bereits im Artikel VPN mit Sonicwall beschrieben. Aus diesem Grund wird in dieser Anleitung nicht weiter darauf eingegangen. Es wird allerdings gezeigt, wie Sie eine Sonicwall TZ 150 für einen DynDNS-Anbieter konfigurieren.Melden Sie Sich zunächst an der Sonicwall über das Webinterface an und wechseln Sie in der linken Navigation zu Network und klicken Sie auf den Eintrag Dynamic DNS. Klicken Sie dort auf die Schalfläche Add. Es öffnet sich ein weiteres Fenster zur Eingabe der Informationen für den DynDNS-Anbieter. Aktivieren Sie diesen DynDNS-Anbieter, indem Sie den Haken unter Enable this DDNS Profile setzen. Es ist zu empfehlen ebenfalls den Haken unter Use Online Settings zu setzen, dadurch werden die Konfigurationseinstellungen vom DynDNS-Anbieter heruntergeladen. Vergeben Sie im Feld Profile Name eine Bezeichunung für den DynDNS-Anbieter und wählen Sie anschließend im Dropdownfeld Provider einen DynDNS-Anbieter aus. Die Sonicwall TZ 150 unterstütz folgende Anbieter: Tragen Sie in den Feldern User Name und Password die Zugangsdaten für Ihren Account ein. Im Feld Domain Name müssen Sie den Domänennamen Ihres DynDNS-Accounts eintragen. Schließen Sie danach das Fenster über die Schaltfläche OK. Nach dem Hinzufügen erscheint der DynDNS-Anbieter in der Auflistung. Die Aktualisierung der IP-Adresse erfolgt somit sofort nach der Änderung. 2. Konfiguration des ISA Servers 2006 für die Remotestandort-Verbindung2.1 Erstellen des RemotestandortsAm ISA Server 2006 müssen Sie für den Remotestandort Bamberg ein neues Netzwerkobjekt von Typ Remotestandort erstellen. Diese Konfiguration unterscheidet sich ebenfalls nicht von den in der Anleitung VPN mit Sonicwall gezeigten Schritten. Aus diesem Grund wird hier nur auf die wichtigen Schritte eingegangen.Für die Angabe des Remotegateways müssen Sie zunächst per nslookup die aktuelle IP-Adresse des Remotestandorts Bamberg herausbekommen. Öffnen Sie hierzu über Start -> Ausführen -> cmd eine Eingabeaufforderung und bringen Sie die aktuelle IP-Adresse über nslookup siteba.dyndns.org in Erfahrung. Rufen Sie wie in der Anleitung beschrieben des Assistenten für ein neues Remotenetzwerk auf und tragen als Remotegateway die soeben ermittelte IP-Adresse, hier 192.168.4.250, ein und führen Sie die weiteren Schritte aus. Nachdem Sie den Assistenten durchlaufen und die IPSec-Proposals angepasst haben, überprüfen Sie die Funktion des VPN-Tunnels, z.B. mittels einer Ping-Anfrage in das Remotenetzwerk. Der Tunnel sollte erfolgreich aufgebaut werden. Der soeben aufgebaute Tunnel würde maximal bis zur nächsten IP-Adressänderung bestehen, danach würde der Tunnel nicht wieder aufgebaut werden, da es sehr unwahrscheinlich ist, dass die IP-Adresse des Remotegateways wieder übereinstimmen wird. Aus diesem Grund müssen Sie folgendes Skript verwenden, das Ihnen die IP-Adresse des Remotegateways automatisch anpasst. 2.2 Anpassung des SkriptsLaden Sie Sich zunächst das Skript herunter und entpacken Sie dieses in das Verzeichnis C:\Script. Die Zipdatei besteht aus drei Dateien:Öffnen Sie anschließend die Datei ipsec.vbs und ändern Sie die Konstanten (grün) ab. '--------------------------------------------------------------------------------- ' Dieses Skript überprüft die Gateway IP-Adresse des remote IPSec Standorts ' der per dynamischer IP-Adresse angebunden ist. Sollte sich diese im DNS-Server ' geändert haben, so wird automatisch die Netzwerkdefinition auf die aktuelle IP- ' Adresse geändert, wodurch der Tunnel wieder aufgebaut werden kann. ' ' @ 2006 by Christian Gröbner [MVP ISA Server] ' ' Verwendung auf eigene Gefahr! '--------------------------------------------------------------------------------- '--------------------------------------------------------------------------------- ' Main() '--------------------------------------------------------------------------------- ' Constanten ' Diese Werte müssen auf die jeweilige Konfiguration angepasst werden. Path ' entspricht dem Pfad, in dem sich die Dateien (dns.txt, doit.cmd und ipsec.vbs) ' befinden. Remote entspricht der Netzwerkdefinition für das Netzwerkobjekt im ' ISA 2004/2006 des Remotestandorts. Host enthält den DynDNS-Alias der Remotessite const Path = "C:\Script\" const Remote = "Bamberg" const Host = "siteba.dyndns.org" write_ip new_ip = get_ip if new_ip <> "0.0.0.0" then set_ip(new_ip) end if '--------------------------------------------------------------------------------- ' Diese Sub ermittelt die aktuelle IP-Adresse aus dem DNS-Server und ' schreibt diese in eine Textdatei. '--------------------------------------------------------------------------------- sub write_ip() set objShell = WScript.CreateObject("WScript.Shell") objShell.Run "cmd /c nslookup "+HOST+" >"+path+"DNS.txt",1,true set objShell = Nothing end sub '--------------------------------------------------------------------------------- ' Diese Funktion ermittelt die aktuelle IP-Adresse aus der Textdatei '--------------------------------------------------------------------------------- function get_ip() set objFSO = CreateObject("Scripting.FileSystemObject") set objFILE = ObjFSO.GetFile(path+"DNS.txt") if objFILE.Size > 0 then set objREADFILE = objFSO.OpenTextFile(path+"DNS.txt") text = objREADFILE.ReadAll objREADFILE.close pos1 = instr(1,text,"Name:") pos1 = instr(pos1,text,"Address:") +8 ip = trim(mid(text,pos1,len(text))) ip = replace(ip,chr(10),"") ip = replace(ip,chr(13),"") set objREADFILE = Nothing end if get_ip = ip set objFILE = Nothing set objFSO = Nothing end function '--------------------------------------------------------------------------------- ' Diese Funktion aktualisiert das Netzwerkobjekt mit der neuen IP-Adresse, falls ' diese sich geändert hat. '--------------------------------------------------------------------------------- sub set_ip(new_ip) set objFPC = CreateObject("FPC.Root") set objIPSec = ObjFPC.GetContainingArray.NetworkConfiguration.Networks.Item(Remote).VPNConfiguration.IPSecSettings if new_ip <> objIPSec.RemoteServerAddress then objIPSec.RemoteServerAddress = new_ip objIPSec.Save set objShell = CreateObject("WScript.Shell") objShell.LogEvent 4, "Die IPSec Einstellungen für den Standort "+Remote+" wurden auf die neue IP "+new_ip+" angepasst." set objShell = Nothing end if set objFPC = Nothing set objFSO = Nothing end sub '--------------------------------------------------------------------------------- ' Ende des Programms '--------------------------------------------------------------------------------- 2.3 Funktion des SkriptsDas Skript wird über die Batchdatei doit.cmd aufgerufen, dabei wird zunächst über die Sub write_ip die aktuelle IP-Adresse des Remotestandortes per nslookup ermittelt und in die Datei dns.txt geschrieben. Nach erfolgreichem Schreiben der Datei wird über die Function get_ip die aktuelle IP-Adresse aus der Textdatei ausgelesen. Anschließend wird die Sub set_ip aufgerufen, der die aktuell ermittelte IP-Adresse übergeben wird. Es wird das momentane Remotegateway der ISA Server-Konfiguration ausgelesen und mit der ermittelten IP-Adresse vergleichen. Sollte sich diese geändert haben, so wird automatisch die neue IP-Adresse in der Konfiguration hinterlegt. Die Konfiguration der IPSec-Richtlinien wird automatisch durch die Methode ObjIPSec.Save vorgenommen. Fand eine Änderung der IP-Adresse statt, so wird hierzu ein Eintrag im Eventlog hinterlegt.Damit die eine ständige Überprüfung der IP-Adresse erfolgt erstellen Sie am einfachsten einen geplanten Task, der in geringen Zeitabständen ausgeführt wird. 2.4 Konfiguration eines geplanten TasksÖffnen Sie hierzu die Verwaltung der geplanten Tasks über Start->Systemsteuerung->Geplante Tasks und erstellen Sie einen neuen geplanten Task über Geplanten Task hinzufügen.Es startet ein Assistent der Sie durch die Konfiguration leiten wird. Wählen Sie über die Schaltfläche Durchsuchen die Datei c:\Script\doit.cmd aus. Geben Sie eine Bezeichnung für den geplanten Task ein und wählen Sie als Ausführungsintervall Täglich aus. Geben Sie an, wann der Task zum ersten mal gestartet werden soll. Der geplante Task muss unter einem Benutzerkonto ausgeführt werden. Geben Sie dieses durch Benutzername und Kennwort an. Bedenken Sie, dass dieser Benutzer Schreibrechte auf die ISA Server-Konfiguration haben muss. Setzen Sie zur weiteren Bearbeitung den Haken Erweiterte Eigenschaften für diesen Task beim Klicken auf Fertigstellen öffnen. Wechseln Sie zur Registerkarte Zeitplan und klicken Sie auf die Schaltfläche Erweitert. Tragen Sie dort als Ausführungsdauer 24 Stunden ein, damit dieser Task den gesamten Tag ausgeführt wird. Setzten Sie ebenfalls den Haken unter Task beenden, falls er noch ausgeführt wird. Das Skript wird nun täglich alle 10 Minuten ausgeführt, ändert sich die IP-Adresse des Remotestandorts Bamberg, so wird beim Durchlaufen des Skripts automatisch die Konfiguration im ISA Server auf die neue IP-Adresse angepasst. In folgender Abbildung sehen Sie einen dazugehörigen Eintrag im Eventlog. Hinweis: Die in dieser Anleitung beschriebene Methode funktioniert für Verbindungen die nicht zeitkritisch sind. Dies sind zum Beispiel RDP-Verbindungen, die bei Abbruch der Verbindung für eine kurze Zeit ohne Probleme wieder hergestellt werden können. Für Datenbankverbindungen stellt ein Verbindungsabbruch oftmals ein Problem dar. Abhängig davon, wie schnell die neue IP-Adresse beim DynDNS-Anbieter registriert wird bzw. wie schnell diese an die weiteren DNS-Server verteilt wird, kann es unter umständen länger dauern, bis die Verbindung wieder hergestellt werden kann. Aus diesem Grund sollten Sie hierbei auf feste öffentliche IP-Adressen umstellen.
Stand: Friday, 28. August 2009/CG. |
|
|