Logo faq-o-matic.net
Logo faq-o-matic.net

Den ISA Server skripten

von veröffentlicht am7. September 2007, 15:55 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: ISA Server, Scripting, Sicherheit   Translate with Google Translate Translate EN   Die angezeigte Seite drucken
Zuletzt aktualisiert: 4. Januar 2008

Als Schnittstelle zur Außenwelt spielt der ISA-Server (Internet Security and Acceleration Server) in vielen Windows-Netzwerken eine wichtige Rolle. Wer seine Funktionalität tiefergehend ausnutzen will, sollte sich auch mit der Möglichkeit beschäftigen, die Konfiguration per Skript zu steuern – ein Thema, das IMHO zu Unrecht in der einschlägigen Literatur vernachlässigt wird.

Microsoft hat sich viel Mühe gegeben, eine saubere Schnittstelle zu schaffen, die nicht nur von Programmierern (z.B. C++, VB, DotNet) genutzt werden kann, sondern auch von VB-Skript. Die Steuerung ist auf der ISA-Maschine selbst ebenso möglich wie remote, der Code lässt sich auch in ASP-Skripten einsetzen (wobei es mitunter mit den Berechtigungen etwas knifflig werden kann). Besondere Beachtung sollte die Möglichkeit finden, solche Skripte per geplantem Task zu starten, um sehr genaue zeitgesteuerte Aktionen zu veranlassen.

Alle Versionen des ISA-Servers (2000, 2004, 2006) lassen sich skripten. Da das Modell jedoch zwischen 2000 und 2004/6 grundlegende Unterschiede aufweist, will ich in den folgenden kleinen Beispielen nur auf die aktuellen Versionen eingehen. Diese sind in fast allen Punkten kompatibel.

Für eigene Versuche ist eine ausführliche Referenz unabdingbar. Diese findet man im ISA-SDK (http://www.microsoft.com/downloads/details.aspx?FamilyID=16682C4F-7645-4279-97E4-9A0C73C5162E&displaylang=en ) als CHM-Datei. Online gibt es einige Hinweise und Beispiele unter http://msdn2.microsoft.com/en-us/library/ms828066.aspx und auch hier die Referenz unter http://msdn2.microsoft.com/en-us/library/ms828066.aspx.

Zwei zugegeben sehr einfache Beispiele sollen sowohl den Nutzen als auch die Einfachheit der Skriptsteuerung demonstrieren:

Beispiel 1: Regel (de)aktivieren

Im ISA existiert eine bestimmte Regel, die sagen wir bestimmten Mitarbeitern während der Arbeitszeit den Zugriff auf gewisse Seiten verbietet. Diese Regel soll nun (per Skript und geplantem Task) von 17:30 Uhr bis 07:45 Uhr deaktiviert sein (das Zeitfenster im ISA selbst erlaubt leider nur eine Zeitauflösung im Stundentakt).

Aufruf:
Regelschalter.vbs Regelname on|off
z.B. Regelschalter.vbs „Surfsperre Vertrieb“ on

‘ Regelschalter.vbs
If WScript.Arguments.Count <> 2 THEN
    Msgbox „Falsche Anzahl Parameter!“,  vbExclamation
    Wscript.Quit
End If

Set root = CreateObject(„FPC.Root“)
Set isaArray = root.GetContainingArray()
Set policyrules = isaArray.ArrayPolicy.PolicyRules

for each rule in policyrules
    If lcase(rule.Name) = lcase(WScript.Arguments(0)) Then
        If lcase(WScript.Arguments(1)) = „on“ Then
            rule.Enabled = true
        Else
            rule.Enabled = false
        End If
        rule.Save
    End If
next

Beispiel 2: URL sperren

Als Administrator steht man mitunter vor der Aufgabe, eine bestimmte Domäne (IP, URL) zu sperren, sei es weil von dort aus Angriffe gefahren werden, sei es weil die Geschäftsleitung wünscht. Viel zu umständlich, das per vielen Mausklicks über die ISA-Konsole zu machen. Das Skript geht davon aus, dass eine Verweigerungsregel und der zugehörige Adresssatz schon besteht und nur ergänzt werden muss.

URLSperre
Const sURLSatz = „BoeseSeiten“

URL = Inputbox(„Bitte zu sperrende URL eingeben“)

Set root = CreateObject(„FPC.Root“)
Set isaArray = root.GetContainingArray()
Set URLSet = isaArray.RuleElements.URLSets.Item(sURLSatz)
URLSet.Add(sURL)
URLSet.Add(„*.“ & sURL)

URLSet.Save

Anmerkungen:
1.    Analog kann man auch eine Domäne in einen Domänensatz einfügen.
2.    Wie man sieht, wird der Eintag doppelt eingefügt. Auf diese Weise wird sowohl boeseSeite.com als auch www.boeseSeite.com gesperrt. Bei IP-Adressen sollte man dies unterlassen (das lässt sich ggf. über einen regulären Ausdruck unterscheiden).

… und jetzt remote

Natürlich geht das ganze auch remote. Dabei lässt sich auch das Konto und Passwort des ISA-Administrators übergeben oder, falls leer gelassen, auch mit den aktuellen Anmeldedaten zugreifen.

Dazu muss man nur jeweils die Zeile
Set isaArray = root.GetContainingArray()

ändern in

Set isaArray = root.Arrays.Connect(IsaServerName,IsaAdmin,””,Pwd)

Wobei für die Parameter natürlich die entsprechenden Werte einzusetzen sind.

So, ich hoffe das macht Appetit auf eigene Experimente…

© 2005-2019 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!