Jump to content
  • entries
    83
  • comments
    41
  • views
    25761

Forefront TMG 2010 - Scripting με VBScript και Powershell


Jordan_Tsafaridis

716 views

 Share

Σκοπός αυτού του άρθρου είναι να παρουσιάσουμε εν συντομία το τρόπο με τον οποίο μπορούμε να διαχειριστούμε τον Forefront TMG κάνοντας χρήση VBScript καθώς επίσης πως μπορούμε να συλλέξουμε πληροφορίες διαμέσου της δυνατότητας υποστήριξης πρόσβασης "read only" PowerShell στον Forefront TMG.

Ας ξεκινήσουμε

Πρώτα απ'όλα θα πρέπει να σας εκμηστηρευτώ ότι σε καμία περίπτωση δεν είμαι ένας Scripting ή programming guru. Κατά την διάρκεια των φοιτητικών μου χρόνων ασχολήθηκα με προγραμματισμό σε γλώσσες όπως η Borland Turbo Pascal, η COBOL καθώς και η C++, αλλά ποτέ δεν ασχολήθηκα με τον προγραμματισμό επαγγελματικά. Παρόλα αυτά νομίζω ότι σε αυτό το άρθρο θα λάβετε αρκετή πληροφορία η οποία θα σας φανεί ιδιαίτερα χρήσιμη έτσι ώστε να καταλάβετε την δύναμη του VBScript και του PowerShell στον Forefront TMG, έτσι ώστε να είναι εύκολο για τον καθέναν μας να αναπτύξει τα δικά του scripts. Επιπροσθέτως θα ρίξουμε μια ματιά στο Forefront TMG SDK, στο οποίο περιλαμβάνεται και μια σειρά από ιδιαιτέρως χρήσιμα preconfigured scripts τα οποία έχουν σαν σκοπό να αυτοματοποιήσουν την εργασία της διαχείρισης του.

O Forefront TMG ως COM

To COM χρησιμοποιείται από τις τεχνολογίες scripting όπως η VBScript για την απόκτηση πρόσβασης στον Forefront TMG με την μέθοδο του προγραμματισμού. Σύμφωνα με την Wikipedia

ο όρος COM σημαίνει Component Object Model. Το Component Object Model (COM)

αποτελεί ένα πρότυπο binary-interface το οποίο σχετίζεται άμεσα με το software componentry και ανακοινώθηκε για πρώτη φορά από την Microsoft το 1993. Χρησιμοποιείται για την ενεργοποίηση του interprocess communication και του

dynamic object creation σε ένα μεγάλο εύρος γλωσσών προγραμματισμού. Συχνά δε ο όρος COM χρησιμοποιείται στην βιομηχανία ανάπτυξης λογισμικού γύρω από τα προϊόντα της Microsoft ο οποίος λειτουργεί ως ομπρέλλα κάτω από την οποία περιλαμβάνονται και τα OLE, OLE Automation, ActiveX,

COM+ και οι DCOM technologies. Το COM αποτελεί μια interface technology η οποία καθορίζεται και εφαρμόζεται/αναπτύσεται ως πρότυπο μόνον στα Microsoft Windows και στο Apple's Core

Foundation 1.3 και νεότερες εκδόσεις. Σε κάποιες δε εφαρμογές το COM αντικαταστάθηκε σε κάποιο βαθμό από το Microsoft .NET framework, όπως επίσης και η υποστήριξη των Web Services διαμέσου του Communication Foundation

(WCF). Εντούτοις, τα COM objects μπορούν να χρησιμοποιηθούν με όλες τις .NET languages διαμέσου του .NET COM Interoperability.

Ο Forefront TMG COM έχει ένα root object το οποίο ονομάζεται

