¿Windows equivalente a iptables?

58

Pregunta tonta:

¿Hay un equivalente de iptables en Windows? ¿Puedo instalar uno a través de cygwin?

La verdadera pregunta: ¿cómo puedo lograr en Windows lo que puedo lograr a través de iptables? Solo busca la funcionalidad básica del firewall (por ejemplo, bloquear ciertas direcciones IP)

Aaron F.
fuente
66
No hay tal cosa como una pregunta tonta
Mark Henderson
44
Por supuesto, hay una pregunta tonta, simplemente no es una.
Tarea

Respuestas:

37

Una forma sería con el netshcomando:

James Sneeringer
fuente
8
+1 - netsh advfirewalles una regla absoluta necesaria para aprender para cualquier persona que escriba algo relacionado con la seguridad en Windows Server
Mark Henderson
¿ netsh advfirewallAdmite URL o solo direcciones IP?
Parker
Solo direcciones IP y similares, aunque también se puede filtrar en función del tráfico ejecutable de la red de envío o recepción, o las credenciales de AD del usuario / grupo / computadora involucrado. Para el filtrado de URL, querrá buscar un proxy de filtrado de algún tipo.
James Sneeringer
6

El siguiente es de: https://support.microsoft.com/en-us/kb/947709

Ejemplo 1: habilitar un programa

Comando antiguo Comando nuevo

netsh firewall add allowedprogram C:\MyApp\MyApp.exe "My Application" ENABLE    
netsh advfirewall firewall add rule name="My Application" dir=in action=allow program="C:\MyApp\MyApp.exe" enable=yes
netsh firewall add allowedprogram program=C:\MyApp\MyApp.exe name="My Application" mode=ENABLE scope=CUSTOM addresses=157.60.0.1,172.16.0.0/16,LocalSubnet profile=Domain   netsh advfirewall firewall add rule name="My Application" dir=in action=allow program="C:\MyApp\MyApp.exe" enable=yes remoteip=157.60.0.1,172.16.0.0/16,LocalSubnet profile=domain
netsh firewall add allowedprogram program=C:\MyApp\MyApp.exe name="My Application" mode=ENABLE scope=CUSTOM addresses=157.60.0.1,172.16.0.0/16,LocalSubnet profile=ALL  

Ejecute los siguientes comandos:

netsh advfirewall firewall add rule name="My Application" dir=in action=allow program="C:\MyApp\MyApp.exe" enable=yes remoteip=157.60.0.1,172.16.0.0/16,LocalSubnet profile=domain

netsh advfirewall firewall add rule name="My Application" dir=in action=allow program="C:\MyApp\MyApp.exe" enable=yes remoteip=157.60.0.1,172.16.0.0/16,LocalSubnet profile=private

Para obtener más información sobre cómo agregar reglas de firewall, ejecute el siguiente comando:

netsh advfirewall firewall add rule ?

Ejemplo 2: habilitar un puerto

Comando antiguo Comando nuevo

netsh firewall add portopening TCP 80 "Open Port 80"    
netsh advfirewall firewall add rule name="Open Port 80" dir=in action=allow protocol=TCP localport=80

Para obtener más información sobre cómo agregar reglas de firewall, ejecute el siguiente comando:

netsh advfirewall firewall add rule ?

Ejemplo 3: eliminar programas o puertos habilitados

Comando antiguo Comando nuevo

netsh firewall delete allowedprogram C:\MyApp\MyApp.exe netsh advfirewall firewall delete rule name=rule name program="C:\MyApp\MyApp.exe"
delete portopening protocol=UDP port=500    netsh advfirewall firewall delete rule name=rule name protocol=udp localport=500

Para obtener más información sobre cómo eliminar las reglas del firewall, ejecute el siguiente comando:

netsh advfirewall firewall delete rule ?

Ejemplo 4: configurar los ajustes de ICMP

Comando antiguo Comando nuevo

