Firewall Windows vía Powershell
¿Cuántas veces te ha tocado configurar un Firewall de Windows por Powershell? Creo que ya llevo varios años en esto, y así como con Iptables ha sido muy común pelearme, creo que nunca me he visto en la situación de un proyecto que haga que revise la configuración de unas reglas de estado en Windows por Powershell (no así el estado del servicio u otras configuraciones más comunes). Son de esas cosas, que raramente realizas porque sueles tener la alternativa gráfica para ayudarte.
Bueno, pues “como de esta vida no te irás sin aprender algo nuevo”, llegó el momento. Así que os comparto mi experiencia.
Son Windows Server Core, con Hyper-V, y tengo un problema con los backups de Veeam. Y mi sospecha es que mi amigo Firewall de Windows de los hosts físicos me esté bloqueando ese tráfico. Ya que mi firewall perimetral no da señal de que sea el problema.
Lo primero es comprobar su estado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
PS C:\Users\Administrador\Documents> netsh advfirewall show allprofiles state Domain Profile Settings: ---------------------------------------------------------------------- State ON Private Profile Settings: ---------------------------------------------------------------------- State OFF Public Profile Settings: ---------------------------------------------------------------------- State OFF Ok. |
Si queremos ampliar la información:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
PS C:\Users\Administrador\Documents> netsh.exe advfirewall show allprofiles Domain Profile Settings: ---------------------------------------------------------------------- State ON Firewall Policy BlockInbound,AllowOutbound LocalFirewallRules N/A (GPO-store only) LocalConSecRules N/A (GPO-store only) InboundUserNotification Disable RemoteManagement Disable UnicastResponseToMulticast Enable Logging: LogAllowedConnections Disable LogDroppedConnections Disable FileName %systemroot%\system32\LogFiles\Firewall\pfirewall.log MaxFileSize 4096 Private Profile Settings: ---------------------------------------------------------------------- State ON Firewall Policy BlockInbound,AllowOutbound LocalFirewallRules N/A (GPO-store only) LocalConSecRules N/A (GPO-store only) InboundUserNotification Disable RemoteManagement Disable UnicastResponseToMulticast Enable Logging: LogAllowedConnections Disable LogDroppedConnections Disable FileName %systemroot%\system32\LogFiles\Firewall\pfirewall.log MaxFileSize 4096 Public Profile Settings: ---------------------------------------------------------------------- State ON Firewall Policy BlockInbound,AllowOutbound LocalFirewallRules N/A (GPO-store only) LocalConSecRules N/A (GPO-store only) InboundUserNotification Disable RemoteManagement Disable UnicastResponseToMulticast Enable Logging: LogAllowedConnections Disable LogDroppedConnections Disable FileName %systemroot%\system32\LogFiles\Firewall\pfirewall.log MaxFileSize 4096 Ok. |
Otro comando interesante:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
PS C:\Users\Administrador\Documents> Get-NetFirewallProfile Name : Domain Enabled : True DefaultInboundAction : NotConfigured DefaultOutboundAction : NotConfigured AllowInboundRules : NotConfigured AllowLocalFirewallRules : NotConfigured AllowLocalIPsecRules : NotConfigured AllowUserApps : NotConfigured AllowUserPorts : NotConfigured AllowUnicastResponseToMulticast : NotConfigured NotifyOnListen : False EnableStealthModeForIPsec : NotConfigured LogFileName : %systemroot%\system32\LogFiles\Firewall\pfirewall.log LogMaxSizeKilobytes : 4096 LogAllowed : False LogBlocked : False LogIgnored : NotConfigured DisabledInterfaceAliases : {NotConfigured} Name : Private Enabled : True DefaultInboundAction : NotConfigured DefaultOutboundAction : NotConfigured AllowInboundRules : NotConfigured AllowLocalFirewallRules : NotConfigured AllowLocalIPsecRules : NotConfigured AllowUserApps : NotConfigured AllowUserPorts : NotConfigured AllowUnicastResponseToMulticast : NotConfigured NotifyOnListen : False EnableStealthModeForIPsec : NotConfigured LogFileName : %systemroot%\system32\LogFiles\Firewall\pfirewall.log LogMaxSizeKilobytes : 4096 LogAllowed : False LogBlocked : False LogIgnored : NotConfigured DisabledInterfaceAliases : {NotConfigured} Name : Public Enabled : True DefaultInboundAction : NotConfigured DefaultOutboundAction : NotConfigured AllowInboundRules : NotConfigured AllowLocalFirewallRules : NotConfigured AllowLocalIPsecRules : NotConfigured AllowUserApps : NotConfigured AllowUserPorts : NotConfigured AllowUnicastResponseToMulticast : NotConfigured NotifyOnListen : False EnableStealthModeForIPsec : NotConfigured LogFileName : %systemroot%\system32\LogFiles\Firewall\pfirewall.log LogMaxSizeKilobytes : 4096 LogAllowed : False LogBlocked : False LogIgnored : NotConfigured DisabledInterfaceAliases : {NotConfigured} |
Si queréis sacar directamente donde está el log alojado del firewall por defecto (Domain, Private y Public):
1 2 3 4 5 |
PS C:\Users\Administrador\Documents> netsh advfirewall show allprofiles | Select-String Filename FileName %systemroot%\system32\LogFiles\Firewall\pfirewall.log FileName %systemroot%\system32\LogFiles\Firewall\pfirewall.log FileName %systemroot%\system32\LogFiles\Firewall\pfirewall.log |
Habilitar el log (false para deshabilitar):
1 2 3 |
Set-NetFirewallProfile -name domain -LogMaxSizeKilobytes 10240 -LogAllowed true -LogBlocked true Set-NetFirewallProfile -name public -LogMaxSizeKilobytes 10240 -LogAllowed true -LogBlocked true Set-NetFirewallProfile -name private -LogMaxSizeKilobytes 10240 -LogAllowed true -LogBlocked true |
Cambiarán estas líneas:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Domain Profile Settings: ---------------------------------------------------------------------- State ON Firewall Policy BlockInbound,AllowOutbound LocalFirewallRules N/A (GPO-store only) LocalConSecRules N/A (GPO-store only) InboundUserNotification Disable RemoteManagement Disable UnicastResponseToMulticast Enable Logging: <strong>LogAllowedConnections Enable</strong> <strong>LogDroppedConnections Enable</strong> FileName %systemroot%\system32\LogFiles\Firewall\pfirewall.log MaxFileSize 4096 |
Revisar lo rechazado, por ejemplo. Colocamos el more por si es muy grande:
1 |
Select-String -Path "c:\Windows\system32\LogFiles\Firewall\pfirewall.log" -Pattern "drop" | more |
O si queréis encontrar una IP en concreto:
1 2 3 4 |
PS C:\Windows\System32\LogFiles\Firewall> Select-String -Path .\pfirewall.log -Pattern "192.168.91.52" pfirewall.log:2913:2018-10-29 16:00:26 ALLOW UDP 192.168.91.52 192.168.91.255 137 137 0 - - - - - - - RECEIVE pfirewall.log:2914:2018-10-29 16:00:26 ALLOW UDP 192.168.91.52 224.0.0.252 58070 5355 0 - - - - - - - RECEIVE |
Yo no lo he tenido que hacer, pero si queréis generar reglas o borrarlas os dejo ejemplos de comandos:
1 2 3 4 5 |
New-NetFirewallRule -DisplayName "Block Outbound Port 80" -Direction Outbound -LocalPort 80 -Protocol TCP -Action Block New-NetFirewallRule -DisplayName "Allow Messenger" -Direction Inbound -Program "C:\Program Files (x86)\Messenger\msmsgs.exe" -RemoteAddress LocalSubnet -Action Allow Remove-NetFirewallRule |
Espero que os sirva de ayuda…
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?