PDA

Ver la versión completa : El firewall de XP SP2 desde la línea de comandos



mimasol
16-03-2007, 13:21
Este articulo lo halle en esta web (tratando de configurar mi firewall de xp a mi antojo) http://www.fermu.com/content/view/261/2/lang,es/



Una de las muchas ventajas que presenta SP2 es que el firewall de XP puede manipularse mediante el comando netsh desde la línea de comandos. En realidad sería mediante la serie de comandos netsh firewall cuya explicación describiré en este artículo.
Antes de ello, voy a explicar un poco la terminología usada en los distintos parámetros de los comandos para que su función quede más clara. Antes hay que tener en cuenta que todas estas excepciones se refieren al tráfico entrante que es el que bloquea el firewall de XP SP2. Salvo contadas excepciones, no tiene en cuenta el tráfico saliente.

PROFILE (perfil)

Existen tres tipos de perfiles a los que aplicar los cambios:
Domain (Perfil de dominio): es el perfil de configuración del firewall necesario cuando el equipo está unido a un dominio.
Standard (Perfil estándar): es el perfil usado cuando el equipo no está unido a un dominio.
Current (Perfil actual): es el perfil actual en el que trabajamos y es la opción por defecto.
All (Todos): se refiere a que el comando se aplicará en todos los perfiles (es decir, en los tres anteriores).


SCOPE (ámbito)

Nos indica cuál es el grado de “extensión” (o de restricción) que va a tener el comando. Existen tres ámbitos:


All (Todos): permite todo el tráfico a través del firewall y es la opción por defecto.
Subnet (Subred): el firewall sólo permitirá el tráfico procedente de la subred local.
Custom (Personalizado): sólo permite el tráfico especificado a través del firewall.

Nota: cuando un comando permita como parámetro direcciones IP, el ámbito debe estar el su modalidad custom.


MODE (modo)

Existen dos modos:


Enable: permite el tráfico entrante no solicitado a una aplicación o un puerto. Es la opción por defecto.
Disable: no permite que el programa esté permitido en la lista de excepciones.


PROTOCOL (protocolo)

Son los dos habituales:
TCP: Transmission Control Protocol
UDP: User Datagram Protocol

ADDRESSES (direcciones)

Las direcciones IP pueden especificarse de distintas maneras. En primer lugar, mediante el parámetro LocalSubnet, indicando que dichas direcciones se toman de la subred local. También podría especificarse mediante máscara de subred o con una longitud-prefijo (que representa, de esa dirección, cuántos bits representan el prefijo).
Si se utiliza máscara de subred, puede indicarse la IP o bien mediante un rango (10.48.73.0/255.255.0.0) o bien mediante una IP de ese rango (10.48.73.2/255.255.0.0); y además así, en formato IP/máscara. También puede especificarse mediante prefijo, con rango (12.148.83.0/24) o con una dirección dentro de ese rango (12.148.83.1/24); y además así, en formato IP/prefijo.
Pueden aparecer los formatos juntos, siempre separados por comas. Por ejemplo:

LocalSubnet,10.48.73.25/255.255.0.0,12,148,43,0/24.

Hay que tener en cuenta que si se introducen espacios o algo mal se obviarán todas las direcciones con lo que es aconsejable revisarlas antes bien.


Convenciones

En lo que sigue, vamos a usar la siguiente convención para presentar los distintos comandos:

En negro el nombre del comando
En azul los parámetros obligatorios
En verde los parámetros opcionales

Los doce comandos para configurar el firewall podrían ser divididos en varios grupos: excepciones (por aplicación, por puerto y predefinidas), información (información como tal y notificaciones), respuestas al multicast, modos y tráfico ICMP. Veamos cada grupo.



EXCEPCIONES mediante aplicaciones

Hay un primer grupo de tres comandos que nos permiten configurar las excepciones definidas mediante aplicaciones. Estos comandos son:

add allowedprogram

Mediante este comando podemos añadir una excepción basada en un programa. Esta excepción puede configurarse usando los distintos parámetros obligatorios y opcionales:

add allowedprogram

program = ruta del ejecutable, entre comillas si contiene espacios; en la ruta pueden usarse variables de entorno como %programfiles%, etc.

name = nombre que se dará a la excepción y que aparecerá en la lista de excepciones

mode = uno de los modos descritos anteriormente

scope = ámbito de la excepción tal y como se han descrito

addresses = direcciones en el formato especificado

profile = perfil donde se aplicará la excepción



Veamos algunos ejemplos. Antes, comentar, que aunque no voy a escribirlo, todos los ejemplo, para ejecutarse deberá acudirse a Inicio > Ejecutar y escribir cmd. En la nueva pantalla escribir los ejemplos como una sola línea
netsh firewall add allowedprogram program = “C:\Archivos de programa\Aplicacion\programa.exe” name = “Mi programa” mode = disable scope = custom addresses = 11.121.71.0/255.255.0.0,12.13.120.1 profile = all

Más sintéticamente, puede escribirse sin los nombres de los parámetros, con lo que quedaría así:

