|
Ce post à pour but de vous expliquer comment configurez le Firewall de Windows 7 au travers de PowerShell. Ce sera assez court et bref mais utile |
1. De quoi a t’on besoin?
Il nous faut un point d’entrée nous permettant d’interagir avec le Firewall de Windows 7. Pour ce faire, nous allons passer par quelques objets COM issus de la dll suivante HNetCfg
Les 2 objets que nous allons utilisés dans nos exemples sont:
- HNetCfg.FwPolicy2: Permet l’accès au Client Firewall
- HNetCfg.FWRule: Permet la création de nouvelles règles
2. Généralisation sur les constantes:
Il existe un ensemble de constante utilisées lors de la configuration de certains paramètres. Je vous en liste une partie
#IP Protocol
$NET_FW_IP_PROTOCOL_ICMPv4 = 1
$NET_FW_IP_PROTOCOL_IGMP = 2
$NET_FW_IP_PROTOCOL_TCP = 6
$NET_FW_IP_PROTOCOL_UDP = 17
$NET_FW_IP_PROTOCOL_IPv6 = 41
$NET_FW_IP_PROTOCOL_IPv6ROUTE = 43
$NET_FW_IP_PROTOCOL_IPv6FRAG = 44
$NET_FW_IP_PROTOCOL_GRE = 47
$NET_FW_IP_PROTOCOL_ICMPv6 = 58
$NET_FW_IP_PROTOCOL_IPv6NONXT = 59
$NET_FW_IP_PROTOCOL_IPv6OPTS = 60
$NET_FW_IP_PROTOCOL_VRRP = 112
$NET_FW_IP_PROTOCOL_PGM = 113
$NET_FW_IP_PROTOCOL_L2TP = 115
#FW Scope
$NET_FW_SCOPE_ALL = 0
$NET_FW_SCOPE_LOCAL_SUBNET = 1
#$NET_FW_SCOPE_REMOTE_SUBNET = 2
#FW Profiles
$NET_FW_PROFILE2_DOMAIN = 1
$NET_FW_PROFILE2_PRIVATE = 2
$NET_FW_PROFILE2_PUBLIC = 4
$NET_FW_PROFILE2_ALL = 7
#FW Action
$NET_FW_ACTION_BLOCK = 0
$NET_FW_ACTION_ALLOW = 1
#FW Rule Direction
$NET_FW_RULE_DIR_IN = 1
$NET_FW_RULE_DIR_OUT = 2
3. Comment accéder au client Firewall?
Il vous suffit d’instancier l’objet Com suivant: HNetCfg.FwPolicy2 qui permet un contrôle du client Firewall.
#Instance FW Policy Manager
$fwPolicy2 = New-Object -ComObject HNetCfg.FwPolicy2
$fwPolicy2.Rules.count
La ligne suivante nous donne le nombre de règles définies au niveau du Firewall (IN et OUT).
4. Comment créer une nouvelle règle?
Nous allons instancier un autre objet Com: HNetCfg.FWRule qui, lui, est responsable de la création de nouvelles règles.
#New Rule
$fwRule = New-Object -ComObject HNetCfg.FWRule
$fwRule.Name = "HTTP Block processing via PowerShell"
$fwRule.Description = "Wifi HotSpot Specefic rule"
$fwRule.Protocol = $NET_FW_IP_PROTOCOL_TCP
$fwRule.RemotePorts = "80,443"
$fwRule.Action = $NET_FW_ACTION_ALLOW
$fwRule.Direction = $NET_FW_RULE_DIR_OUT
$fwRule.Profiles = $NET_FW_PROFILE2_PUBLIC
$fwRule.Enabled = $true
$fwPolicy2.Rules.Add($fwRule)
La dernière ligne ajoute l’objet créé au niveau du firewall.
5. Comment récupérer et gérer les règles existantes?
Voici un petit exemple qui active ou désactive une règle en fonction de son état.
foreach($oRule in $fwPolicy2.Rules){
if($oRule.Name.StartsWith("HTTP Block")){
if($oRule.Enabled){
$oRule.Enabled = $false
Write-Host "Rule is disable"
}else{
$oRule.Enabled = $true
Write-Host "Rule is enable"
}
}
}
6. Sources:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366459(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366415(v=vs.85).aspx
Enjoy !!!
Badack