FPC.Root. Αυτό το root object διαχειρίζεται το Enterprise object το οποίο ταυτοποιείται/αναγνωρίζεται ως FPCEnterprise και στους Arrays ως FPCArrays.FPC. Το Root αποτελεί το root του administration COM object hierarchy, και παρέχει πρόσβαση κάνοντας χρήση προγραμματισμού - (programmatic access) -  σε άλλα FPC objects. Κάθε υπολογιστικό σύστημα Forefront TMG σχετίζεται - (associated) - με έναν μοναδικό array ως ένα από αρκετά fpcServer objects μέσα σε μία συλλογή από fpcServers.

Άλλα objects τα οποία διαχειρίζονται από αυτό το Enterprise object και από το Array object είναι τα ακόλουθα:

  • Admin Security object (χρησιμοποιείται από το Enterprise και από το Array)

  • Extensions object (χρησιμοποιείται από το Enterprise και από το Array)

  • Policy Rule object (χρησιμοποιείται από το Enterprise και από το Array)

  • Server object (χρησιμοποιείται από το Array)

  • Rule Elements object (χρησιμοποιείται από το Enterprise και από το Array)

  • Cache object (χρησιμοποιείται από το Array)

  • Network Configuration object (χρησιμοποιείται από το Enterprise και από το Array)

  • Array Policy object (χρησιμοποιείται από το Array)

  • IP object (χρησιμοποιείται από το Array)

Based on this knowledge you should have a better

understanding about the VBScript script examples which you can found on

several Internet websites and in the Forefront TMG SDK. An understanding

of COM objects is also helpful when you use the PowerShell to query

Forefront TMG objects. Forefront TMG has no built-in PowerShell CMDLets

and will use COM.

Forefront TMG SDK

Αρχικά θα ξεκινήσουμε με το Forefront TMG SDK, το οποίο μπορούμε να το κατεβάσουμε δωρεάν από το Microsoft website. Θα βρείτε τον διαδικτυακό σύνδεσμο (link) για να κατεβάσετε αυτό το SDK στο τέλος αυτού του άρθρου. Το Forefront TMG SDK

έρχεται με ένα πάρα πολύ χρήσιμο documentation στο οποίο περιγράφεται εκτενώς  ο προγραμματισμός του Forefront TMG

καθώς επίσης πληροφορίες ανώτερου επιπέδου σχετικά με μία σειρά από εσωτερικά Forefront TMG

concepts. Το Forefront TMG SDK περιλαμβάνει και μια σειρά από παραδείγματα scripting από τα οποία θα χρησιμοποιήσω ορισμένα κομμάτια κώδικα.

 

image0011295902412391.jpg

Εικόνα 1: Forefront TMG SDK – Παραδείγματα Script

 

Ένα από τα παραδείγματα scripts μας επιτρέπει να προσθέσουμε Forefront

TMG Administrators στο role based access model του Forefront TMG, όμως μόνον στο Monitor group. Εδώ επιτρέψτε μου ότι θα αποτελούσε μια ευχάριστη άσκηση ο εμπλουτισμός του συγκεκριμένου script έτσι ώστε να προσθέσετε τον Αdministrator και σε άλλα Forefront TMG roles.

 

image0021295902412407.jpg

Εικόνα 2: Προσθήκη χρήστη στο Monitor role group του Forefront TMG

Παραδείγματα VBScript

Ο ευκολότερος τρόπος για να αυτοματοποιήσουμε ορισμένα tasks στον Forefront TMG είναι με την χρήση των VBScript.

Τα VBScript ήταν επίσης διαθέσιμα και στην παλαιότερη έκδοση του Forefront TMG και μπορούν να χρησιμοποιηθούν για την αυτοματοποίηση ορισμένων administration tasks. Το πρώτο παράδειγμα script σας εμφανίζει όλους τους Forefront TMG arrays.

Το script ξεκινα με την ρύθμιση του Forefront TMG