netsh firewall add allowedprogram “C:\Archivos de programa\Aplicacion\programa.exe” “Mi programa” disable custom 11.121.71.0/255.255.0.0,12.13.120.1 all

Veamos qué hace este ejemplo:

añade una excepción llamada “Mi programa” a la lista de excepciones del firewall (y que puede consultarse yendo a Inicio > Panel de control > Centro de seguridad > Firewall de Windows > Excepciones), y usando un programa que está en la ruta especificada. No está permitido que este programa reciba tráfico a través del firewall (mode=disable), permitirá el tráfico especificado (scope=custom) a las direcciones especificadas y para todos los perfiles.

set allowedprogram

Con este comando podemos modificar una excepción basada en un programa. No creo que merezca la pena poner ejemplo porque es exactamente igual que el anterior. Tiene exactamente los mismos parámetros que add allowedprogram.

delete allowedprogram

Nos permite eliminar una excepción del firewall basada en un programa o aplicación. Veamos su sintaxis:

delete allowedprogram

program = ruta del ejecutable cuya excepción se va a eliminar, pudiendo contener variables de entorno.

profile = perfil del que se va a eliminar la excepción.


Veamos un ejemplo:

netsh firewall delete allowedprogram “C:\Archivos de programa\Mi carpeta\applic.exe” domain


Este ejemplo hace lo siguiente: elimina la excepción del programa “applic.exe” y sólo del perfil de dominio.



EXCEPCIONES predefinidas



set service

Mediante el comando set service podemos permitir o bloquear las cuatro excepciones predefinidas del firewall de XP: compartir archivos e impresoras, administración remota, escritorio remoto y UPnP. Estos son los cuatro tipos (type) que XP los llama así: fileandprint, remoteadmin, remotedesktop, upnp. Hay un quinto “tipo” que es all, es decir, todas las anteriores. La sintaxis del comando es la siguiente:

set service

type = cualquiera de los cinco tipos anteriormente descritos (recuérdese, los cuatro como tal y “all”).

mode = como habitualmente, “enable” o “disable

scope = ámbito de la excepción en su forma habitual

addresses = direcciones a las que se aplicará la excepción, en la forma descrita

profile = perfil al que se aplicará la excepción


Veamos un ejemplo ilustrativo:

netsh firewall set service upnp disable standard

En este caso, no se permite tráfico entrante a través de la excepción UPnP en el perfil estándar.



EXCEPCIONES mediante puertos

add portopening

Este comando crea una excepción pero en este caso basada en un puerto, tanto TCP como UDP o ambos. Veamos la sintaxis:

add portopening

protocol = cualquiera de los “tres” ya definidos: TCP, UDP o “All” (todos).

port = número de puerto del 1 al 65535.

name = nombre que se le va a dar al puerto (y por tanto a la excepción), y que no tiene por qué se el convencional del TCP/IP.

mode = los modos habituales “enable” / “disable”

scope = ámbito de la excepción

addresses = direcciones en el formato especificado

profile = perfil al que se aplicará la excepción

interface = nombre de la interface, es decir, el nombre de la conexión de red.


Como nota hay que indicar que el “perfil” y la “interface” no tienen por qué especificarse a la vez, al igual que el “ámbito” y la “interface”.

Veamos un ejemplo aclaratorio:

netsh firewall add portopening TCP 80 miweb enable subnet 152.61.1.1

En este ejemplo, se abre el puerto TCP 80 y se le dará por nombre a la excepción “miweb”. Se permite tráfico entrando a través de él dentro de la subred local y desde la dirección 152.61.1.1

Vuelvo a recordar que este comando, como todos puede escribirse también con el nombre de los parámetros. En este caso, sería así (más largo, claro):

netsh firewall add portopening protocol = TCP port = 80 name = miweb mode = enable scope = subnet addresses = 152.61.1.1


set portopening


Este comando nos permite modificar una excepción de puerto ya presente en el firewall. En este caso, los parámetros son exactamente iguales que los de la orden anterior add portopening con lo que remito a ella para los detalles.


delete portopening

Mediante este comando podremos eliminar una excepción del firewall basada en un puerto ya presente. Su sintaxis es:
delete portopening

protocol = los tres considerados (recordar: TCP, UDP y All)

port = número de puerto del 1 al 65535.

profile = perfil al que se aplicará la excepción

interface = nombre que la máquina tiene en la red.


Veamos un ejemplo:

netsh firewall delete portopening UDP 500 all

que eliminaría la excepción a través del puerto 500 UDP para todos los perfiles.


INFORMACIÓN Y NOTIFICACIONES



set logging

Con este comando podemos configurar distintos aspectos relacionados con la información del firewall. Algo curioso pasa con el archivo donde se guarda la información del firewall: podemos especificar el tamaño del mismo. Una vez alcanzado dicho tamaño, se archivo el log y se crea uno nuevo. Veamos la sintaxis del comando. En este caso, todos los parámetros son opcionales pero al menos debe especificarse uno.

set logging

filelocation = ruta en la que se guardará el archivo log

maxfilesize = tamaño máximo del archivo log desde 1 KB a 32767 KB (es decir, 32 MB).

