Blacklisten für ISA2006 generieren und importieren
Ich hab im Internet gesucht und wie so oft beim Thema ISA mehr oder weniger nichts gefunden. Also hab ich mich schnell hingesetzt und selbst gescriptet.
Um was geht es?
Der ISA ist unter anderem ein Proxy für das Firmennetzwerk und kann als solcher natürlich auch Webseiten anhand von Black-/Whitelisten filtern. Schade, um nicht zu sagen blöd, ist nur, dass es keine (oder nur sehr eingeschränkte) Downloadquellen gibt bei denen man sich mit fertigen Blacklisten versorgen kann. Und wenn man mal was findet, dann kann man drauf wetten, dass es Plaintext ist. Damit kann der ISA aber nicht umgehen
Was brauchen wir?
Zuerst brauchen wir mal die Blacklisten von blacklist.com. Die sind sehr schön strukturiert, was sehr nützlich ist, wenn man nicht auf alles und jedes sondern nur bestimmte Themen filtern will. Außerdem brauchen wir in einem beliebigen Verzeichnis eine Ordnerstruktur die wie folgt aussieht
Während dem Download widmen wir uns dem ISA.
Wie schon angesprochen kann der leider nicht einfach Plaintext einlesen und verarbeiten sondern hätte gerne XML-Files. Und damit es nicht zu einfach wir will er auch noch ganz bestimmte ClassIDs da drin sehen. Wenn die nicht da sind weigert er sich zu importieren.
Also legen wir für jedes zu filternde Thema erstmal unter Domänennamensätze eine Liste an. Dabei geben wir uns keine große Mühe, weil wir die gleich exportieren und nur noch als Template für die zukünftig per Script erstellten Blacklist brauchen.
Also
Als Ergebnis haben wir dann irgendwann viele XML-Dateien, die in etwa so aussehen
Diese Dateien dienen nachher als Templates für die automatische Erstellung der Blacklists und müssen unter\templates\abgelegt werden.
Zwischenzeitlich sollte der Download der Blacklisten abgeschlossen sein. Wir entpacken die Datei in\bigblacklist\und zwar so, dass darin ein Ordner namensblacklistsvorhanden ist und unterhalb dessen die einzelnen Listen.
Jetzt kommen wir zu meinem Script, dass die einzelnen Listen erzeugt:
Das speichern wir unter beliebigem Namen im VerzeichnisISA-Blacklistalso bspw.blacklist-erzeugen.vbs.
Das war an Vorarbeit vorerst alles. Wir können zur Tat schreiten und machen einen beherzten Doppelklick auf die Scriptdatei. Nach kurzer Zeit sollte ein Eingabefenster erscheinen in dem wir die zu erstellende Blacklist eingeben sollen; also bspw. einfach nurads.
Je nach Rechenleistung unseres PCs/Servers können wir uns jetzt getrost zurücklehnen und den einen oder anderen Kaffee trinken. Für die adult-Liste braucht mein PC etwa 250 Sekunden; einer meiner DCs ist in knapp 15 Sekunden fertig.
Im Ergebniss erhalten wir im Verzeichnis des aktuellen Datums unterhalb von\ISA-Blacklist\eine XML-Datei die etwa so aussieht
Diese Datei importieren wir jetzt in den ISA in dem wir unterDömennamensätzerechts klicken undAlle importieren// auswählen. Danach will der ISA die Quelle wissen. An der Stelle geben wir die gerade eben erzeugte Datei an. Der ISA überprüft die Datei und sollte sie ohne zu meckern importieren.
Danach öffnen wir den gerade importieren Namensatz mit Doppelklick. Wenn alles funktioniert hat sehen wir dort jetzt alle Domänen der Filterliste.
Das wiederholen wir für alle gewünschten Blacklists.
Ganz zum Schluss nicht vergessen den ISA die neue Konfiguration übernehmen zu lassen. Je nach Rechenleistung des Servers trinken wir in dem Moment den Rest der Kanne Kaffee von vorhin. Auf meinem ISA (virtuell, 2 CPUs, 2 GB RAM) gehen da mehrere Minuten ins Land.
Natürlich müssen wir die Blacklisten auch noch an Firewallregeln binden. Wie das geht setze ich aber einfach mal als bekannt voraus.
Manuel
PS:
Wenn jetzt noch jemand eine Idee hat, wie man den ISA (vielleicht per Script) dazu bekommt regelmäßig und automatisch aktuelle Blacklisten zu importieren schreibe ich dass Script glatt auf komplette automatische Erstellung für geplanten Task um. Dann wäre das eine prima Fire&Forget-Lösung. Bisher hab ich dafür aber noch keine Lösung gefunden.
Um was geht es?
Der ISA ist unter anderem ein Proxy für das Firmennetzwerk und kann als solcher natürlich auch Webseiten anhand von Black-/Whitelisten filtern. Schade, um nicht zu sagen blöd, ist nur, dass es keine (oder nur sehr eingeschränkte) Downloadquellen gibt bei denen man sich mit fertigen Blacklisten versorgen kann. Und wenn man mal was findet, dann kann man drauf wetten, dass es Plaintext ist. Damit kann der ISA aber nicht umgehen
Was brauchen wir?
Zuerst brauchen wir mal die Blacklisten von blacklist.com. Die sind sehr schön strukturiert, was sehr nützlich ist, wenn man nicht auf alles und jedes sondern nur bestimmte Themen filtern will. Außerdem brauchen wir in einem beliebigen Verzeichnis eine Ordnerstruktur die wie folgt aussieht
- <irgeneinpfad>\ISA-Blacklist\templates
- <irgeneinpfad>\ISA-Blacklist\bigblacklist
Während dem Download widmen wir uns dem ISA.
Wie schon angesprochen kann der leider nicht einfach Plaintext einlesen und verarbeiten sondern hätte gerne XML-Files. Und damit es nicht zu einfach wir will er auch noch ganz bestimmte ClassIDs da drin sehen. Wenn die nicht da sind weigert er sich zu importieren.
Also legen wir für jedes zu filternde Thema erstmal unter Domänennamensätze eine Liste an. Dabei geben wir uns keine große Mühe, weil wir die gleich exportieren und nur noch als Template für die zukünftig per Script erstellten Blacklist brauchen.
Also
- rechte Maustaste auf Domänennamensätze und Neuer Domänennamensatz.../ anklicken
- als Name die Kategoriebezeichnung aus den heruntergeladenen Blacklisten verwenden (bspw. porn, adult, drugs,...). Das ist wichtig, weil das Script später diese Namen benötigt
- Domänennamen und Beschreibung geben wir keine ein.
- MitOkspeichern
- rechte Maustaste auf den gerade erzeugen Namenssatz undAuswahl exportieren...auswählen. Wenn nach dem Dateinamen gefragt wird geben wir widerum das Kürzel für die entsprechende Blacklist (porn, adult, drugs,...) ein
- die einzelnen Schritte für jede gewünschte Blacklist wiederholen
Als Ergebnis haben wir dann irgendwann viele XML-Dateien, die in etwa so aussehen
<?xml version="1.0" encoding="UTF-8"?>
<fpc4:Root xmlns:fpc4="http://schemas.microsoft.com/isa/config-4" xmlns:dt="urn:schemas-microsoft-com:datatypes" StorageName="FPC" StorageType="0">
<fpc4:Build dt:dt="string">5.0.5723.514</fpc4:Build>
<fpc4:Comment dt:dt="string"/>
<fpc4:Edition dt:dt="int">16</fpc4:Edition>
<fpc4:ExportItemClassCLSID dt:dt="string">{61A8568E-53C1-4D6D-BBD8-4F7150EB3093}</fpc4:ExportItemClassCLSID>
<fpc4:ExportItemScope dt:dt="int">0</fpc4:ExportItemScope>
<fpc4:ExportItemStorageName dt:dt="string">{4B02B25F-98C6-4873-8E7E-FF8246525961}</fpc4:ExportItemStorageName>
<fpc4:IsaXmlVersion dt:dt="string">5.30</fpc4:IsaXmlVersion>
<fpc4:OptionalData dt:dt="int">12</fpc4:OptionalData>
<fpc4:Upgrade dt:dt="boolean">0</fpc4:Upgrade>
<fpc4:Arrays StorageName="Arrays" StorageType="0">
<fpc4:Array StorageName="{22BF6710-D466-4CDA-8622-9197783C59BE}" StorageType="0">
<fpc4:Components dt:dt="int">-1</fpc4:Components>
<fpc4:DNSName dt:dt="string"/>
<fpc4:Name dt:dt="string"/>
<fpc4:RuleElements StorageName="RuleElements" StorageType="0">
<fpc4:DomainNameSets StorageName="DomainNameSets" StorageType="0">
<fpc4:DomainNameSet StorageName="{4B02B25F-98C6-4873-8E7E-FF8246525961}" StorageType="1">
<fpc4:DomainNameStrings>
</fpc4:DomainNameStrings>
<fpc4:Name dt:dt="string">porn</fpc4:Name>
</fpc4:DomainNameSet>
</fpc4:DomainNameSets>
</fpc4:RuleElements>
</fpc4:Array>
</fpc4:Arrays>
</fpc4:Root>
Zwischenzeitlich sollte der Download der Blacklisten abgeschlossen sein. Wir entpacken die Datei in\bigblacklist\und zwar so, dass darin ein Ordner namensblacklistsvorhanden ist und unterhalb dessen die einzelnen Listen.
Jetzt kommen wir zu meinem Script, dass die einzelnen Listen erzeugt:
'Quelle für die Blacklists ist http://urlblacklist.com/?sec=download
'Damit dieses Script funktioniert müssen im ISA zuerst für jede Liste Vorlagen ohne Inhalt erstellt und danach exportiert werden.
'Diese exportierten XML-Files bilden dann die Templates für die zu erstellenden Dateien.
'Nach durchlaufen des Scripts werden die erstellten Dateien im ISA importiert und die Konfig übernommen.
Set objExplorer = CreateObject("InternetExplorer.Application")
objExplorer.TheaterMode = False
objExplorer.AddressBar = False
objExplorer.MenuBar = False
objExplorer.StatusBar = False
objExplorer.ToolBar = False
objExplorer.Resizable = False
objExplorer.Height = 480
objExplorer.Width = 640
objExplorer.Left = 100
objExplorer.Top = 100
objExplorer.Silent = False
objExplorer.Visible = True
objExplorer.Navigate "about:blank"
objExplorer.document.writeln("<html>")
objExplorer.document.writeln("<head>")
objExplorer.document.writeln("<title></title>")
objExplorer.document.writeln("</head>")
objExplorer.document.writeln("<span style='font-family:Courier; font-size:10pt'>")
Set fsObject = CreateObject("Scripting.FileSystemObject")
'scriptpfad ermitteln
strScriptPath = Replace(WScript.ScriptFullName ,WScript.ScriptName, vbNullString)
strTempFile = strScriptPath & "rule_temp.xml"
'zu erstellende blacklist angeben
strBlacklistName = inputbox ("Welche Blacklist soll erstellt werden?" ,"Blacklist erstellen","")
strBlacklistName = lcase(strBlacklistName)
If strBlacklistName = "" Then
objExplorer.document.writeln("Es wurde keine zu erstellende Blacklist angegeben. Scriptverarbeitung wurde abgebrochen.<br><br>")
WScript.Quit
End If
If Not fsObject.FileExists(strScriptPath & "\templates\" & strBlacklistName & ".xml") Then
objExplorer.document.writeln("Es wurde kein passendes Template gefunden. Scriptverarbeitung wurde abgebrochen.<br><br>")
WScript.Quit
End If
'info ausgeben
objExplorer.document.writeln("Die Verarbeitung wird nun gestartet. Je nach Größe der angegebenen Blacklist kann dieser Vorgang mehrere Minuten, in Ausnahmefällen bis zu einer Stunde, dauern. Ihr Arbeitsplatz wird in dieser Zeit wahrscheinlich stark ausgelastet sein.<br><br>")
strTimerStart = int(timer())
'template öffnen und verarbeiten
strTplSource = strScriptPath & "templates\" & strBlacklistName & ".xml"
Set fsObject = CreateObject("Scripting.FileSystemObject")
Set TplFile = fsObject.OpenTextFile(strTplSource, 1, false)
strTplFile = TplFile.ReadAll
strTplFile = replace(strTplFile,chr(13),"")
arrTplFile = split(strTplFile,chr(10))
TplFile.Close
'ausgabeordner und datei erstellen
strBlacklistFolder = strScriptPath & replace(date,".","-")
strBlacklistFile = strBlacklistFolder & "\" & strBlacklistName & ".xml"
If Not fsObject.FolderExists(strBlacklistFolder) Then
fsObject.createfolder(strBlacklistFolder)
End If
'einleitungszeilen in ausgabedatei schreiben
Set TgtFile = fsObject.OpenTextFile(strBlacklistFile, 2, true, 0)
For Count = 1 to 19
TgtFile.Writeline arrTplFile(Count)
if instr(arrTplFile(Count),"fpc4:DomainNameSet") > 0 then
TgtFile.Writeline " <fpc4:Description dt:dt=" & chr(34) & "string" & chr(34) & ">Blacklist erstellt am " & date() & " um " & time() & " Uhr auf Basis der Blacklisten von http://urlblacklist.com/?sec=download</fpc4:Description>"
end if
Next
'quelldatei öffnen und verarbeiten
strBlacklistSource = strScriptPath & "bigblacklist\blacklists\" & strBlacklistName & "\domains"
Set SrcFile = fsObject.OpenTextFile(strBlacklistSource, 1, false)
strFileComplete = SrcFile.ReadAll
objExplorer.document.writeln(time() & ": Quelldatei wurde vollständig eingelesen<br>")
arrFileComplete = split(strFileComplete,chr(10))
strLineCount = UBound(arrFileComplete)
objExplorer.document.writeln(time() & ": Quelldatei mit " & strLineCount & " Zeilen in Array eingelesen<br>")
strTimerRun = timer() + 5
For Count = 0 to strLineCount - 1
strIsaRule = " <fpc4:Str dt:dt=" & chr(34) & "string" & chr(34) & ">" & arrFileComplete(Count) & "</fpc4:Str>"
TgtFile.WriteLine strIsaRule
if timer() > strTimerRun then
objExplorer.document.writeln(time() & ": " & Count & "/" & strLineCount & "(" & int(Count / strLineCount * 100) & "%) Zeilen verarbeitet<br>")
strTimerRun = timer() + 10
End If
Next
'einleitungszeilen in ausgabedatei schreiben
For Count = 21 to 28
TgtFile.Writeline arrTplFile(Count)
Next
TgtFile.Close
strTimerEnd = int(timer())
objExplorer.document.writeln("<br>Die Blacklist wurde unter " & chr(34) & strBlacklistFile & chr(34) & " erstellt und kann jetzt im ISA-Server importiert werden.<br>Die Liste umfasst " & Count & " Domains und die Verarbeitung dauerte " & strTimerEnd - strTimerStart & " Sekunden.<br>Script beendet.")
Das speichern wir unter beliebigem Namen im VerzeichnisISA-Blacklistalso bspw.blacklist-erzeugen.vbs.
Das war an Vorarbeit vorerst alles. Wir können zur Tat schreiten und machen einen beherzten Doppelklick auf die Scriptdatei. Nach kurzer Zeit sollte ein Eingabefenster erscheinen in dem wir die zu erstellende Blacklist eingeben sollen; also bspw. einfach nurads.
Je nach Rechenleistung unseres PCs/Servers können wir uns jetzt getrost zurücklehnen und den einen oder anderen Kaffee trinken. Für die adult-Liste braucht mein PC etwa 250 Sekunden; einer meiner DCs ist in knapp 15 Sekunden fertig.
Im Ergebniss erhalten wir im Verzeichnis des aktuellen Datums unterhalb von\ISA-Blacklist\eine XML-Datei die etwa so aussieht
<fpc4:Root xmlns:fpc4="http://schemas.microsoft.com/isa/config-4" xmlns:dt="urn:schemas-microsoft-com:datatypes" StorageName="FPC" StorageType="0">
<fpc4:Build dt:dt="string">5.0.5723.514</fpc4:Build>
<fpc4:Comment dt:dt="string"/>
<fpc4:Edition dt:dt="int">16</fpc4:Edition>
<fpc4:ExportItemClassCLSID dt:dt="string">{61A8568E-53C1-4D6D-BBD8-4F7150EB3093}</fpc4:ExportItemClassCLSID>
<fpc4:ExportItemScope dt:dt="int">0</fpc4:ExportItemScope>
<fpc4:ExportItemStorageName dt:dt="string">{B79A3EB0-A6DD-4F9C-A843-A5A95BA325B5}</fpc4:ExportItemStorageName>
<fpc4:IsaXmlVersion dt:dt="string">5.30</fpc4:IsaXmlVersion>
<fpc4:OptionalData dt:dt="int">12</fpc4:OptionalData>
<fpc4:Upgrade dt:dt="boolean">0</fpc4:Upgrade>
<fpc4:Arrays StorageName="Arrays" StorageType="0">
<fpc4:Array StorageName="{22BF6710-D466-4CDA-8622-9197783C59BE}" StorageType="0">
<fpc4:Components dt:dt="int">-1</fpc4:Components>
<fpc4:DNSName dt:dt="string"/>
<fpc4:Name dt:dt="string"/>
<fpc4:RuleElements StorageName="RuleElements" StorageType="0">
<fpc4:DomainNameSets StorageName="DomainNameSets" StorageType="0">
<fpc4:Description dt:dt="string">Blacklist erstellt am 09.08.2010 um 11:59:23 Uhr auf Basis der Blacklisten von http://urlblacklist.com/?sec=download</fpc4:Description>
<fpc4:DomainNameSet StorageName="{B79A3EB0-A6DD-4F9C-A843-A5A95BA325B5}" StorageType="1">
<fpc4:Description dt:dt="string">Blacklist erstellt am 09.08.2010 um 11:59:23 Uhr auf Basis der Blacklisten von http://urlblacklist.com/?sec=download</fpc4:Description>
<fpc4:DomainNameStrings>
<fpc4:Str dt:dt="string">02pmnzy5eo29bfk4.com</fpc4:Str>
<fpc4:Str dt:dt="string">209.151.89.106</fpc4:Str>
<fpc4:Str dt:dt="string">abetterinternet.com</fpc4:Str>
<fpc4:Str dt:dt="string">accessoveloce.com</fpc4:Str>
<fpc4:Str dt:dt="string">cellularmania.info</fpc4:Str>
<fpc4:Str dt:dt="string">cliparts-bereich.de</fpc4:Str>
<fpc4:Str dt:dt="string">dialxs.nl</fpc4:Str>
<fpc4:Str dt:dt="string">directplugin.com</fpc4:Str>
Ganz viele Zeilen raus geschnitten
</fpc4:DomainNameStrings>
<fpc4:Name dt:dt="string">dialers</fpc4:Name>
</fpc4:DomainNameSet>
</fpc4:DomainNameSets>
</fpc4:RuleElements>
</fpc4:Array>
</fpc4:Arrays>
</fpc4:Root>
Danach öffnen wir den gerade importieren Namensatz mit Doppelklick. Wenn alles funktioniert hat sehen wir dort jetzt alle Domänen der Filterliste.
Das wiederholen wir für alle gewünschten Blacklists.
Ganz zum Schluss nicht vergessen den ISA die neue Konfiguration übernehmen zu lassen. Je nach Rechenleistung des Servers trinken wir in dem Moment den Rest der Kanne Kaffee von vorhin. Auf meinem ISA (virtuell, 2 CPUs, 2 GB RAM) gehen da mehrere Minuten ins Land.
Natürlich müssen wir die Blacklisten auch noch an Firewallregeln binden. Wie das geht setze ich aber einfach mal als bekannt voraus.
Manuel
PS:
Wenn jetzt noch jemand eine Idee hat, wie man den ISA (vielleicht per Script) dazu bekommt regelmäßig und automatisch aktuelle Blacklisten zu importieren schreibe ich dass Script glatt auf komplette automatische Erstellung für geplanten Task um. Dann wäre das eine prima Fire&Forget-Lösung. Bisher hab ich dafür aber noch keine Lösung gefunden.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 148624
Url: https://administrator.de/tutorial/blacklisten-fuer-isa2006-generieren-und-importieren-148624.html
Ausgedruckt am: 21.12.2024 um 16:12 Uhr
3 Kommentare
Neuester Kommentar
Hi
Also ich verwende schon des längerem diese Anleitung für den ISA 2006.
http://www.thiele.ch/index.php/blacklists-for-isa-2006
MFG Nemesis
Also ich verwende schon des längerem diese Anleitung für den ISA 2006.
http://www.thiele.ch/index.php/blacklists-for-isa-2006
MFG Nemesis