root το οποίο είναι πάντοτε το FPC.Root και οριοθετεί μια παράμετρο - (set a variable) - η οποία θα περιέχει τους Forefront TMG arrays (objFPC.Arrays). Το script θα εμφανίζει ένα Input Box όπου θα εισάγουμε το όνομα του Forefront TMG array ή αντιστοίχως θα αφήνουμε το dialog box κενό έτσι ώστε να αλμβάνουμε μία λίστα από όλους τους διαθέσιμους Forefront TMG arrays. 

 

 

image0031295902438219.jpg

Εικόνα 3: Εμφάνιση πληροφοριών για τον Forefront TMG array.

 

Ένα κλασικό Script

Ένα κλασικό script το οποίο έχω χρησιμοποιήσει αρκετές φορές σε εγκαταστάσεις ISA Server και Forefront TMG

είναι η εξαγωγή όλου του Forefront TMG configuration κάνοντας χρήση ενός

script. Μπορείτε να χρησιμοποιήσετε το παρακάτω script σε συνδυασμό με τον Windows Task Scheduler για να εξάγετε το όλο το Forefront TMG configuration σε κάποιον άλλο host σε επαναλαμβάνομενα χρονικά διαστήματα.

Dim fileName

Dim WSHNetwork

Dim shareName: shareName = WScript.Arguments(0)

Dim xmldom : set xmldom = CreateObject("Msxml2.DOMDocument")

Dim fpc : set fpc = WScript.CreateObject("Fpc.Root")

Dim array : set array = fpc.GetContainingArray

set WSHNetwork = CreateObject("WScript.Network")

fileName=shareName & "\" & WSHNetwork.ComputerName & "-" &

Month(Now) & "-" & Day(Now) & "-" & Year(Now) & ".xml"

array.Export xmldom, 0

xmldom.save(fileName)

Αυτό το script χρησιμοποιεί το Windows Scripting Host (WSH), καθορίζει το Forefront TMG Root (FPC.Root), ορίζει κα΄ποιες μεταβλητές και εν συνεχεία δημιουργεί ένα αρχείο XML το οποίο βασίζεται στην συγκεκριμένη ημέρα κατά την οποία αυτό το script εκτελέστηκε. Συνεπώς δεν έχετε παρά να σώσετε το παραπάνω παράδειγμα scripting ως ένα αρχείο με .VBS extension και αμέσως μετά δημιουργήστε ένα αρχείο batch με την ακόλουθη σύνταξη:

Cscript TMGBACKUP.VBS \\RemoteServer\TMG-BACKUP

Το παραπάνω θα δημιουργήσει ένα αντίγραφο ασφαλείας του Forefront TMG

configuration στο προκαθορισμένο file share (TMG-Backup). Εάν επιθυμείτε να δημιουργήσετε επαναλαβάνομενα backups του δικού σας Forefront TMG configuration απλά πρέπει να δημιουργήσετε ένα task με το Windows Task Scheduler, το οποίο θα εκτελεί το συγκεκριμένο αρχείο batch.

Εξαγωγή του ISA Server 2006 VPN configuration και εισαγωγή του στον Forefront TMG

Το επόμενο παράδειγμα είναι πιο περίπλοκο. Πραγματοποιεί την εξαγωγή του ISA Server 2006 VPN

configuration και την εισαγωγή του σε έναν Forefront TMG Server. Το script αυτό δημιουργήθηκε από τον MVP

Christian Groebner. To πλήρες άρθρο μπορείτε να το βρείτε στον παρακάτω σύνδεσμο ο οποίος είναι αφιερωμένος αποκλειστικά στον ISA Server και τον  Forefront TMG.

Εάν θέλετε να χρησμοποιήσετε αυτό το script example απλά κάνετε copy όλο το κείμενο στο Notepad και το σώζετε με .VBS extension.

' ----- Sub restore_ipsec_settings -----