netsh firewall set icmpsetting 8    netsh advfirewall firewall add rule name="ICMP Allow incoming V4 echo request" protocol=icmpv4:8,any dir=in action=allow
netsh firewall set icmpsetting type=ALL mode=enable netsh advfirewall firewall add rule name="All ICMP V4" protocol=icmpv4:any,any dir=in action=allow
netsh firewall set icmpsetting 13 disable all   netsh advfirewall firewall add rule name="Block Type 13 ICMP V4" protocol=icmpv4:13,any dir=in action=block

Para obtener más información sobre cómo configurar ICMP, ejecute el siguiente comando:

netsh advfirewall firewall add rule ?

Ejemplo 5: Establecer registro

Comando anterior Comando nuevo netsh firewall set logging %systemroot%\system32\LogFiles\Firewall\pfirewall.log 4096 ENABLE ENABLE Ejecute los siguientes comandos:

netsh advfirewall set currentprofile logging filename %systemroot%\system32\LogFiles\Firewall\pfirewall.log

netsh advfirewall set currentprofile logging maxfilesize 4096
netsh advfirewall set currentprofile logging droppedconnections enable

netsh advfirewall set currentprofile logging allowedconnections enable

Para obtener más información, ejecute el siguiente comando:

netsh advfirewall set currentprofile ?

Si desea establecer el registro para un perfil en particular, use una de las siguientes opciones en lugar de la opción "perfil actual":
Perfil de
dominio
Perfil privado Perfil público Perfil público

Ejemplo 6: Habilitar Firewall de Windows

Comando antiguo Comando nuevo

netsh firewall set opmode ENABLE    netsh advfirewall set currentprofile state on
netsh firewall set opmode mode=ENABLE exceptions=enable 

Ejecute los siguientes comandos:

Netsh advfirewall set currentprofile state on 

netsh advfirewall set currentprofile firewallpolicy blockinboundalways,allowoutbound
netsh firewall set opmode mode=enable exceptions=disable profile=domain 

Ejecute los siguientes comandos:

Netsh advfirewall set domainprofile state on 

netsh advfirewall set domainprofile firewallpolicy blockinbound,allowoutbound
netsh firewall set opmode mode=enable profile=ALL   Run the following commands:

netsh advfirewall set domainprofile state on 

netsh advfirewall set privateprofile state on

Para obtener más información, ejecute el siguiente comando:

netsh advfirewall set currentprofile ?

Si desea establecer el estado del firewall para un perfil en particular, use una de las siguientes opciones en lugar de la opción "perfil actual": Perfil de
dominio
Perfil privado Perfil público Perfil público

Ejemplo 7: restaurar los valores predeterminados de la política

Comando antiguo Comando nuevo

netsh firewall reset
netsh advfirewall reset

Para obtener más información, ejecute el siguiente comando: netsh advfirewall reset? Ejemplo 8: habilitar servicios específicos

Comando anterior Comando nuevo netsh firewall set service FileAndPrint netsh advfirewall firewall set rule group = "Uso compartido de archivos e impresoras" new enable = Yes netsh firewall set service RemoteDesktop enable netsh advfirewall firewall set rule rule group = "escritorio remoto" new enable = Sí netsh firewall set service RemoteDesktop enable profile = ALL Ejecute los siguientes comandos:

netsh advfirewall firewall establece grupo de reglas = "escritorio remoto" nueva habilitación = Sí perfil = dominio

netsh advfirewall firewall establece grupo de reglas = "escritorio remoto" nueva habilitación = Sí perfil = privado

Adrianio
fuente
3
Es posible que desee trabajar en el formato. Actualmente es horrible leer, invitando a votos negativos.
Gerald Schneider
1
También extraído de support.microsoft.com/en-us/kb/947709
chappjc el
4

WIPFW se ve muy prometedor, especialmente si después de ese sabor de creación de reglas de iptables.

Nick Kavadias
fuente
3

Hay un firewall incorporado en XP, Server 2003 y versiones posteriores.

Tiene una API a través de la cual puede cambiar, habilitar y deshabilitar las reglas mediante programación.

billar
fuente
1
Quiero algo a lo que pueda acceder programáticamente: agregue direcciones IP al firewall desde un script o módulo de software.
Aaron F.