ipfwadm - Administración del cortafuegos y contabilidad
IP
ipfwadm -A parámetros [opciones]
ipfwadm -I parámetros [opciones]
ipfwadm -O parámetros [opciones]
ipfwadm -F parámetros [opciones]
ipfwadm -M [-l | -s] [opciones]
Ipfwadm se utiliza para configurar, mantener e inspeccionar
los cortafuegos IP y las reglas de contabilidad del núcleo Linux.
Estas reglas se pueden dividir en cuatro categorías diferentes:
contabilidad de paquetes IP, cortafuegos de entrada IP, cortafuegos de
salida IP y cortafuegos de reenvío. Para cada una de estas
categorías se mantiene una lista separada de reglas.
Las prestaciones de cortafuegos y de contabilidad del
núcleo Linux proporcionan mecanismos para contabilizar paquetes IP,
para construir cortafuegos basados en el filtrado a nivel de paquetes, para
construir cortafuegos que usen servidores proxy transparentes (mediante
redirección de paquetes a conectores (sockets) locales), y para el
reenvio de paquetes enmascarados (con IP-masquerade). La
administración de estas funciones se mantiene en el núcleo
mediante cuatro listas separadas, cada una de las cuales contiene reglas:
ninguna, una, dos... Cada regla contiene información
específica sobre las direcciones origen y destino, protocolos,
número de puerto y algunas otras características. Un paquete
se ajusta a una regla cuando las características de una regla se
ajustan a la dirección IP de ese paquete. Estas reglas se pueden
dividir en cuatro categorías diferentes:
- Reglas de contabilidad
del cortafuegos IP:
- Se usan para todos los paquetes IP que son enviados o recibidos por el
interfaz local de red. Cada paquete se compara con la lista de reglas, y
en caso de coincidencia se incrementan los contadores de paquetes y bytes
asociados con las reglas.
- Reglas de entrada
del cortafuegos IP:
- Estas reglas se aplican a los paquetes IP entrantes. Todos los paquetes
que llegan por algún interfaz local se comprueban con las reglas de
entrada. La primera regla que se verifica determina la política que
se usa. Cuando no se ajusta a ninguna regla se utiliza la política
por defecto.
- Reglas de salida
del cortafuegos IP:
- Estas reglas definen los permisos para enviar paquetes IP. Todos los
paquetes que están listos para ser enviados por un interfaz local
son comprobados con las reglas de salida. La primera regla que se cumple
determina el comportamiento que se aplica. Cuando no se ajusta a ninguna
regla se utiliza la política por defecto.
- Reglas de
reenvío del cortafuegos IP:
- Estas reglas definen los permisos para el reenvío de paquetes IP.
Todos los paquetes enviados por un host remoto con destino a otro host
remoto se comprueban con las reglas de reenvío. La primera regla
que verifica un paquete determina la política que se
utilizará. Cuando no se verifica ninguna regla, se aplica el
comportamiento por defecto.
Para cada una de estas categorías se mantiene una lista
separada de reglas. Véase ipfw(4) para más
detalles.
Las opciones reconocidas por ipfwadm se dividen en varios
grupos diferentes.
Las siguientes opciones se usan para seleccionar la
categoría de reglas a las que se aplican los comandos:
- -A
[dirección]
- Reglas de contabilidad IP. Opcionalmente se puede especificar un
sentido (in, out, both), indicando si
sólo se deben contar paquetes de entrada, de salida o de ambos
tipos. La opción por defecto es both.
- -I
- Reglas de entrada al cortafuegos IP.
- -O
- Reglas de salida del cortafuegos IP.
- -F
- Reglas de reenvío del cortafuegos IP.
- -M
- Administración de "IP masquerading". Esta
categoría sólo se puede usar en combinación con el
comando -l (list) o el comando -s (fijar tiempo de
expiración).
Se tiene que especificar exactamente una de estas opciones.
Las siguientes opciones especifican la acción concreta que
hay que realizar. Sólo se puede especificar una de ellas en la
línea de comandos, salvo que se indique otra cosa en la
descripción.
- -a
[comportamiento]
- Añade una o más reglas al final de la lista seleccionada.
Para la contabilidad no se puede especificar ningún comportamiento.
Para el cortafuegos es necesario especificar una de las siguientes
políticas: accept, masquerade (válida
sólo para reglas de reenvío), deny o reject.
Cuando los nombre de origen y/o destino se resuelven con
más de una dirección, se añadirá una regla
para cada posible combinación.
- -i
[comportamiento]
- Inserta una o más reglas al principio de la lista seleccionada. Vea
la descripción del comando -a para más detalles.
- -d
[comportamiento]
- Borra una o más entradas al comienzo de la lista seleccionada. La
semántica es idéntica a la de los comandos anteriores. Los
parámetros especificados deben coincidir exactamente con los dados
en los comandos añadir o insertar. En otro caso, si no se ajusta a
nada, no se borrará ninguna regla. Sólo se borra la primera
coincidencia.
- -l
- Lista todas las reglas de la lista seleccionada. Este comando se puede
combinar con el comando -z (reiniciar el contador a cero). En ese
caso los contadores de bytes y de paquetes se reinician inmediatamente
tras mostrar sus valores actuales. Salvo que la opción -x
esté presente, los contadores de paquetes (si son listados) se
mostrarán como númeroK o númeroM donde 1K significa
1000 y 1M significa 1000K (redondeado al valor entero más cercano).
Vea también las opciones -e y -x para ver más
posibilidades.
- -z
- Reinicia los contadores de bytes y de paquetes de todas las reglas de la
lista seleccionada. Este comando se puede combinar con el comando
-l (list).
- -f
- Vacía la lista de reglas seleccionada.
- -p
política
- Cambia la política por defecto para el tipo seleccionado de
cortafuegos. La política dada tiene que ser una de accept,
masquerade (sólo válida para reglas de
reenvío), deny o reject. La política por
defecto se utiliza cuando no se encuentra ninguna regla que se ajuste.
Esta operación sólo es válida para cortafuegos IP,
esto es, en combinación con las opciones -I, -O o
-F.
- -c
- Comprueba si este paquete IP sería aceptado, denegado o rechazado
por el tipo de cortafuegos seleccionado. Esta operación sólo
es válida para cortafuegos IP en combinación con las
opciones -I, -O
o -F.
- -s tcp tcpfin
udp
- Cambia los valores de caducidad (timeout) usados en el enmascaramiento.
Este comando siempre toma tres parámetros, que representan valores
de caducidad (en segundos) para sesiones TCP, sesiones TCP tras recibir un
paquete FIN y paquetes UDP, respectivamente. Un valor de caducidad 0
significa que el valor actual de caducidad, de la entrada correspondiente,
se preserva. Esta operación sólo está permitida en
combinación con la opción -M.
- -h
- Ayuda. Da una descripción (actualmente breve) de la sintaxis del
comando.
Los siguientes parámetros se pueden usar en
combinación con los comandos -a, -i, -d o
-c:
- -P protocolo
- El protocolo de la regla o del paquete a comprobar. El protocolo
especificado puede ser tcp, udp, icpm o all.
El protocolo all se adaptará a todos los protocolos y se
toma por defecto cuando se omite esta opción. all no se
puede usar en combinación con el comando -c.
- -S
dirección[/máscara] [puerto...]
- Especificación de origen (obligatorio). La dirección puede
ser bien un nombre de host, un nombre de red o una dirección IP
concreta. La máscara puede ser una máscara de red o un
número que indique el número de bits con valor 1 a la
izquierda de la máscara de red. Es decir, son equivalentes la
máscara 255.255.255.0 y el número 24. El origen puede
incluir una o más especificaciones de puertos o tipos ICMP. Cada
uno de ellos puede ser un nombre de servicio, número de puerto o un
tipo ICPM (numérico). En el resto de este párrafo, puerto
significa o una especificación de puerto o un tipo ICPM. Una de
estas especificaciones puede ser un rango de puertos, con el formato
puerto:puerto. Además, el número total de puertos
especificados con las direcciones origen y destino no debe ser mayor que
IP_FW_MAX_PORTS (actualmente 10). Aquí un rango de puertos cuenta
como dos puertos.
Los paquetes que no son el primer fragmento de un paquete
TCP, UDP o ICMP son siempre aceptados por el
cortafuegos. Por motivos de contabilidad, estos segundos y posteriores
fragmentos se tratan de forma especial para poderlos contar de alguna
forma. El puerto número 0xFFFF (65535) se usa para ajustarse con
el segundo y siguientes fragmentos de paquetes TCP o UDP. Estos paquetes
se tratarán para propósitos de contabilidad como si sus
puertos fueran 0xFFFF. El número 0xFF (255) se usa para ajustarse
con el segundo y siguientes fragmentos para contabilidad de paquetes
ICPM. Estos paquetes se tratarán, para propósitos de
contabilidad, como si sus tipos ICPM fueran 0xFF. Observe que los
comando y protocolo especificados pueden implicar restricciones sobre el
puerto que sea especificado en combinación con los protocolos
tcp, udp o icpm. También, cuando se
especifica el comando -c, se requiere exactamente un puerto.
- -D
dirección[/máscara] [puerto...]
- Especificaciones de destino (obligatorio). Vea la descripción de la
opción -S (origen) para una descripción detallada de
la sintaxis. Observe que los tipos ICMP no están permitidos
en combinación con la opción -D; los tipos
ICMP sólo se pueden especificar tras la bandera
-S.
- -V
dirección
- La dirección opcional de un interfaz a través del cual se
envía o recibe un paquete. dirección puede ser un
nombre de host o una dirección IP. Cuando se especifica un nombre
de host, éste se debe resolver a exactamente una dirección
IP. Cuando se omite esta opción, se supone la dirección
0.0.0.0, que tiene un significado especial y se ajustará a
cualquier dirección de interfaz. Para el comando -c, esta
opción es obligatoria.
- -W nombre
- Nombre opcional de un interfaz a través del cual se envían o
reciben paquetes. Cuando se omite, se supone una cadena de caracteres
vacía, que tiene un significado especial y se ajustará a
cualquier nombre de interfaz.
Se pueden especificar las siguientes opciones adicionales:
- -b
- Modo Bidireccional. La regla se ajustará con paquetes IP en ambas
direcciones. Esta opción sólo es válida en
combinación con los comandos -a, -i o -d.
- -e
- Salida extendida. Esta opción hace al comando -l mostrar
también la dirección del interfaz y las opciones de la regla
(si existe). Para las listas del cortafuegos, también se
mostrarán los contadores de bytes y paquetes (por defecto
sólo se muestran los contadores para las reglas de contabilidad) y
se muestran las máscaras TOS. Cuando se usa en combinación
con -M, también mostrará la información
relacionada con la secuencia de números delta. Esta opción
sólo es válida en combinación con el comando
-l.
- -k
- Ajustar sólo a paquetes TCP con el bit ACK activo. Esta
opción sólo es válida en combinación con los
comandos -a, -i o -d, y el protocolo TCP.
- -m
- Enmascaramiento de paquetes aceptados para reenvío. Cuando se
utiliza esta opción, los paquetes aceptados por esta regla
serán enmascarados como si fueran originales del host local.
Además, los paquetes de respuesta serán reconocidos como
tales y serán desenmascarados automáticamente pasando el
cortafuegos de reenvío. Esta opción es sólo
válida para las reglas de reenvío con comportamiento
accept (o cuando se haya especificado accept como el
comportamiento por defecto), y sólo se puede usar cuando se compila
el núcleo con la opción CONFIG_IP_MASQUERADE.
- -n
- Salida numérica. Las direcciones IP y números se
imprimirán en formato numérico. Por defecto, el programa
intentará mostrarlos como nombres de host, nombres de red o
servicios (cuando sea aplicable).
- -o
- Activa el registro del núcleo de paquetes ajustados. Cuando se pone
esta opción para una regla, el núcleo de Linux
imprimirá cierta información básica de todos los
paquetes que se ajusten a ella mediante printk(). Esta
opción sólo será efectiva cuando se compile el
núcleo con la opción CONFIG_IP_FIREWALL_VERBOSE. Esta
opción sólo es válida en combinación con los
comandos -a, -i o -d.
- -r [puerto]
- Redirecciona paquetes a un conector (socket) local. Cuanto se utiliza esta
opción, los paquetes aceptados por la regla serán
redireccionados a un conector local, incluso si fueran redireccionados a
un host remoto. Si el puerto redireccionado es 0, que es el valor por
defecto, se usará el puerto destino del paquete como el puerto de
redirección. Esta opción es sólo válida en las
reglas de entrada del cortafuegos con comportamiento accept y
sólo puede ser utilizada cuando el núcleo de Linux
está compilado con la opción
CONFIG_IP_TRANSPARENT_PROXY.
- -t andmask
xormask
- Máscara utilizada para modificar el campo TOS en la cabecera IP.
Cuando un paquete se acepta (con o sin masquerade) por una regla del
cortafuegos, a su campo TOS primero se le hace un Y-lógico
con la máscara andmask y al resultado se le aplica un
O-lógico exclusivo con la máscara xormask. La
máscara se debe especificar en valores de 8 bits hexadecimales.
Esta opción sólo es válida en combinación con
los comandos -a, -i o -d, y no tendrá efectos
cuando se utilice en combinación con reglas de contabilidad o de
cortafuegos para rechazar o denegar un paquete.
- -v
- Salida detallada. Imprime información detallada de la regla o
paquete añadido, borrado o comprobado. Esta opción
sólo tendrá efecto con los comandos -a, -i,
-d o -c.
- -x
- Expande números. Muestra el valor exacto de los contadores de bytes
y de paquetes, en lugar de sólo los números redondeados a
múltiplos de 1K o de 1M (múltiplo de 1000K). Esta
opción sólo tendrá efecto cuando se muestren los
contadores de cualquier forma (vea la opción -e).
- -y
- Solo ajusta paquetes TCP con el bit SYN activado y el bit ACK desactivado.
Esta opción sólo es válida en combinación con
los comandos -a, -i o -d, y el protocolo TCP.
/proc/net/ip_acct
/proc/net/ip_input
/proc/net/ip_output
/proc/net/ip_forward
/proc/net/ip_masquerade
Jos Vos <jos@xos.nl>
X/OS Expert in Open Systems BV, Amsterdam, The Netherlands