Sub restore_ipsec_settings(fpcRoot, VPN_Name, Int_PhaseI, Enc_PhaseI, Int_PhaseII, Enc_PhaseII)

 Dim Intproviders
 Dim Encproviders

 Intproviders = Array("SHA1","MD5")
 Encproviders = Array("DES","3DES")

 set objIPSec = fpcRoot.GetContainingArray.NetworkConfiguration.Networks.Item(VPN_Name).VPNConfiguration.IPSecSettings

 wscript.echo "Restoring IPSec-settings for network" & VPN_Name & vbCrLf
 wscript.echo "Phase I integrity : " & Intproviders(Int_PhaseI)
 objIPSec.Phase1Integrity = Int_PhaseI
 wscript.echo "Phase I encryption : " & Encproviders(Enc_PhaseI)
 objIPSec.Phase1Encryption = Enc_PhaseI
 wscript.echo "Phase II integrity : " & Intproviders(Int_PhaseII)
 objIPSec.Phase2Integrity = Int_PhaseII
 wscript.echo "Phase II encryption : " & Encproviders(Enc_PhaseII) & vbCrLf
 objIPSec.Phase2Encryption = Enc_PhaseII
 wscript.echo "Successfully applied the settings"
 wscript.echo "-----------------------------------------------------------" & vbCrLf

End Sub


' ------ Sub Main -------

Sub Main()

 Dim PhaseI_Int
 Dim PhaseI_Enc
 Dim PhaseII_Int
 Dim PhaseII_Enc
 Dim config

 config
