Hace poco publiqué un
un pequeño tutorial del firewall de Windows XP. Entre las cosas que me dejé pendientes en el post fue el manejo del firewall a través del comando
netsh
netsh es un programa capaz de manejar toda la configuración de red de los sistemas Windows, incluyendo el firewall. Netsh tiene diversos
contextos, cada uno de los cuales es capaz de manejar un componente del sistema de red.
Para manejar el firewall el contexto que se utiliza es
firewall. Para acceder a él ejecutamos la herramienta y tecleamos
firewall. En este contexto podremos ir introduciendo comandos que permiten configurar el firewall a nuestro gusto.
c:\Documents and Settings\terron>netsh
netsh>firewall
netsh firewall>
Algunas definiciones
Antes de manejar el firewall de Windows, a continuación la terminología que utiliza Microsoft para el firewall:
- Perfil: Un conjunto de parámetros de configuración. Puede ser un perfil de dominio o estándar
- Servicio: Microsoft ha creado una serie de conjuntos de servicios determinado en el firewall. Estos servicios son ficheros e impresoras, administración remota,escritorio remoto, universal plug and play y todos. Esto nos permite especificar grupos sin necesidad de tener que saber los puertos que utilizan.
- Alcance: A la hora de especificar qué direcciones IP se le permite el acceso a través del firewall, Microsoft permite especificar todas las direcciones (ALL), subred (SUBNET) que indica direcciones IP que pertenecen a la misma subred a la cual el ordenador está conectado, personalizada (CUSTOM) especificando la lista de direcciones que pueden acceder a través del firewall.
Obteniendo información sobre la configuración
El primer comando que puede probarse es ver cual es ver cual es la configuración actual del firewall. Para ello usamos
show opmode
netsh firewall>show opmode
Configuración del perfil Dominio (actual):
-------------------------------------------------------------------
Modo funcional = Deshabilitar
Modo de excepción = Habilitar
Configuración del perfil Estándar:
-------------------------------------------------------------------
Modo funcional = Habilitar
Modo de excepción = Habilitar
Configuración del servidor de seguridad Conexión de área local:
-------------------------------------------------------------------
Modo funcional = Habilitar
Configuración del servidor de seguridad Conexiones de red inalámbricas:
-------------------------------------------------------------------
Modo funcional = Habilitar
En este listado podemos ver que está activado el
perfil de dominio. Dentro de este perfil el
Modo funcional implica que el firewall está desconectado. Por otra parte la política del dominio impone que no se deben estar habilitadas las excepciones. Puede verse en el gui (firewall.cpl) la configuración actual:
También vemos cual es el estado del firewall en las diferentes interfaces de red que tiene el sistema (en este caso la Interfaz de red local y una intefaz inalámbrica). Es importante saber que la información respecto a las intefaces sólo es válidad si la configuración del perfil indica que se permiten la excepciones. Sino se permiten éstas, da exactamente igual la información que aporte esta entrada o lo que se intente configurar sobre las excepciones.
También puede verse el estado general del firewall. Con este comando, además de información sobre el estado del firewall (activado, desconectado) se obtiene varios parámetros de configuración del mismo,así como los puertos que están abiertos por defecto.
netsh firewall>show state
Estado del servidor de seguridad:
-------------------------------------------------------------------
Perfil = Dominio
Modo funcional = Deshabilitar
Modo de excepción = Habilitar
Modo de resp. difusi¢n/multidifusi¢n = Habilitar
Modo de notificaci¢n = Habilitar
Versi¢n de directiva de grupo = Firewall de Windows
Modo de administraci¢n remota = Deshabilitar
Puertos actualmente abiertos en todas las interfaces de red:
Puerto Protocolo Versi¢n Programa
-------------------------------------------------------------------
137 UDP IPv4 (null)
139 TCP IPv4 (null)
138 UDP IPv4 (null)
3389 TCP IPv4 (null)
445 TCP IPv4 (null)
La información de estado del firewall es la siguiente:
Opción | Descripción |
Perfil | Indica el perfil de firewall que está activado. Puede ser el perfil de dominio - cuando el sistema detecta que está conectado a una red manejada a través de un dominio de Windows - o el perfil estándar, el que se usa en caso contrario. |
Modo funcional | Indica si el firewall está activado o no. |
Mode de excepción | Indica si están activadas las excepciones o no. |
Modo de resp. difusión/multidifusión |
Controla si debe de responderse con el firewall activado a peticiones multicast o broadcast que lleguen al sistema.
|
Modo de notificación |
Controla las notificaciones al usuario cuando un programa intenta escuchar en un puerto determinado. |
Versión de directiva de grupo
|
Quién ha configurado el sistema.
|
Modo de administración remota
|
Si se habilita esta opción permite que se abran los puertos necesarios para la administración remota del equipo (MMC,registro de eventos,...)
|
Por último se muestra un listado de puertos y para qué protocolos están abiertos en el firewall. Esta información puede obternse también por perfil y por interfaz de red presente en el sistema. Esta información es la que se muestra en la pestaña avanzadas de GUI del firewall:
netsh firewall>show portopening
Configuración de puerto para el perfil Dominio:
Puerto Protocolo Modo Nombre
-------------------------------------------------------------------
139 TCP Habilitar Servicio de sesi¢n de NetBIOS
445 TCP Habilitar SMP sobre TCP
137 UDP Habilitar Servicio de nombres de NetBIOS
138 UDP Habilitar Servicio de datagramas de NetBIOS
3389 TCP Habilitar Escritorio remoto
Configuración de puerto para el perfil Estándar:
Puerto Protocolo Modo Nombre
-------------------------------------------------------------------
139 TCP Habilitar Servicio de sesi¢n de NetBIOS
445 TCP Habilitar SMP sobre TCP
137 UDP Habilitar Servicio de nombres de NetBIOS
138 UDP Habilitar Servicio de datagramas de NetBIOS
3389 TCP Habilitar Escritorio remoto
La siguiente tabla resume todos los comandos
show y que información se obtiene de su ejecución
Comando | Descripción |
show allowedprogram | Muestra los programas a los cuales se le permite escuchar en puertos a la espera de conexiones. |
show config | Muestra la configuración actual. |
show currentprofile | Muestra cual es el perfil actual. |
show icmpsetting | Muestra la información de configuración del firewall para el protocolo ICMP. |
show logging | Muestra la información de configuración del registro de seguridad. |
show multicastbroadcastresponse | Muestra la configuración de la respuesta del firewall a las peticiones de broadcast |
show notifications | Muestra cual es el estado de las notificaciones al usuario |
show opmode | Muestra el modo de operación del firewall. |
show service | Muestra los servicios que están permitido escuchar. |
show state | Muestra el estado del firewall. |
Configurando servicios
Los servicios son lo más sencillo que se puede configurar en el firewall. Por ejemplo, si se deseara permitir en cualquier perfil el acceso al escritorio remoto sólo para las redes directamente conectadas en todo los perfiles
netsh firewall>set service mode=ENABLE type=REMOTEDESKTOP scope=SUBNET profile=ALL
Microsoft, para complicar un poco más las cosas, permite que se omita el nombre de los parámetros de configuración , con lo que la línea anterior puede también escribirse como:
netsh firewall>set service ENABLE REMOTEDESKTOP SUBNET ALL
Otro ejemplo que puede ponerse es permitir la administración remota (mmc, registro de eventos )de un equipo desde cualquier red de la RFC 1918 y que sólo se aplique en el perfil estándar:
netsh firewall>set service ENABLE REMOTEADMIN CUSTOM 192.168.0.0/16,172.16.0.0/20,10.0.0.0/8 ESTANDAR
Abriendo puertos
Ahora, si necesitamos abrir un puerto determinado, no recogido en los servicios que define Microsoft, ¿cómo debe hacerse?. Para ello se usa
portopening (ya sea add - para añadir - , set - para modificar - o delete - para borrar - ). Un ejemplo sencillo: si se tiene un servidor de ssh escuchando en el puerto 22, ¿cómo podría abrirse dicho puerto?:
netsh firewall>add portopening name="Servidor SSH" protocol=TCP port=22 mode=ENABLE scope=ALL profile =ALL
Una particularidad que tiene
portopening es que puede abrirse puertos en función de la interfaz de red que se desee. Por ejemplo, si sólo se quisiera activar la conexión entrante a través del puerto 22 a una interfaz, por ejemplo Conexión de área local:
netsh firewall>add portopening name="Servidor SSH" protocol=TCP port=22 mode=ENABLE scope=ALL profile=ALL interface="Conexión de área local"
Al igual que ocurre con el apartado anterior, se puede omitir el nombre de los parámetros, complicando un poco más:
netsh firewall>add portopening "Servidor SSH" TCP 22 ENABLE ALL ALL "Conexión de área local"
Para modificar los parámetros de portopening, se utiliza el comando
set. Por ejemplo, si en el apartado anterior se quiere que sólo se permitan conexiones entrantes al puerto 22 desde la subred a la cual está conectada la máquina, habría que cambiar el alcance (SCOPE) de la regla:
netsh firewall>set portopening "Servidor SSH" TCP 22 ENABLE SUBNET ALL "Conexión de área local"
Si queremos borrar una regla, se utiliza
delete portopening:
netsh firewall>delete portopening "Servidor SSH" TCP 22 ENABLE SUBNET ALL "Conexión de área local"
Autorizando programas a escuchar en cualquier puerto
A veces, sin embargo, no se sabe a priori cuales son los puertos que va a usar una aplicación determinada. Ésta usa puertos dinámicos que puede ser cualquiera del rango. Una aplicación clásico de este tipo es un servidor ftp, que cuando utiliza el modo pasivo abre puertos a los cuales se conectan los clientes.
Por ejemplo, si queremos añadir como excepciones un servidor ftp, situado en c:\usr\bin\ftpd
netsh firewall>set allowedprogram program="c:\usr\bin\ftpd.exe" name="Servidor FTP" mode=ENABLE scope=ALL profile=ALL
Al igual que ocurre con
portopening se usa el
delete allowedprogram
netsh firewall>delete allowedprogram program="c:\usr\bin\ftpd.exe"
Activar las notificaciones
Puede quererse informar al usuario cuando un programa intenta escuchar en algún puerto. En la terminología del firewall de Windows XP a estos cuadros de diálogos se les llama notificaciones. Las notificaciones pueden activarse en función del perfil que esté activo. Por ejemplo, si se desea activar las notificaciones en el perfil de dominio:
netsh firewall>set notifications mode=ENABLE profile=DOMAIN
Configurando el ICMP
ICMP es un protocolo de control, transportado por datagramas IP y utilizado par informar de condiciones excepcionales durante las comunicaciones (redes no alcanzables, saber si una máquina responde, cálculo del máximo tamaño de un datagrama). El firewall de Windows XP permite controlar que tipo de peticiones ICMP va a aceptar la máquina o que paquetes ICMP va a generar la máquina.
La siguiente tabla recoge el tipo y el significado de cada uno:
Tipo | Descripción |
2
|
Específico de ICMPv6, el sistema lo genera en caso de que el paquete de datos sea mayor que la MTU del enlace que quiera atravesar.
|
3
|
El sistema genera paquetes ICMP que indican que un determinado destino no es alcanzabe. |
4
|
El sistema genera este paquete para indicar al extremo que le está enviando tráfico que lo haga a una menor velocidad.
|
5
|
En este caso el sistema permite recibir mensajes ICMP de redirección, normalmente generados por los routers del sistema.
|
8
|
Permite las peticines de echo (generadas por la orden ping)
|
9
|
Permite recibir peticiones de solicitud de router.
|
11
|
El sistema envía mensajes ICMP en caso de que un datagrama IP que vaya a rutar su TTL alcance el valor cero.
|
12
|
El sistema genera este paquete ICMP en caso de encontrar errores en la cabecera IP de un datagrama que haya recibido.
|
13
|
Permite al sistema recibir paquetes ICMP solicitándole una marca de tiempos.
|
17
|
Permite al sistema recibir peticiones ICMP para que el sistema devuelva la máscara de la interfaz de red que recibe la petición
|
Por ejemplo, si se quiere usar IPv6 es importante que los paquetes que calculan cual es la máxima MTU de una ruta entre equipos pase de manera adecuada. Para ello habría que dejar pasar los paquetes de tipo 2:
netsh firewall>set icmpsetting type=2 mode=ENABLE profile=ALL
Permite especificar que interfaz puede recibir paquetes (excepto para el tipo 2), y si se especifica la interfaz, no puede especificarse el perfil.
Repuesta a multicast
Controla como el sistema responde a los paquetes dirigidos a direcciones multicast o broadcast. Si se activa, el sistema responderá a este tipo de paquetes, en caso contrario, los ignorará. Por ejemplo, si queremos activar la respuesta en el perfil actual:
netsh firewall>set multicastbroadcastresponde mode=ENABLE profile=CURRENT
Registros
Cualquier sistema de firewall debe de registrar todos los accesos no autorizados, para poder analizar posteriormente los eventos. Se puede configurar el nombre del fichero donde se almacenarán los eventos, el tamaño máximo del mismo y si se quiere registrar los paquetes que se rechacen o bien todos los intentos de conexión. Si se quiere por ejemplo, registrar sólo los paquetes que se han rechazado:
netsh firewall>set logging filelocation="c:\windows\registrofirewall.log" maxfilesize=1000 droppedpackets=ENABLE
Referencias
Technorati Tags: firewall, windows xp