droppedpackets = esta opción permite informar sobre los paquetes perdidos y toma dos opciones: “enable” (quedan registrados) o “disable” (no quedan registrados).

connections = informa sobre las conexiones llevadas a cabo con éxito y también tiene dos opciones: “enable” (quedan registrados) o “disable” (no quedan registrados).


En este caso, el ejemplo es bien sencillo:

netsh firewall set logging %userprofile%\escritorio\firew.log 8192

Es decir, que guarde la información en un archivo que se ubicará en el escritorio y que se llamará firew.log. Además, este archivo tendrá un tamaño máximo de 8 MB.



set notifications

Este comando nos permite controlar y configurar el comportamiento de las notificaciones del firewall, produciéndose éstas en forma de mensajes emergentes (pop-ups). Si sintaxis es bien sencilla:


set notifications

mode = los modos habituales

profile = perfiles habituales tal y como ya se ha visto.


Otro ejemplo sencillo:

netsh firewall set notifications enable current

Es decir, permite las notificaciones en el perfil actual.



MULTICAST / BROADCAST

Con este comando podemos especificar el comportamiento del firewall permitiendo o no las respuestas unicast a un multicasting o un broadcasting. La sintaxis es fácil:

set multicastbroadcastresponse

mode = los dos habituales: “enable” (permite la respuesta” o “disable” (no permite la respuesta).

profile = perfiles a los que se aplicará el comando.



Como ejemplo fácil:

netsh firewall set multicastbroadcastresponse enable domain

Permite una respuesta a un multicast/broadcast en el perfil de dominio.


MODOS de operación


set opmode

Con el comando este podemos configurar el modo de operación del firewall, o bien globalmente (excepciones en conjunto) o para una conexión en concreto. La sintaxis es:

set opmode

mode = como habitualmente “enable” / “disable”

exceptions = permite excepciones (“enable”) o no las permite (“disable”).

profile = perfil a donde se aplicará

interface = nombre de la conexión



Hay que especificar que ni “profile” e “interface”, ni “exceptions” e “interface” tienen por qué especificarse juntos o incluso puede que no puedan especificarse juntos.

Como ejemplo:

netsh opmode enable disable

Es decir, en el ejemplo, el firewall estará habilitado y las excepciones deshabilitadas.



TRÁFICO ICMP

El comando que vamos a ver permite configurar el tráfico ICMP (Internet Control Message Protocol) del firewall (las excepciones). Este comando set icmpsetting. Va a llevar como parámetro el tipo (type) de ICMP y que va a venir indicado por un número del 2 al 17 aunque no correlativos. Veámoslos y expliquemos cada uno:

2 permite paquetes salientes que sean demasiado grandes

3 permite destinos salientes que son inalcanzables

4 permite paquetes de control de flujo saliente

5 permite redireccionamiento

8 permite solicitud de eco entrante

9 permite solicitud del router entrante

11 permite tiempo excedido saliente

12 permite problema de parámetro saliente

13 permite petición de marca de hora entrante

17 permite petición de máscara entrante

All todos los tipos

Veamos ya la sintaxis del parámetro:
set icmpsetting

type = cualquiera de los 11 (los 10 números y “all”) anteriores

mode = como siempre “enable” / “disable”

profile = perfiles habituales

interface = nombre de la conexión de red.

Como nota, indicar que ni “profile” e “interface”, ni “type” e “interface” tienen por qué especificarse conjuntamente, e incluso puede que no puedan especificarse así.

Como ejemplo:

netsh firewall set icmpsetting 8 enable all

que permite la solicitud de eco entrante para todos los perfiles.

EL COMANDO “SHOW”

Con este comando podemos visualizar el estado actual de configuración del firewall, mostrando distinto tipo de información:

allowedprogram muestra las excepciones de programas

portopening informa sobre las excepciones por puertos

config muestra información sobre la configuración local del firewall

currentprofile muestra información del firewall dentro del perfil actual

icmpsetting muestra información sobre el tráfico ICMP a través del firewall

logging muestra información sobre la información en forma de archivo log del firewall

notifications muestra información sobre el estado de las notificaciones

opmode informa sobre el modo operativo del firewall

service informa sobre los servicios (excepciones predefinidas)

state informa sobre el estado de la configuración del firewall

Así, si queremos ver el estado de nuestro tráfico ICMP tendremos que ejecutar

netsh firewall show icmpsetting

EL COMANDO “RESET”

Este comando sin parámetros ni excepciones nos permite resetear todas las opciones que tengamos configuradas del firewall y regresarlo a las que presenta por defecto. Tiene el mismo efecto que si nos vamos a Inicio > Ejecutar y escribimos %systemroot%\inf. Veremos el archivo netfw.inf, hacemos click con el botón derecho del ratón sobre él y elegimos “Instalar”. Esto tiene el mismo efecto, y resetea el firewall.

A mi me parecio muy completo ,espero que les sirva :)

Saludos
Mimasol

ABODUJANA
16-03-2007, 15:04
Gran aportacion mimasol...

Siempre digo que la gran desconocida es XP