mai
2011
FTMG est un produit relativement récent et on pouvait s’attendre à ce qu’il dispose de cmdlets Powershell pour son administration. Ce n’est malheureusement pas le cas.
Cependant, vous pouvez tout faire avec l’objet COM FPC. Powershell sait travailler avec les objets COM donc j’ai créé un script de configuration de FTMG à partir de plusieurs fichiers texte décrivant la configuration à appliquer.
C’est plus maléable que l’export/import de configuration XML. Pour le moment, il n’adresse pas toutes les capacités de FTMG mais c’est suffisant pour ce que j’en fais (règles de firewall, publication web). Ce script me sert à redéployer une configuration de TMG sans faire d’erreur (oubli d’une case à cocher dans un sous-sous-sous menu parce qu’il faut aller vite par exemple).
Quand un script est posté sur Internet, je n’ai pas forcément le temps de comprendre comment il fonctionne (c’est utile quand ledit script ne fonctionne pas et qu’il faut aller le debugger). Je vais donc vous expliquer comment ça marche.
Il a été écrit pour TMG Standard. Il n’a pas été testé sur la version Entreprise.
J’ai appliqué un principe général : à chaque fois qu’un fichier est lu depuis un dossier, la règle ou l’objet décrite dans le fichier prendra le nom du fichier. Par exemple, j’ai un fichier webListeners\HTTP.txt. Le listener qui sera créé sera nommé HTTP. La seule exception (pour confirmer la règle !), c’est le dossier firewallPolicy : les fichiers sont nommés 001-Allow full access between LANs.txt. Le numéro permet de classer les règles dans un ordre précis. La règle issue de ce fichier sera nommée Allow full access between LANs.
Le script est composé de plusieurs fonctions :
- Parse-WebListenerFile : lit un fichier texte (situé dans le dossier webListeners) contenant la description d’un Web Listener et retourne un objet Powershell contenant les propriétés de ce listener
- Parse-PolicyRuleFile : lit un fichier (situé dans le dossier firewallPolicy) contenant la description d’une règle de firewall et retourne un objet Powershell contenant la règle lue
- Validate-Certificate : validation basique de l’empreinte d’un certificat, cette fonction peut être largement améliorée
- Test-IPAddress : fonction de validation d’adresse IP basée sur le .Net Framework écrite par Shay Levy, MVP Powershell
- Add-TMGComputers :
- lit le fichier csv computers.txt contenant les ordinateurs associés à leurs adresses et les ajoute dans TMG
- Référence de FPCComputers
- Add-TMGAddressRanges :
- lit le fichier addressRanges.txt contenant les plages d’adresses et les ajoute dans TMG
- Référence de FPCAddressRanges
- Add-TMGComputerSets :
- lit un fichier (situé dans le dossier computerSets)
- La colonne type dans le fichier csv peut valoir AddressRanges ou Computers comme indiqué dans FPCComputerSet
- Add-TMGDomainSets :
- Lit un fichier (situé dans domainNameSets) et ajoute les noms de domaine inscrits dans le fichier
- Référence de FPCDomainNameSet
- Add-TMGProtocols :
- Lit un fichier (situé dans protocols) et ajoute chaque protocole décrit (TCP/UDP, sens de communication et ports)
- Référence de FPCProtocolDefinitions
- Add-TMGWebListener :
- liste les fichiers dans webListeners, les passe à Parse-WebListenerFile pour récupérer l’objet Powershell correspondant et l’ajoute à TMG.
- Le support des possibilités de TMG est très limité pour le moment, notamment pour SSL et l’authentification
- Référence de FPCWebListeners et FPCWebListener
- Add-TMGPolicyRules :
- liste les fichiers dans firewallPolicy, les passe à Parse-PolicyRuleFile pour récupérer l’objet Powershell correspondant et l’ajoute à TMG.
- Le support des possibilités est correct mais il manque encore des choses par rapport à ce que l’objet COM nous met à disposition
- Référence de FPCPolicyRule
Pour télécharger le script ainsi que les fichiers qui vont avec, voici plusieurs moyens :
Pour l’utiliser, dézippez l’archive sur votre serveur (pour le moment il n’est pas possible d’agir sur un serveur particulier à distance). Modifiez les fichiers texte à votre convenance en vous inspirant des objets disponibles dans l’objet COM FPC et exécutez confTmg.ps1. Je n’ai pas laissé la signature du script donc vous devrez le signer (avec un certificat auto-signé comme indiqué dans l’article de Laurent ou alors avec votre autorité de certification interne) ou alors baisser le niveau de sécurité temporairement avec Set-ExecutionPolicy. Une fois le script exécuté, rafraîchissez votre console TMG pour voir les ajouts
Et maintenant ? Que va devenir le script ? Au début, j’ai écrit le script pour accélérer la création des règles et éviter les erreurs. Je me suis rendu compte que vraiment, c’est impossible de ne pas avoir Powershell avec TMG tellement c’est pratique. J’ai donc commencé à transformer mon script pour créer un module Powershell pour FTMG en ajoutant quelques cmdlets
Pour le moment, le résultat n’est pas encore suffisant pour être exploitable comme un vrai module (passage d’objet via pipe par exemple). Voici un petit avant goût de ce qu’il y aura :
Get-TMGAddressRange
Get-TMGAddressRanges
Get-TMGArray
Get-TMGComputer
Get-TMGComputers
Get-TMGComputerSet
Get-TMGComputerSets
Get-TMGPolicyRule
Get-TMGPolicyRules
Get-TMGProtocol
Get-TMGProtocols
Get-TMGSubnet
Get-TMGSubnets
Get-TMGUserSet
Get-TMGUserSetsSet-TMGAddressRange
Set-TMGComputer
Set-TMGPolicyRule
Set-TMGProtocol
Set-TMGSubnet
Set-TMGUserSetRemove-TMGAddressRanges
Remove-TMGComputer
Remove-TMGComputerSet
Remove-TMGPolicyRule
Remove-TMGProtocol
Remove-TMGSubnet
Remove-TMGUserSetNew-TMGComputer
New-TMGComputerSet
New-TMGPolicyRule
New-TMGProtocol
New-TMGSubnet
New-TMGUserSet
En attendant, je vous souhaite une bonne utilisation du script