Anda di halaman 1dari 7

iptables-restore

El comando iptables-restore se emplea para volver a cargar en el ncleo el conjunto


de reglas guardado
con iptables-save. Sin embargo, por ahora carga toda la informacin desde la
entrada estndar y no
desde un fichero. La sintaxis es:
36
Chapter 5. Salvando y restaurando grandes conjuntos de reglas
iptables-restore [-c] [-n]
El argumento -c reestablece los contadores de bytes y paquetes y es la opcin que
debes usar cuando
quieras volver a cargar los valores guardados con iptables-save de estos
contadores. La opcin tambin
puede escribirse en su forma extendida: --counters.
El argumento -n le indica a iptables-restore que no sobreescriba las reglas
existentes en la tabla o tablas
en que est escribiendo. El comportamiento por defecto de iptables-restore es
eliminar cualquier regla
preexistente. La opcin en su "versin larga" sera: --noflush.
Para cargar conjuntos de reglas con el comando iptables-restore tenemos varias
alternativas, aunque
veremos la ms simple y ms utilizada.
cat /etc/iptables-save | iptables-restore -c
Simplificando: con llo imprimiremos en la salida estndar (la pantalla) el
contenido del conjunto de
reglas existente en el fichero/etc/iptables-save y a continuacin esa salida se
dirigir al comando
iptables-restore, que captar el conjunto de reglas y lo cargar en el ncleo,
incluyendo los valores de
los contadores de bytes y paquetes. sta es la forma ms sencilla de comenzar a
usar el comando, aunque
el ejemplo anterior se puede modificar hasta la saciedad, con diferentes
posibilidades de
redireccionamiento de la salida. Sin embargo, sto se sale del objetivo de ste
captulo y prefiero dejar al
lector que experimente por su cuenta.
El conjunto de reglas debera ahora estar cargado correctamente en el ncleo y todo
debera funcionar. Si
no es as, probablemente has cometido algn fallo al escribir los comandos, o
habrs encontrado un
"bug".
37
Chapter 6. Cmo se escribe una regla
En este captulo se desarrollar en profundidad cmo escribir tus propias reglas.
Una regla puede
definirse como las instrucciones que seguir el cortafuegos al bloquear o permitir
diferentes conexiones y
paquetes en una cadena especfica. Cada lnea que escribas y aadas a una cadena se
debe considerar una
regla. Tambin repasaremos las comparaciones bsicas que tienes disponibles y cmo
utilizarlas, as
como los diferentes objetivos disponibles y cmo puedes crear nuevos objetivos (es
decir, nuevas
sub-cadenas).
6.1. Conceptos Bsicos
Como ya se ha dicho, cada regla es una lnea que lee el ncleo para saber qu hacer
con un paquete. Si
todos los criterios (o comparaciones) se cumplen, entonces se ejecuta la
instruccin objetivo (o salto).
Normalmente deberas escribir tus reglas con una estructura similar a sta:
iptables [-t tabla] comando [comparacin (match)] [objetivo/salto (target/jump)]
En ningn sitio se especifica que la instruccin objetivo (el salto) deba ser la
ltima funcin de la lnea.
Sin embargo, deberas seguir esta estructura para conseguir que sea lo ms legible
posible. De todas
formas, la mayora de las reglas que veas se han escrito de esta forma. As pues,
si lees un script de otra
persona, lo ms seguro es que reconozcas la estructura y entiendas fcilmente la
regla.
Si quieres utilizar cualquier otra tabla que no sea la estndar, puedes
especificarla en la parte que dice
[tabla]. Sin embargo, no es necesario especificar qu tabla usar, puesto que por
defecto iptables utiliza la
tabla filter (filtro) para incluir todos los comandos. Tampoco es preciso que
especifiques la tabla justo en
ese punto de la regla. La verdad es que puede estar casi en cualquier parte de la
lnea. De todas formas,
est ms o menos aceptado que se especifique la tabla al principio.
Eso s, debes tener en cuenta que el comando debera ser siempre lo primero, o a lo
sumo justo detrs de
la especificacin de la tabla. Se emplea el "comando" para decirle al programa qu
hacer, como por
ejemplo insertar o aadir una regla al final de una cadena, o borrar una regla.
Veremos sto en detalle
ms adelante.
La comparacin es la parte de la regla enviada al ncleo que especifica el carcter
concreto del paquete,
lo cual lo diferencia de todos los dems paquetes. Aqu es dnde se puede
determinar de qu direccin IP
viene el paquete, de qu interfaz de red, la IP destino, el puerto, el protocolo o
cualquier cosa. Hay un
montn de comparaciones diferentes que pueden emplearse y que se vern en detalle
en este captulo.
38
Chapter 6. Cmo se escribe una regla
Por ltimo tenemos el objetivo del paquete. Si todas las comparaciones se cumplen
para un paquete, le
decimos al ncleo qu hacer con l. Por ejemplo, podemos hacer que enve el paquete
a otra cadena que
hayamos creado y que es parte de esta tabla. Podemos hacer que deseche el paquete y
no haga nada ms
con l, o podemos enviar una respuesta especfica al remitente. Tambin
estudiaremos los detalles en este
captulo.
6.2. Tablas
La opcin -t especifica qu tabla utilizar. Por defecto se emplea la tabla filter,
aunque se puede usar
cualquiera de las siguientes tablas (ten en cuenta que este es un corto resumen del
captulo Atravesando
tablas y cadenas):
Table 6-1. Tablas
Tabla Descripcin
nat La tabla nat se emplea principalmente para la traduccin de direcciones de red
(Network Address Translation). Los paquetes que son filtrados por esta tabla acaban
con sus IPs modificadas, de acuerdo con nuestras reglas (las de la tabla). De todos
los
paquetes de un mismo flujo, slo el primero pasa por esta tabla: asumiendo que se
permite el paso del primer paquete de un flujo, al resto de paquetes del ese flujo
se les
aplican automticamente las mismas acciones realizadas con el primer paquete (sus
IPs son "NAT-eadas" o filtradas por la tabla NAT; o se enmascaran; ...). En otras
palabras, slo el primer paquete pasa por la tabla NAT y al resto del flujo se le
trata
exactamente igual sin necesidad de pasar por la tabla. Esta es la razn principal
por la
que no deberas hacer ningn filtrado en esta tabla, y lo comentaremos en detalle
ms
adelante. La cadena PREROUTING se emplea para modificar los paquetes en cuanto
llegan al cortafuegos. La cadena OUTPUT se utiliza para modificar los paquetes
generados localmente (es decir, en el cortafuegos) antes de tomar la decisin de
enrutado (direccionamiento). Por ltimo la cadena POSTROUTING se usa para
modificar los paquetes que estn a punto de abandonar el cortafuegos.
39
Chapter 6. Cmo se escribe una regla
Tabla Descripcin
mangle Esta tabla se emplea principalmente para "retocar" paquetes. Entre otras
cosas, se
puede cambiar el contenido de diferentes paquetes y el de sus cabeceras. Por
ejemplo,
se pueden cambiar los campos TTL, TOS o MARK. Se debe tener en cuenta, sin
embargo, que modificar el campo MARK no es realmente un cambio del paquete,
pero se establece su valor para el paquete dentro del espacio del ncleo. Otras
reglas o
programas pueden usar ese valor ms adelante para filtrar o efectuar un enrutado
avanzado; tc es un ejemplo. La tabla consta de cinco cadenas: PREROUTING,
POSTROUTING, OUTPUT, INPUT y FORWARD. PREROUTING se emplea para
modificar los paquetes en cuanto llegan al cortafuegos y antes de que alcancen la
decisin de enrutado. POSTROUTING se emplea para modificar los paquetes en
cuanto las decisiones de enrutado se han tomado. OUTPUT se emplea para modificar
los paquetes generados localmente, antes de que alcancen la decisin de enrutado.
INPUT se emplea para modificar paquetes que se han redirigido al ordenador local,
pero antes de que la aplicacin del espacio de usuario llegue a ver la informacin.
FORWARD se emplea para modificar paquetes que acaban de pasar por la primera
decisin de enrutado, pero antes de que lleguen a la ltima decisin de enrutado.
Ten
en cuenta que esta tabla no puede emplearse para cualquier tipo de traduccin de
direcciones de red (Network Address Translation) o enmascaramiento
(Masquerading): la tabla nat es la que tiene esa funcin.
filter La tabla filter se debera emplear exclusivamente para filtrar paquetes. Por
ejemplo, se
pueden DROP (desechar), LOG (aadir a un registro de sucesos), ACCEPT
(aceptar) o REJECT (rechazar) paquetes sin problemas, igual que en el resto de
tablas. Tenemos tres cadenas en esta tabla: la primera (FORWARD) se usa para todos
los paquetes que no se generan localmente y que no estn destinados a nuestra
mquina (el cortafuegos, en otras palabras). INPUT se emplea en todos los paquetes
que se destinan a nuestra mquina (el cortafuegos), mientras que OUTPUT se emplea
para todos los paquetes generados localmente.
Todo lo anterior debera haber aclarado los conceptos bsicos sobre las tres tablas
diferentes que hay
disponibles. Deben usarse para propsitos completamente diferentes y adems
deberas saber cmo
utilizar cada una de las cadenas existentes. Si no comprendes cmo se usan, es
fcil que introduzcas un
agujero en el cortafuegos que tarde o temprano descubrir y explotar alguien. Ya
se han discutido en
profundidad las tablas y cadenas en Atravesando tablas y cadenas. Si no lo
entiendes a la perfeccin, te
recomiendo que vuelvas a leerlo hasta que lo comprendas totalmente.
6.3. Comandos
En esta seccin trataremos los distintos comandos y qu se puede hacer con ellos.
Un comando le indica
a iptables qu hacer con el resto de la regla que enviamos al analizador.
Normalmente desearemos aadir
o eliminar algo en una tabla determinada. En iptables estn disponibles los
siguientes comandos:
Table 6-2. Comandos
Comando -A, --append
40
Chapter 6. Cmo se escribe una regla
Ejemplo iptables -A INPUT ...
Descripcin Este comando aade la regla al final de la cadena. La regla siempre se
pondr la ltima
en el conjunto de reglas y lgicamente se comprobar la ltima, a no ser que
posteriormente aadas ms reglas con este mismo comando.
Comando -D, --delete
Ejemplo iptables -D INPUT --dport 80 -j DROP, iptables -D INPUT 1
Descripcin Este comando borra una regla de la cadena. Esto puede hacerse de dos
maneras: bien
introduciendo la regla completa a comparar (como en el ejemplo anterior), bien
especificando el nmero de regla que deseas eliminar. Si empleas el primer mtodo,
debers escribir exactamente lo mismo que haya en la cadena a borrar. Si empleas el
segundo mtodo, debers sealar el nmero exacto que tiene la regla en la cadena:
las
reglas estn numeradas progresivamente desde la primera, empezando con el nmero 1.
Comando -R, --replace
Ejemplo iptables -R INPUT 1 -s 192.168.0.1 -j DROP
Descripcin Este comando sustituye la entrada existente en la lnea especificada.
Funciona de la
misma forma que el comando --delete, pero en lugar de eliminar completamente la
entrada, la sustituye por una nueva. El uso ms habitual de este comando puede ser
la
experimentacin con iptables.
Comando -I, --insert
Ejemplo iptables -I INPUT 1 --dport 80 -j ACCEPT
Descripcin Se inserta una regla en la posicin de la cadena que especifiquemos. En
el ejemplo
anterior se insertar en la posicin no 1 en la cadena INPUT, por lo que a partir
de
entonces ser la primera regla en esa cadena.
Comando -L, --list
Ejemplo iptables -L INPUT
Descripcin Este comando ofrece una lista de todas las entradas de la cadena
especificada. En el
ejemplo la lista mostrar todas las entradas de la cadena INPUT. Sin embargo est
permitido no especificar ninguna cadena en particular, con lo cual el comando
listar
todas las cadenas de la tabla especificada (para especificar tablas, lee la seccin
Tablas).
El resultado final depende de otras opciones enviadas al analizador, como pueden
ser -n,
-v, etc.
Comando -F, --flush
Ejemplo iptables -F INPUT
Descripcin Este comando elimina todas las reglas de una cadena, comenzando desde
la que se ha
especificado. Es equivalente a borrar cada regla una a una, pero bastante ms
rpido. Se
puede emplear sin opciones, con lo que borrar todas las reglas de todas las
cadenas en
la tabla especificada.
Comando -Z, --zero
Ejemplo iptables -Z INPUT
41
Chapter 6. Cmo se escribe una regla
Descripcin Este comando obliga a comenzar desde cero a todos los contadores de una
cadena
especificada, o de todas las cadenas de una tabla. Si has utilizado la opcin -v
del
comando -L, probablemente habrs visto el contador de paquetes al principio de cada
campo. Para "poner a cero" este contador, utiliza la opcin -Z. Esta funcin hace
lo
mismo que -L, salvo que -Z no hace ningn listado de las reglas. Si se emplean
juntas
-L y -Z (lo cual es correcto), las cadenas sern listadas primero y luego los
contadores se
reiniciarn (se pondrn a cero).
Comando -N, --new-chain
Ejemplo iptables -N allowed
Descripcin Este comando hace que el ncleo cree una nueva cadena con el nombre
especificado en
la cadena especificada. En el ejemplo anterior se crea una cadena llamada allowed.
Ten
en cuenta que no puede haber ninguna cadena ni ningn objetivo con el mismo nombre.
Comando -X, --delete-chain
Ejemplo iptables -X allowed
Descripcin Este comando borra de la tabla la cadena especificada. Para que
funcione, no debe haber
ninguna regla que est relacionada con la cadena que se va a borrar. En otras
palabras,
debers borrar o cambiar todas las reglas que tengan algn vnculo con esa cadena
antes
de borrarla. Si se usa el comando sin opciones, todas las cadenas creadas por el
usuario
sern eliminadas y slo permanecern aquellas que pertenezcan a la tabla
especificada,
es decir, aquellas que se instalan con iptables. A modo de ejemplo, si escribimos
iptables --delete-chain -t filter lo que conseguiremos ser eliminar todas las
cadenas
"de usuario" de la tabla filter, permaneciendo las cadenas por defecto de esta
tabla; si, en
cambio, escribimos iptables --delete-chain, iptables considera que especificamos la
tabla por defecto (la tabla filter), con lo cual el resultado ser exactamente el
mismo que
en el ejemplo anterior.
Comando -P, --policy
Ejemplo iptables -P INPUT DROP
Descripcin Este comando hace que el ncleo establezca la poltica u objetivo por
defecto en una
cadena. Todos los paquetes que no coincidan con ninguna regla emplearn esa
poltica
de la cadena. Los objetivos permitidos son: DROP y ACCEPT (pueden haber ms;
envame un correo si es as).
Comando -E, --rename-chain
Ejemplo iptables -E allowed disallowed
Descripcin El comando -E hace que iptables cambie el nombre de una cadena del
primer al
segundo nombre. En el ejemplo anterior cambiaramos el nombre de la cadena de
allowed (permitido) a disallowed (no permitido). Ten en cuenta que sto no afecta a
la forma de actuar de la tabla, sino que es simplemente un cambio cosmtico.
Siempre deberas escribir una lnea completa de comando, a no ser que slo quieras
ver la ayuda de
iptables o conocer la versin del comando. Para mostrar la versin, emplea la
opcin -v y para la ayuda,
usa la opcin -h. Vamos, como siempre.
Ahora vamos a ver unas cuantas opciones que pueden usarse con varios comandos.
Observars que se
42
Chapter 6. Cmo se escribe una regla
indica con qu comandos se pueden emplear y qu resultados ofrecen. Ten en cuenta
que no se incluye
ninguna opcin que afecte a reglas o comparaciones. Estas otras opciones se vern
en profundidad ms
adelante.
Table 6-3. Opciones
Opcin -v, --verbose
Comandos
con los que
se emplea
--list, --append, --insert, --delete, --replace
Descripcin Este comando ofrece una salida detallada (completa, descriptiva) y se
emplea
principalmente con el comando --list. En este caso se mostrar la direccin de la
interfaz, las opciones de la regla y las mscaras TOS. Asmismo, tambin se
incluyen los
contadores de bytes y paquetes para cada regla. Estos contadores emplean las
abreviaturas K (x1,000), M (x1,000,000) y G (x1,000,000,000). Para obtener el
tamao
exacto, puedes emplear la opcin -x, descrita ms adelante. Si se usa esta opcin
con los
comandos --append, --insert, --delete o --replace, el programa mostrar informacin
detallada sobre cmo se ha interpretado la regla, si se ha insertado correctamente,
etc.
Opcin -x, --exact
Comandos
con los que
se emplea
--list
Descripcin Esta opcin expande las numeraciones, o sea, no se emplean los
mltiplos K, M o G, si
no que se ven los paquetes y bytes exactos de los contadores de la regla en
cuestin. Esta
opcin slo es til con el comando --list y no tiene ningn inters en los dems
comandos.
Opcin -n, --numeric
Comandos
con los que
se emplea
--list
Descripcin Esta opcin muestra valores numricos: las direcciones IP y los puertos
se listarn con
sus nmeros y no con sus nombres de servidor, red o aplicacin. Slo se utiliza con
--list
e ignora la opcin por defecto de traducir todos los valores numricos a servidores
y
nombres (donde sea posible).
Opcin --line-numbers
Comandos
con los que
se emplea
--list
Descripcin Empleando esta opcin con --list, cada regla se listar con su nmero
de lnea. Puede ser
conveniente saber qu nmero tiene cada regla al insertar reglas. Esta opcin slo
tiene
efecto con el comando --list.
Opcin -c, --set-counters
Comandos
con los que
se emplea
--insert, --append, --replace
43
Chapter 6. Cmo se escribe una regla
Descripcin Esta opcin se usa cuando se crea o modifica una regla de forma que se
reinicializan sus
contadores de paquetes y bytes. La sintaxis sera algo as: --set-counters 20 4000,
lo
cual le dira al ncleo que fijara el contador de paquetes a 20 y el contador de
bytes a
4000.
Opcin --modprobe
Comandos
con los que
se emplea
Todos
Descripcin Esta opcin se emplea para indicarle a iptables qu mdulo utilizar al
probar mdulos o
al aadirlos al ncleo. Se puede usar por ejemplo cuando el comando modprobe no
est
en ningn directorio de la ruta de bsqueda. De esta forma el programa sabr qu
hacer
si se necesita un mdulo que no se ha cargado previamente. Esta opcin se puede
utilizar con todos los comandos

Anda mungkin juga menyukai