= Inputbox("Please enter the complete path and filename with extension
to the existing configuration file of ISA 2006 : (Example:
C:\Temp\config.xml)")

 Set xmlFile = CreateObject("Microsoft.XMLDOM")

 If xmlFile.load(config) then

  set objFPC = CreateObject("FPC.Root")

  Set networkNodes = xmlFile.getElementsByTagName("fpc4:Network")

  For each networkNode in networkNodes

   If (Not(networkNode.selectSingleNode("fpc4:NetworkConnectionType") is Nothing)) Then

    If (networkNode.selectSingleNode("fpc4:NetworkConnectionType").Text = 4) Then

     PhaseI_Int = 0
     PhaseI_Enc = 1
     PhaseII_Int = 0
     PhaseII_Enc = 1
     Name = networkNode.selectSingleNode("fpc4:Name").Text

     Set ipsecSettingsNode = networkNode.selectSingleNode("fpc4:VpnNetworkConfiguration/fpc4:VpnNetworkIPSecSettings")

     If

(Not(ipsecSettingsNode.selectSingleNode("fpc4:VpnNetworkPhase1Encryption")
is Nothing)) Then PhaseI_Enc =
ipsecSettingsNode.selectSingleNode("fpc4:VpnNetworkPhase1Encryption").Text
     If

(Not(ipsecSettingsNode.selectSingleNode("fpc4:VpnNetworkPhase1Integrity")
is Nothing)) Then PhaseI_Int =
ipsecSettingsNode.selectSingleNode("fpc4:VpnNetworkPhase1Integrity").Text
     If

(Not(ipsecSettingsNode.selectSingleNode("fpc4:VpnNetworkPhase2Encryption")
is Nothing)) Then PhaseII_Enc =
ipsecSettingsNode.selectSingleNode("fpc4:VpnNetworkPhase2Encryption").Text
     If

(Not(ipsecSettingsNode.selectSingleNode("fpc4:VpnNetworkPhase2Integrity")
is Nothing)) Then PhaseII_Int =
ipsecSettingsNode.selectSingleNode("fpc4:VpnNetworkPhase2Integrity").Text

     restore_ipsec_settings objFPC, Name, PhaseI_Int, PhaseI_Enc, PhaseII_Int, PhaseII_Enc

    End If

   End If

  Next

 objFPC.GetContainingArray.Save

 Else

  wscript.echo("The file does not exist!")

 End If

End Sub


'------ Start the script ------

Main

Εμφάνιση των Forefront TMG URL κατηγοριών

Μία από τις καινούριες ιδιότητες - λειτουργίες του Forefront TMG είναι η υποστήριξη του for dynamic

URL filtering. Το URL filtering χρησιμοποιεί κατηγορίες. Για να εμφανίσετε όλες τις τις Forefront TMG URL filter κατηγορίες, θα πρέπει να δημιουργήσετε ένα script με τον παρακάτω κώδικα:

set root=CreateObject("FPC.Root")

For Each cat in root.GetContainingArray().RuleElements.UrlCategories

    wscript.echo "'" & cat.Name & "' --> " & cat.CategoryID

Next

Το output του παραπάνω script παρουσιάζεται παρακάτω:

 

image0041295902438219.jpg

Εικόνα 4: Εμφάνιση του Forefront TMG array information

Ο Forefront TMG και το PowerShell

Ο Forefront

TMG δεν έχει ενσωματωμένο το Windows PowerShell cmdlet, αλλά μπορούμε αν'αυτού να χρησιμοποιήσουμε τα COM objects. Όταν έχουμε πρόσβαση στο ProgID ενός COM component,

το οποίο είναι αποθηκευμένο στην Registry μπορούμε να χρησιμοποιήσουμε την εντολή New-Object command στο Windows PowerShell όπως θα διαπιστώσετε στο επόμενο screenshot (Root

Object is always FPC.Root).

 

image0051295902538594.jpg

Εικόνα 5: Καθορισμός του TMG Root Object

Εμφάνιση του Forefront TMG Root

Αμέσως μετά τον καθορισμό του Forefront TMG Root Object στο Windows

PowerShell μπορούμε να λάβουμε πληροφορία σχετικά με το Forefront TMG Root Object

configuration, όπως αυτό παρουσιάζεται στο παρακάτω screenshot.

 

image0061295902538594.jpg

Εικόνα 6: Εμφάνιση του Forefront TMG root

Query single Forefront TMG objects.

Εάν θέλουμε να κάνουμε query σε ένα και μόνον Forefront TMG objects εισάγουμε $TMGRoot. στο Windows PowerShell window και κάνουμε κλικ στο TAB key πίσω από το $TMGRoot. definition για να εμφανιστούν όλα τα στοιχεία (all elements).

 

image0071295902538594.jpg

Εικόνα 7: Query Forefront TMG objects κάτω από το FPC.Root

 

image0081295902538610.jpg

Εικόνα 8: Εμφάνιση των properties του FPC.Root

Καθορισμός του Forefront TMG Enterprise και του Array configuration με το Export

Στο τελευταίο μας παράδειγμα θα μάθουμε τον τρόπο με τον οποίο μπορούμε να χρησιμοποιήσουμε το PowerShell σε συνδυασμό με τον Forefront TMG. Αυτό το παράδειγμα script μπορείτε να το κατεβάσετε από αυτόν τον σύνδεσμο. Το script αυτό καθορίζει τον Forefront TMG Enterprise και τους συνδεόμενους σε αυτόν arrays και εξάγει το configuration σε ένα αρχείο XML.

Συμπέρασμα

Ολοκληρώνοντας σε αυτό το άρθρο σας παρουσίασα μια σύντομη εισαγωγή του τρόπου με τον οποίο μπορείτε να διαχειριστείτε τον Forefront TMG κάνοντας χρήση των VBscript και του Microsoft PowerShell. Υπάρχουν διαθέσιμα στο διαδίκτυο πολλά ελεύθερα προς κατέβασμα και χρήση παραδείγματα Script όπου με λίγη προγραμματιστική προσπάθεια πιστεύω ότι μπορείτε να δημιουργήσετε τα δικά σας scripts

τα οποία είμαι βέβαιος ότι θα διευκολύνουν την καθημερινή σας διαχείριση του Forefront TMG. Ελπίζω ότι η επόμενη έκδοση του Forefront TMG θα παρέχει πλήρη υποστήριξη του PowerShell.

 Share

0 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...