Beruflich Dokumente
Kultur Dokumente
MDULO 2
OBJETIVO GENERAL
Adquirir los conocimientos necesarios en el manejo de la herramienta iptables sobre la tcnica de filtrado de paquetes en la implementacin de nuevas reglas de filtrado de acuerdo a las medidas de seguridad que se desea aplicar entre la red privada e Internet de tal manera que estar en la capacidad de construir un firewall de filtrado de paquetes. OBJETIVOS ESPECFICOS
Estar capacitado para implementar un firewall de filtrado de paquetes. Definir las directivas de seguridad predeterminadas de filtrado de paquetes. Filtrar contra ataques especficos, filtrar los mensajes de estado y de control ICMP. Habilitar los servicios bsicos necesarios de Internet, denegar todo tipo de acceso a sitios problemticos, crear cadenas definidas por el usuario. Gestionar NAT e interpretar la informacin de los mensajes de registro del firewall. SUMARIO
1.3 Diferencias entre iptables e ipchains 1.4 Opciones de iptables 1.4.1 1.4.2
t tabla Comando
1.2.1. 1.2.2. 1.2.3.
1.4.3 1.4.4
Comparacin Objetivos
SNAT
1
SEGURIDAD EN REDES GNU/LINUX
1.6 Implementacin de un servidor Firewall 1.7 Actividades del Mdulo 1.7.1 1.7.2
INTRODUCCIN
Cuando una red de una organizacin es vulnerable contra posibles ataques externos, se requiere tomar medidas correctivas de seguridad dentro de la organizacin acceso desde Internet a ordenadores especficos de su red. que permita controlar el
En este mdulo se le ensear el uso de la herramienta IPTables que le permite implementar reglas de filtrado de paquetes IP, aceptando o denegando selectivamente diversos servicios de Internet, as como tambin ocultar su red privada de las redes externas aplicando NAT (Traduccin de direcciones de red) o enmascaramiento IP, reglas que se implementa en un servidor de seguridad Firewall encargado de filtrar el trfico entre la red de la organizacin e Internet.
La tcnica de filtrado de paquetes se basan en revisar la informacin que poseen los paquetes en su encabezado, lo que hace posible su desplazamiento en un proceso de IP. Esta informacin
consiste en la direccin IP origen, la direccin IP destino, el protocolo de encapsulado (TCP, UDP, o ICMP) el puerto origen TCP o UDP, el puerto destino TCP o UDP, el tipo de mensaje ICMP, la interface de entrada del paquete y la interface de salida del paquete. Si se encuentra la
correspondencia y las reglas que permiten el paso del paquete, este ser desplazado de acuerdo a la informacin a la tabla de ruteo, si se encuentra la correspondencia y las reglas que niegan el paso del paquete, este ser descartado. Si estos no corresponden a las reglas se decide a travs de las directivas de seguridad predeterminadas en aceptar o descartar el paquete. 2.2. Netfilter
Es el proceso de controlar los paquetes de red cuando ingresan, se reenva y salen de la red dentro del kernel. Si se desea configurar un firewall o el enmascaramiento IP se debe instalar esta aplicacin.
Los kernels anteriores a la versin 2.4 confiaban en ipchains para el filtrado de paquetes y usaban listas de reglas aplicadas a los paquetes en cada paso del proceso de filtrado. La introduccin del kernel 2.4 trajo consigo la herramienta iptables (tambin llamado netfilter), lo cual es similar a ipchains pero expande enormemente el mbito y el control disponible para el filtrado de paquetes de red. NOTA: El mecanismo predeterminado del firewall en la versin 2.4 del kernel puede usar el comando iptables, pero no se puede usar si ya se est ejecutando ipchains. Si ipchains est presente durante el arranque, el kernel avisar que hay un error y no podr arrancar iptables. Estos errores no afectan la funcionalidad del comando ipchains. La solucin es deshabilitar uno de ellos y reiniciar el sistema.
Para trabajar con iptables se requiere que est configurado el kernel, es necesario tener instalado las fuentes del kernel que se habr hecho durante la instalacin del sistema; ahora nos vamos al directorio del kernel /usr/src/linux-x.y.z (donde x.y.z es la versin del kernel), en
AREA DE TRANSFERENCIA DE CONOCIMIENTOS
algunas
distribuciones de Linux puede ser un enlace al directorio donde se encuentra los archivos fuentes del kernel, ejecutaremos uno de los siguientes programas de configuracin del kernel:
make config: Es un programa que nos pregunta por cada uno de los parmetros del kernel a configurar. make menuconfig: Nos muestra un men desplegable de los parmetros de configuracin del kernel. make xconfig: Este programa se ejecuta en un entorno grfico y nos muestra todos los parmetros a configurar agrupados en categoras. Si ejecutamos make xconfig desde un x-terminal y hacemos clic en: Device Driver Networking support Networking options Network packet filtering IP: Netfilter configuraron IPtables support. (Ver Figura 1)
En el panel derecho de la Figura 1 se muestra una lista de parmetros de Netfilter que estn configurados con la opcin . esto significa que se han instalado como mdulos, esto permitir que solo se carguen los mdulos que se requieren.
mostrar el men principal con una lista de opciones y seleccionaremos la opcin Device Drivers como se puede apreciar en la Figura 2.
Luego seleccionamos la opcin Network packet filtering (replaces ipchains), como se muestra en la Figura 5:
La Figura 7 nos muestra una lista de parmetros de Netfilter que estn configurados con la opcin M esto significa que se han instalado como mdulos, esto permitir que solo se carguen los mdulos que se requieren.
Al salir de make menuconfig nos preguntar si deseamos salvar la nueva configuracin del kernel como no se ha realizado ningn cambio en la configuracin seleccionamos la opcin No. Como se muestra en la Figura 8.
10
Los parmetros del kernel configurado por defecto se guarda en el archivo kernel-x.y.z-arch.config donde arch sera el tipo de arquitectura (i386, i486, i686, etc.) ubicado en el directorio /usr/src/linux-x.y.z/configs. En el caso de sistemas con el kernel 2.6 el archivo de configuracin config-kernel (config-2.6.8.1-12mdk config-2.6.8.-2-386) se guarda en el directorio /boot. En la Figura 9 en la seccin IP: Netfilter Configuration se puede apreciar una lista de parmetros habilitados como mdulos.
11
Parmetro CONFIG_NETFILTER
Descripcin Este parmetro se requiere si usted usar su mquina como firewall o mquina pasarela para la salida Internet.
CONFIG_IP_NF_CONNTRACK
CONFIG_IP_NF_FTP CONFIG_IP_NF_IPTABLES
Analiza las conexiones FTP. Este parmetro se requiere para realizar cualquier clase de filtrado, enmascaramiento IP o NAT
CONFIG_IP_NF_MATCH_LIMIT
Este parmetro es para restringir la tasa de coincidencias como por ejemplo limitar mensajes de registro, esto permite la posibilidad de controlar cuntos paquetes por minuto debern registrarse en el archivo de registro del kernel, cuando el paquete
12
coincide con una regla de filtrado de paquetes. Tambin se usa este mdulo para evitar ciertos ataques de negacin de servicio. CONFIG_IP_NF_MATCH_STATE Habilitar este parmetro para poder filtrar todos los estados de conexin. CONFIG_IP_NF_FILTER Adiciona la tabla bsica de filtrado que se habilitar para filtrar todo paquete IP. En la tabla de filtrado (filter) usted encontrar las cadenas INPUT,
FORWARD y OUTPUT. CONFIG_IP_NF_TARGET_REJEC T Este parmetro habilita la accin que permite especificar un mensaje de error ICMP que se debe enviar en repuesta a paquetes entrantes en vez de simplemente descartarlos. CONFIG_IP_NF_NAT Este parmetro permite la traduccin de direcciones de red o NAT, habilita el acceso a la tabla NAT en iptables. CONFIG_IP_NF_TARGET_MASQ UERADE Este parmetro habilita la accin MASQUERADE. Con la finalidad de indicar al firewall que permita a todos los paquetes que provenga de la red interna, deban aparentar venir de la mquina firewall al momento de salir por la interface de red que tiene asignado una direccin IP dinmica para la salida a Internet.
Tabla 1. Parmetros de configuracin de Netfilter
Los mdulos se encuentra instalados en /lib/modules/x.y.z/kernel/net/ipv4/netfilter como se aprecia en la Figura 10, estos mdulos se cargan cuando se ejecuta iptables.
13
Para los sistema con kernel 2.6 los mdulos de drivers pasan a tener extensin ".ko", por "objeto de kernel" (kernel object), en lugar de la tradicional ".o". (Ver Figura 11)
Cuando un paquete entra en el firewall, alcanza el hardware y es procesado en el ncleo por su driver correspondiente. Despus el paquete empieza a recorrer una serie de etapas en el ncleo
AREA DE TRANSFERENCIA DE CONOCIMIENTOS
14
antes de ser enviado a la aplicacin adecuada (localmente), reenviada hacia otro host, o cualquier otra operacin.1 (Ver Figura 12)
Figura 12. Diagrama de la tablas que son atravesadas por un paquete Cada paquete de red recibido o enviado de un sistema Linux est sujeto al menos a una tabla.
Un paquete puede que sea verificado contra muchas reglas dentro de la lista de reglas antes de llegar al final de una cadena. La estructura y propsito de estas reglas puede variar, pero
normalmente buscan identificar un paquete que viene de o se dirige a una direccin IP en particular o un conjunto de direcciones al usar un determinado protocolo y servicio de red.
1
Fuente: http://iptables-tutorial.frozentux.net/spanish/iptables-tutorial.html 15
SEGURIDAD EN REDES GNU/LINUX
Etapa 1 2 3
Tabla
Cadena
Comentario En los cables (por ejemplo Internet) Llega a la interfaz de red (por ejemplo eth0)
mangle
PREROUTING
Esta
cadena
se
usa
normalmente
para
modificar/"deformar" (mangle) paquetes, es decir, cambiar el TOS y cosas as. 4 nat PREROUTING Esta cadena se usa principalmente para la traduccin de direcciones de red de destino (DNAT, Destination Network Address Translation). Debes evitar filtrar en esta cadena ya que ser puenteada (bypassed) o esquivada en ciertos casos. 5 Decisin de enrutamiento, o sea, est el paquete destinado a nuestro host local o debe ser reenviado?, hacia dnde? 6 mangle INPUT En este punto se alcanza la cadena INPUT de la tabla mangle. Usaremos esta cadena para
modificar/"retocar" paquetes despus de que hayan sido enrutados, pero antes de que se enven al proceso de destino. 7 filter INPUT Aqu es donde filtraremos todo el trfico entrante destinado a nuestro host local. Ten en cuenta que todo el trfico entrante pasa a travs de esta cadena, sin importar la interfaz por la que entre o de dnde proceda. 8 Proceso/aplicacin cliente/servidor)
Tabla 2. Paquetes con destino local Fuente: http://iptables-tutorial.frozentux.net/spanish/iptables-tutorial.html
local
(es
decir,
programa
16
Etapa 1
Tabla
Cadena
Decisin de enrutamiento. Qu direccin de origen usar, qu interfaz de salida usar, y otra informacin que necesita ser recopilada.
mangle
OUTPUT
Aqu es donde se modifican los paquetes; se sugiere que no filtres en esta cadena porque pueden producirse efectos secundarios.
nat
OUTPUT
Esta cadena puede ser usada para hacer NAT a los paquetes que salen desde el firewall.
filter
OUTPUT
mangle
POSTROUTING
La cadena POSTROUTING de la tabla mangle se usa principalmente cuando queremos modificar los
paquetes antes de que dejen nuestro host, pero despus de tomar las decisiones de enrutamiento. Esta cadena ser alcanzada tanto por los paquetes que atraviesan el cortafuegos, como por los generados por l mismo. 7 nat POSTROUTING Aqu es donde efectuamos la traduccin de las direcciones de red de origen (SNAT, Source Network Address Translation) como ya se ha descrito
anteriormente. Es conveniente que no filtres en esta cadena ya que pueden producirse efectos secundarios y determinados paquetes podran colarse incluso aunque se haya establecido la poltica DROP
(desechar) como poltica por defecto. 8 9 Sale al exterior por alguna interfaz (por ejemplo, eth0) En los cables (por ejemplo, Internet)
Tabla 3. Paquetes con origen local Fuente: http://iptables-tutorial.frozentux.net/spanish/iptables-tutorial.html
17
Paquetes reenviados.
Etapa Tabla 1 2 3
Cadena
Comentario En los cables (es decir, Internet) Llega hasta la interfaz de red (es decir, eth0)
mangle PREROUTING
Esta cadena se usa normalmente para modificar paquetes, o sea, para cambiar el TOS y acciones similares.
nat
PREROUTING
Esta cadena se usa principalmente para hacer DNAT (traduccin de direccin de destino). El SNAT (traduccin de direccin de origen) se realiza ms adelante. Debes evitar filtrar en esta cadena ya que en ciertos casos ser puenteada o esquivada.
Decisin de enrutamiento, o sea, el paquete est destinado a nuestro propio host local, o debe ser reenviado?, hacia dnde?
mangle FORWARD
El paquete es enviado a la cadena FORWARD de la tabla mangle. Esto puede aprovecharse para necesidades muy especficas dnde queremos modificar paquetes despus de la decisin de enrutamiento inicial, pero antes de la ltima decisin de enrutamiento, hecha justo antes de que el paquete sea enviado.
filter
FORWARD
El paquete es enrutado hacia la cadena FORWARD. Solamente los paquetes reenviados pasan por aqu y es donde hacemos todo el filtrado. Ten en cuenta que todos los paquetes reenviados (en cualquier direccin) pasan por aqu, as que necesitars pensar en llo cuando escribas tu conjunto de reglas.
mangle POSTROUTING Esta cadena se usa para efectuar los tipos especficos de modificacin de paquetes (packet mangling) que queramos llevar a cabo despus de que todos los tipos de decisiones de enrutamiento se hayan tomado, pero estando el paquete an en esta mquina.
nat
POSTROUTING Esta cadena debe ser usada principalmente y sobretodo para efectuar SNAT. Debes evitar filtrar aqu ya que ciertos paquetes
18
Etapa Tabla
Cadena
Comentario podran "pasar por delante" de la cadena sin ni siquiera rozarla. Aqu es tambin dnde se realiza el enmascaramiento (Masquerading).
10 11
Sale por la interfaz de salida (por ej. eth1). En los cables de nuevo (es decir, la red local). Tabla 4. Paquetes reenviados Fuente: http://iptables-tutorial.frozentux.net/spanish/iptables-tutorial.html
2.2.2. Tablas
Hay actualmente tres tablas independientes lo cual estas tablas asisten en cualquier momento dependiendo de las opciones de configuracin en el Kernel y qu mdulos estn presentes. El filtro de red del kernel 2.4 tiene tres tablas que se menciona a continuacin: filter La tabla por defecto para el manejo de paquetes de red. nat Usada para alterar paquetes que crean una nueva conexin. mangle Usada por tipos especficos de alteracin de paquetes.
Cada una de estas tablas tiene un grupo de cadenas internas que corresponden a las acciones llevadas a cabo por el filtro de red en el paquete. Las cadenas internas para la tabla filter son las siguientes: INPUT Aplica a los paquetes recibidos a travs de una interfaz de red.
19
OUTPUT Esta cadena sirve para paquetes enviados por medio de la misma interfaz de red que recibi los paquetes.
FORWARD Esta cadena sirve para paquetes recibidos en una interfaz de red y enviados en otra.
Las cadenas internas para la tabla nat son las siguientes: PREROUTING Esta cadena altera paquetes recibidos por medio de una interfaz de red antes de que sean enviados hacia su destino. OUTPUT Esta cadena altera paquetes generados localmente antes de que sean dirigidos por medio de una interfaz de red.
SEGURIDAD EN REDES GNU/LINUX
20
POSTROUTING Esta cadena altera paquetes que estn cerca de salir por una interfaz de red hacia su destino. Las cadenas internas para la tabla mangle son las siguientes: PREROUTING Esta cadena altera paquetes recibidos por medio de una interfaz de red antes de que sean dirigidos hacia su destino. POSTROUTING Alterar paquetes que estn cerca de salir por una interface de red hacia su destino. OUTPUT Esta cadena altera paquetes generados localmente antes de que sean dirigidos por medio de una interfaz de red.
A partir del kernel 2.4.18 se incorpora otras dos cadenas: INPUT Esta cadena altera paquetes que ingresan al sistema. FORWARD Esta cadena altera paquetes redirigidos a travs del sistema. 2.3. Diferencias entre IPTables e IPChains.2
a. En IPTables cada paquete filtrado se procesa nicamente usando las reglas de una cadena, en lugar de hacerse con mltiples. Por ejemplo, un paquete FORWARD que llega al sistema usando ipchains tendr que pasar por las cadenas INPUT, FORWARD y OUTPUT para llegar a su destino. Sin embargo iptables slo enva paquetes a la cadena INPUT si su destino es el sistema local y tan slo los enva a la cadena OUTPUT si el sistema local es quien genera los paquetes. Por esta razn, coloque la regla designada para interceptar un paquete particular en la regla que en verdad ver el paquete. b. El objetivo DENY ha sido cambiado a DROP. c. El orden es importante cuando se estn colocando opciones en una regla. Anteriormente, con ipchains, el orden de las opciones de una regla no importaba. El comando iptables usa una sintaxis estricta. Por ejemplo, en iptables el protocolo (ICMP, TCP, o UDP) debe ser especificado antes del puerto origen o destino. d. Cuando especificamos las interfaces de red que vamos a usar en una regla, deberemos utilizar slo interfaces de entrada (opcin i) con cadenas INPUT o FORWARD y las de salida (opcin o) con cadenas FORWARD o OUTPUT. Esto es necesario debido al hecho de que las cadenas OUTPUT no se utilizan ms con las interfaces de entrada y las
2
Fuente: http://www.europe.redhat.com/documentation/rhl9/rhl-rg-es-9/s1-iptables-differences.php3 21
SEGURIDAD EN REDES GNU/LINUX
cadenas INPUT no son vistas por los paquetes que se mueven hacia las interfaces de salida. 2.4. Comando IPTables3
Las opciones que son reconocidas por iptables se pueden dividir en varios grupos diferentes que se usan para definir una regla de filtrado siguiendo la siguiente sintaxis: iptables [t table] command [match] [target/jump]
2.4.1. -t tabla
En esta opcin se especifica que tabla va operar el comando iptables. El Kernel se configura para cargar automticamente el mdulo apropiado para esa tabla si no esta presente. filter La tabla por defecto para el manejo de paquetes de red. nat Usada para alterar paquetes que crean una nueva conexin. mangle Usada por tipos especficos de alteracin de paquetes.
2.4.2. Comando
2.4.2.1. Modificar Cadenas -N, --new-chain [chain] Crear una nueva cadena definida por el usuario. Ejemplo: Crear una nueva cadena llamada cadena_1 iptables -N cadena_1 -X, --delete-chain [chain] Borrar una cadena vaca definida por el usuario. Ejemplo:
3
Fuente: www.netfilter.org, documentacin de iptables, packet-filtering-howto, NAT-howto escrita por Rutsy Russell
AREA DE TRANSFERENCIA DE CONOCIMIENTOS
22
Borra una cadena llamada cadena_1 iptables -X cadena_1 -P, --policy [chain] target Cambiar la Poltica de una cadena de uso interno. Ejemplo: Cambiar la poltica para la cadena INPUT en descartar cualquier paquete. iptables -P INPUT DROP -L, --list [chain] Listar las reglas de una cadena. Ejemplo: Listar las reglas de la cadena INPUT iptables -L INPUT -F, --flush [chain] Vaciar las reglas de una cadena. Ejemplo: Vaciar o eliminar las reglas de la cadena OUTPUT iptables -F OUTPUT -Z, --zero [chain] Poner a cero los contadores de paquetes y bytes de todas las reglas de una cadena. Ejemplo: Poner a cero los contadores de la cadena FORWARD. iptables -Z FORWARD -E, --rename-chain [old-chain] [new-chain] Renombrar una cadena definida por el usuario Ejemplo: Renombrar la cadena de usuario llamada cadena_1 por el nombre de cadena_2 iptables -E cadena_1 cadena_2 2.4.2.2. Modificar Reglas. -A, --append [chain] rule-specification target Aadir una nueva regla a una cadena. Ejemplo:
AREA DE TRANSFERENCIA DE CONOCIMIENTOS
23
Aadir una nueva regla en la cadena INPUT iptables -A INPUT --sport 53 -j ACCEPT -I , --insert [chain] [rulenum] rule-specification target Insertar una nueva regla en alguna posicin de la cadena. Ejemplo: Insertar una nueva regla en la posicin 1 de la cadena INPUT iptables -I INPUT 1 --dport 80 -j ACCEPT -D , --delete [chain] rule-specification target -D , --delete [chain] [rulenum] Borrar una o ms reglas de la cadena seleccionada. Hay dos versiones de este comando: la regla se puede especificar como un nmero en la cadena (comenzar en 1 para la primera regla) o coincida hacia una regla. Ejemplo: Eliminar una regla especifica en la cadena INPUT. iptables -D INPUT --dport 80 -j ACCEPT Eliminar una regla especifica en la posicin 1 de la cadena INPUT. iptables -D INPUT 1 -R, --replace [chain] [rulenum] rule-specification target Reemplazar una regla dentro de una cadena. Ejemplo: Reemplazar una regla especifica en la posicin 1 de la cadena INPUT iptables -R INPUT 1 -s 192.168.1.2 -j DROP -h Descripcin de la sintaxis de los comandos. Ejemplo: iptables -h iptables help 2.4.2.3. Opciones Las opciones de listado son las siguientes: -v, --verbose Muestra informacin de las opciones en forma detallada para cada regla. (Ver Figura 16)
AREA DE TRANSFERENCIA DE CONOCIMIENTOS
24
Ejemplo: Listar informacin detallada de cada regla en la cadena INPUT iptables -L INPUT -v
-n, --numeric Esta opcin permite que direcciones IP y puertos se imprima en formato numrico. Por omisin, el programa tratar de demostrarlos como nombres de host, nombres de la red, o nombres de servicios cuando sea aplicable. En la Figura 17 se muestra un listado de regla en formato numrico. Ejemplo: Listar las reglas de la cadena INPUT en formato numrico. iptables -L INPUT -v -n
-line-numbers
25
Enumera las reglas. Resulta til si desea borrar o modificar reglas atendiendo a su nmero de posicin. En la Figura 18 la opcin num indica el nmero de posicin de una regla. Ejemplo: Enumerar las reglas de la cadena INPUT. iptables -L INPUT -n --line-numbers
-x, --exact Muestra valores exacto de los contadores de paquete y bytes, en lugar de los nmeros redondeados en Ks. (los mltiplos de 1000) Ms (los mltiplos de 1000K) o Gs (los mltiplos de 1000M). Esta opcin es slo aplicable con el comando -L . Ejemplo: iptables -L -x 2.4.3. Comparacin
Los parmetros siguientes componen una regla especfica. -s, --source [ ! ] address [ / mask ] La opcin -s o --source especfica el origen o fuente del paquete; address es la direccin IP origen de donde provienen los paquetes que se puede indicar de la siguiente manera: Nombre de host completo (www.linux.org). Direccin IP ( 200.10.41.142 ). Direccin de red /mscara o address [ /mask] (192.168.1.0/255.255.255.0). Un "!" argumento antes de la direccin IP, por ejemplo ( -s ! 192.168.1.3 ) especifica paquetes que no provenga de la direccin IP 192.168.1.3 o todo excepto paquetes que proviene de la direccin IP 192.168.1.3. Ejemplo:
AREA DE TRANSFERENCIA DE CONOCIMIENTOS
26
Salir todos los paquetes que no provenga de la direccin IP 192.168.1.3 iptables -A OUTPUT -s ! 192.168.1.3 -j ACCEPT -d, --destination [ ! ] address [ / mask ] La opcin -d o --destination especifica el destino de los paquetes; address es la direccin IP destino, se considera la misma descripcin de la sintaxis usado en el parmetro anterior. Ejemplo: Salir todos los paquetes que no vayan a la direccin IP 192.168.1.4 iptables -A OUTPUT -d ! 192.168.1.4 -j ACCEPT -p, --protocol [ ! ] protocol Especifica el protocolo TCP, UDP, ICMP o si no se indica el protocolo entonces todos los paquetes se verificaran. Este parmetro ignora maysculas o minsculas, con lo cual tcp o TCP es lo mismo. El nombre del protocolo puede ir prefijado de un ! argumento a ntes del protocolo, de manera que por ejemplo ( -p ! TCP ) especifica paquetes que no sean TCP o todo excepto paquetes TCP. Ejemplo : Denegamos la entrada de paquetes ICMP que tenga como destino la direccin IP 192.168.1.1 iptables -A INPUT -p icmp -s 0/0 -d 192.168.1.1 -j DROP -j, --jump target Especifica el objetivo de la regla; en otras palabras, qu hacer si el paquete coincide con la regla. El objetivo tambin puede ser una cadena definida por el usuario, una de las formas de objetivos especiales la cual decide el destino del paquete inmediato o una extensin (vase en la seccin de extensiones de objetivos). Si esta opcin es omitida en la regla entonces la coincidencia de la regla puede no tener efecto en el destino del paquete, pero los contadores en esta regla se irn incrementando. -i, --in-interface [ ! ] name La opcin -i o --in-interface es para indicar el nombre (name) de la interface de entrada por la que se recibe el paquete (slo para paquetes que entran a las cadenas INPUT, FORWARD y PREROUTING). Cundo el "!" argumento se usa antes del nombre de una interface de entrada, el sentido se invierte. Si esta opcin se omite cualquier nombre de interface coincide. Ejemplo: Ingresar todos los paquetes por la interface eth0 iptables -A INPUT -i eth0 -j ACCEPT
AREA DE TRANSFERENCIA DE CONOCIMIENTOS
27
-o, --out-interface [ ! ] name La opcin -o --out-interface es para indicar el nombre (name) de una interface de salida por la que se enva el paquete (solo para paquetes que salen por las cadenas FORWARD, OUTPUT y POSTROUTING). Cundo el "!" argumento se usa antes del nombre de una interface de salida, el sentido se invierte. Si esta opcin se omite, cualquier nombre de interface coincide. Ejemplo: Salir todos los paquetes por la interface eth0 iptables -A OUTPUT -o eth0 -j ACCEPT [ ! ] -f, --fragment Hace referencia a paquetes fragmentados que se origina en paquetes que son demasiado extensos como para transmitirlo de una sola vez, siendo necesario dividirlos en fragmentos y enviarlos como si fuesen mltiples paquetes. El primer fragmento del paquete viene con la
cabecera completa ( IP + Protocolo) lo cual es posible examinarlo, pero el resto de los fragmentos solo vienen con una parte de la cabecera del paquete ( con la IP pero sin la parte de los protocolos) por lo tanto no podemos filtrar los fragmentos segn el protocolo. Ejemplo: Elimine todos los paquetes fragmentados que vayan a la direccin IP (192.168.1.1) iptables -A INPUT -f -d 192.168.1.1 -j DROP -c, --set-counters PKTS BYTES Habilita al administrador a inicializar los contadores de paquete y byte de una regla (durante las operaciones INSERT, APPEND y REPLACE ). Ejemplo: Reemplazar una regla especifica en la posicin 1 de la cadena INPUT inicializando los contadores el nmero de paquetes a 20 y 384 bytes de tamao. iptables -R INPUT 1 -s 192.168.1.3 -c 20 384 -j DROP Extensiones
Existe una serie de parmetros que se aaden con el comando iptables por medio de extensiones que pueden ir como mdulos o como libreras de iptables.
Las Extensiones son de dos tipos: Las que aaden nuevas coincidencias (matches) Las que aaden nuevos objetivos (targets)
28
SEGURIDAD EN REDES GNU/LINUX
IPTables puede usar mdulos de extensin de coincidencias de paquetes. Estos se cargan de dos maneras: implcitamente cuando se especifica -p o --protocol, o explcitamente con las opciones -m o --match, seguido por el nombre del mdulo de coincidencia; despus de esto varias opciones extras de comando de lnea llegan a ser disponible, dependiendo de el mdulo especificado. Usted puede usar mltiples mdulos de extensin de coincidencia en una lnea y tambin utilizar las opciones de ayuda -h o --help despus que el mdulo se ha especificado para recibir ayuda de un determinado mdulo.
1. Coincidencias Implcitas
Esta seccin describir las coincidencias implcitas que se cargan automticamente cuando especificamos con la opcin -p o --protocol. Hay actualmente tres tipos de coincidencias implcitas para tres diferentes protocolos. Esta son las coincidencias TCP, coincidencias UDP y coincidencias ICMP. Las coincidencias TCP se basan porque contiene un conjunto de diferentes coincidencias que estn disponibles slo para paquetes TCP. y las coincidencias UDP se basan porque contienen otro conjunto de coincidencias que estn disponibles slo para paquetes UDP. Y lo mismo sucede para los paquetes ICMP. tcp Estas extensiones se cargan si se especifica --protocol tcp. opciones: --sport, --source-port [ ! ] port [ :port ] La opcin --sport o --source-port especifica un puerto o rango de puertos origen. Estos Proporciona las siguientes
pueden estar representados por el nombre del servicio o nmero del puerto. Inclusive un rango de puertos se puede especificar usando el formato port [: port]. Si el primer puerto se omite se asume 0, si el ltimo puerto se omite se asume 65535. Ejemplo: Denegar todos los paquetes tcp que vayan a la direccin IP 192.168.1.1 y que tenga como puertos de origen desde 1024 al 65535. iptables -A OUTPUT -p tcp --sport 1024:65535 -d 192.168.1.1 -j DROP --dport , --destination-port [ ! ] port [ :port ]
AREA DE TRANSFERENCIA DE CONOCIMIENTOS
29
La opcin --dport o --destination-port especifica un puerto o rango de puertos destino. Se considera la misma descripcin de la sintaxis usado en el parmetro anterior. Ejemplo : Denegar todos los paquetes TCP que vayan hacia los puertos destino desde el puerto 5000 al 5010. iptables -A FORWARD -p tcp --dport 5000:5010 -j DROP --tcp-flags [ ! ] mask comp Permite filtrar paquetes TCP considerando sus indicadores flags a travs de este parmetro existe dos argumentos. El primer argumento es la mscara ( mask), es una lista de los indicadores flags que queremos examinar y el segundo argumento ( comp), es una lista de los indicadores flags que deben estar activos. En la cabecera TCP existen una serie de indicadores flags: SYN: Indica solicitud conexin ACK: Aceptacin del Paquete RST: Reinicia una conexin existente PSH: Envo de paquete sin esperar confirmacin del paquete anterior URG: Da mayor prioridad al paquete FIN: Cerrar una conexin ALL: Considera todos los indicadores flags ( SYN,ACK,FIN,RST,URG,PSH ) NONE: Ningn indicador flags Ejemplo: Todos los paquetes que ingrese con los indicadores SYN y ACK activos sern descartados. iptables -A INPUT -p tcp --tcp-flags ALL SYN,ACK -j DROP [ ! ] --syn Solo paquetes TCP que coincida con el bit SYN establecido y los bits ACK y FIN limpios Tales paquetes se usan para solicitar la iniciacin de la conexin TCP. Por ejemplo, bloquear los paquetes que ingresa por la interface prevendr de conexiones entrantes TCP, pero no afectarn las conexiones salientes TCP. Es equivalente a la opcin de coincidencia --tcp-
flags SYN, RST, ACK SYN. Si el "!" precede al flag --syn, el sentido de la opcin se invierte. Ejemplo : Bloquear solicitudes de conexin (paquetes tcp con el indicador SYN activo) de servidores web externos hacia la mquina cliente siendo su direccin IP (192.168.1.1) iptables -A FORWARD -p tcp ! --syn --sport 80 -d 192.168.1.1 -j ACCEPT udp
AREA DE TRANSFERENCIA DE CONOCIMIENTOS
30
Estas extensiones se cargan si se especifica --protocol udp. opciones: --sport, --source-port [ ! ] port [ :port ]
Especifica un puerto o rango de puertos origen. Ver la descripcin de la opcin source-port de la extensin TCP para mas detalle. --dport, --destination-port [ ! ] port [ :port ] Especifica un puerto o rango de puertos destino. icmp Estas extensiones se cargan si se especifica --protocol icmp. Proporciona las siguientes opciones: --icmp-type [!] typename Esto permite especificar el tipo de ICMP, que puede ser un tipo numrico ICMP o el nombre de un tipo ICMP mostrado por el comando. iptables -p icmp -h Tipos de Mensajes ICMP
TIPO 0 8 3
Descripcin Una respuesta ping Una peticin ping Un mensaje de estado de error general. Un enrutador a lo
largo de la trayectoria hasta el destino es incapaz de entregar el paquete. Tabla 5. Descripcin de los mensajes ICMP
31
Las coincidencias explcitas son coincidencias que deben ser cargados especficamente con la opcin -m o match. mac Se especifica de forma explicita con m mac o match mac. Se usa para coincidencias en las direcciones MAC origen usado en redes Ethernet y solo es vlido para los paquetes que pasan por las cadenas INPUT, FORWARD y PREROUTING.
--mac-source [ ! ] address La opcin --mac-source indica la direccin MAC en notacin decimal separada por : es la direccin de hardware asignado por el fabricante del dispositivo de red. Ejemplo: Denegar todos los paquetes que entran de la direccin MAC 00:4F:4E:02:43:B3 con destino hacia la direccin IP 192.168.1.1 iptables -A INPUT -m mac --mac-source 00:4F:4E:02:43:B3 -d 192.168.1.1 -j DROP state Interpreta el anlisis de conexin de red del mdulo ip_conntrack al buscar los estados de conexin de los paquetes. --state state Donde state es una lista separada de estados de conexin a coincidir Hay actualmente 4 posibles estados INVALID (INVALIDO) , ESTABLISHED (ESTABLECIDO) , NEW (NUEVO) y RELATED (RELACIONADO). INVALID Paquete que no est asociado a ninguna conexin conocida y que puede contener datos o cabeceras (headers) defectuosos. ESTABLISHED Paquete que se asocia a una conexin existente NEW Paquete que crea una nueva conexin RELATED
32
Paquete que crea una nueva conexin pero asociado a una conexin existente, tal como una transferencia de datos FTP o un error ICMP. Ejemplo: Denegar el ingreso de nuevas conexiones desconocidas hacia la mquina 192.168.1.3 iptables -A INPUT -p tcp -m state --state NEW, INVALID -d 192.168.1.3 -j DROP 2.4.4. Objetivos
Independientemente de su destino, cuando un paquete cumple una regla en particular en una de las tablas, se asignan a un objetivo (target) particular:
Si la regla especifica un objetivo ACCEPT para un paquete que coincida, el paquete se salta al resto de las verificaciones de la regla y se permite que contine hacia su destino. Si una regla especifica un objetivo DROP, a ese paquete se le niega el acceso al sistema y no se enva nada de vuelta al servidor que envi el paquete. Si una regla especifica el objetivo opcional REJECT, el paquete es entregado, pero se enva un paquete ICMP (mensaje de error) al que envi el paquete. Extensiones de objetivos (targets)
Una extensin de objetivo consiste en un mdulo del ncleo, una extensin opcional a iptables para proporcionar nuevas opciones en la lnea de rdenes. opcin -j seguido el nombre del objetivo. Los objetivos se especifica con la
1. LOG
Este mdulo proporciona un registro de los paquetes coincidentes mediante el ncleo. Cundo esta opcin se pone para una regla, el kernel de Linux imprimir alguna informacin de todos los paquetes que coincida con esta regla (mayormente muestra los campos de la cabecera IP) hacia el registro del kernel donde se puede leer con dmesg. Como se muestra en la Figura 16. --log-level nivel Es el nivel de registro expresado en forma numrica o nombre de nivel. En la Tabla 6 se describen los niveles de registro.
AREA DE TRANSFERENCIA DE CONOCIMIENTOS
33
Nro. 0 1
inmediatamente 2 3 4 5 6 7 Ejemplo: Registrar en el nivel de informacin todos los paquetes que pasen por la cadena INPUT. iptables -A INPUT -j LOG --log-level 6 CRIT ERR WARNING NOTICE INFO DEBUG Condiciones crticas Condiciones de error Condiciones de advertencia Condicin normal, pero significativa Mensaje informativo Mensaje del nivel de depuracin
Tabla 6. Niveles de registro
En la siguiente Tabla 7 se da una breve descripcin de los mensajes de registros del firewall: Apr 21 16:51:18 server01 kernel: IN=eth0 OUT= MAC= Fecha y hora en que se registro y nombre de host del equipo firewall Interface donde se recibi el paquete Interface por donde fue enviado el paquete El destino MAC= 00:04:75:f5:32:fa,
00:01:02:e8:a7:9b:00:04:75: La fuente MAC= 00:01:02:e8:a7:9b, f5:32:fa:08:00 SRC=216.136.204.117 DST=192.168.1.67 LEN=60 Tipo = 08:00 (Indica el fame ethernet que lleva un datagrama IPv4 ) Direccin IP origen Direccin IP destino Longitud total del paquete IP en byte
34
TTL=44
El Tiempo de Vida del paquete es el mximo nmeros de saltos ( es decir enrutadores visitados) que quedan antes de que el paquete caduque
ID=31526
Identificacin nica para este datagrama IP, compartido por todos los fragmentos si es fragmentado
DF PROTO=TCP
La bandera DF indica que no es un fragmento. El nombre o nmero del protocolo. Netfilter usa los nombres para TCP, UDP, ICMP, AH y ESP. Otros protocolos son identificados por el nmero. Una lista est en /etc/protocols.
Puerto Origen (TCP y UDP). Puerto Destino (TCP y UDP). Recibe el mismo nmero de secuencia, pero para el final de la otra conexin TCP
URGP=0
El Puntero de Urgente se habilita para una urgente, transferencia de datos. Desafortunadamente no todas los protocolos que se implementa agregan esta facilidad casi nunca se usa.
Tabla 7. Descripcin de los mensajes de registro del firewall
--log-prefix prefijo Seguido de una cadena de hasta 30 caracteres, que corresponde a un texto que se escribe al comienzo de cada log (registro), para permitir que sean identificados. Ejemplo: Usando el ejemplo anterior agregamos un comentario que diferencia de los dems registro del sistema. iptables -A INPUT -j LOG --log-level 6 --log-prefix Nivel de Informacin REJECT
2.
El objetivo REJECT es equivalente a usar el objetivo DROP con la salvedad que devuelve un mensaje de error ICMP hacia el host que envi el paquete que se bloque. Solo es valido en las cadenas INPUT, FORWARD, OUTPUT y cadenas definidas por el usuario que solo se llaman de estas cadenas.
35
--reject-with <tipo de mensaje> Esta opcin dice al objetivo REJECT que enve una respuesta hacia el host que mand el paquete que se rechaz; una vez que se tiene el paquete que coincide con una regla que hemos especificado con este objetivo, nuestro host primero enva una contestacin asociada y el paquete es descartado. Los siguientes tipos de mensajes ICMP de rechazo son actualmente vlidos: icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable (por defecto), icmp-proto-unreachable, icmp-net-prohibited y icmp-host-prohibited. Ejemplo: Rechazar todos los hosts que soliciten conectarse hacia el puerto 1863. iptables -A OUTPUT -p tcp --dport 1863 -j REJECT --reject-with icmp-host-unreachable Por ltimo est la opcin tcp-reset que slo se puede usar con el protocolo TCP. La opcin tcp-reset dir a REJECT para enviar un paquete TCP RST en contestacin hacia el host que envi el paquete. Los paquetes TCP RST se usan para cerrar conexiones abiertas. Ejemplo: Rechazar todos los hosts que enve solicitud de conexin con destino al puerto 22 iptables -A FORWARD -p tcp --dport 22 -j REJECT --reject-with tcp-reset TTL
3.
El objetivo TTL es usado para modificar el campo Tiempo de Vida (TTL) en la cabecera (header) del paquete IP. Una aplicacin til que cambia todos los valores TTL a un mismo valor en todos los paquetes salientes. Una razn para hacer esto es si usted tiene un ISP que no permite que tenga ms de una mquina conectado hacia una misma conexin de Internet y que siga esto activamente. Al poner todo los valores TTL a un mismo valor, lo har efectivo en un pequeo bit de la cabecera para ello notificar que usted est haciendo esto. Nosotros entonces podemos poner el valor de TTL para todos los paquetes salientes a un valor estandarizado, tal como 64 como especifica en el Kernel de Linux. El objetivo TTL slo es vlido en la tabla mangle. --ttl-set La opcin --ttl-set dice al objetivo TTL que valor TTL debe poner en el paquete. bueno sera alrededor 64. Un valor
red, el paquete puede comenzar que rebote de aqu para all entre dos routers configurados y ms el valor TTL alto, ms el ancho de banda se consume innecesariamente. Este objetivo se podra usar para limitar cundo muy lejos son nuestros clientes. Un caso bueno de esto podra ser servidores DNS, donde nosotros no queremos a los clientes que estn demasiado lejos.
AREA DE TRANSFERENCIA DE CONOCIMIENTOS
36
Ejemplo: Todos los paquetes que ingrese por la interface de entrada antes de ser encaminados hacia su destino se tomar la accin que cada paquete su valor TTL debe ser igual a 64. iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-set 64 2.5. Traduccin de direcciones de red NAT
Network Address Translation (Traduccin de direcciones de red o enmascaramiento IP); el proceso de sustituir una direccin de origen local de un paquete con la de un firewall, de forma que permanezcan ocultas las direcciones IP de la LAN. El paquete parece proceder de un firewall en lugar de una mquina interna de la LAN. El proceso se invierte para paquetes de repuesta entrantes desde servidores remotos. La direccin destino del paquete, la direccin IP de la
El objetivo SNAT es usado para hacer la Traduccin de Direcciones origen de la red, significa que este objetivo reordenar la direccin IP origen y puerto origen en la cabecera del paquete IP. Por ejemplo, cuando varios servidores tienen que compartir una conexin de Internet. Nosotros
entonces podemos aplicar reenvo de paquetes IP (IP forwarding) en el kernel y escribir una regla de SNAT que traducir todos los paquetes saliendo de nuestra red local al IP origen de nuestra propia conexin de Internet. Esto permite que todos los paquetes que salen de nuestra LAN sean miradas como si ellos vengan de un solo servidor, que sera nuestra firewall o cortafuegos.
37
El objetivo SNAT es vlido en la tabla nat, dentro de la cadena POSTROUTING. Esto en otras palabras la nica cadena en que usted puede usar SNAT. Especifica que la direccin origen del paquete se debe modificar (y todos los paquetes futuros en esta conexin se modificarn tambin). Se aplica con una de las siguientes opciones: --to-source ipaddr Especifica una sola direccin IP origen nueva y se asume cualquier puerto origen --to-source ipaddr-ipaddr Rango de direcciones IP origen
--to-source ipaddr: port Se aplica a una sola direccin IP y puerto origen nuevo, esta opcin es vlida si la regla que coincide especifica el protocolo UDP o TCP. --to-source ipaddr-ipaddr: port-port Se aplica a un rango de direcciones IP y puertos origen nuevo, esta opcin es vlida si la regla que coincide especifica el protocolo UDP o TCP. Ejemplo: Se tiene una mquina firewall que consta de una interface de red interna (eth1) siendo su direccin IP (172.16.1.1) que permite acceder a la red local 172.16.1.0/16 y otra interface de red externa (eth0) cuya direccin IP (192.168.1.4) por donde sale a Internet a travs de un router. Implementar una regla que permita enmascarar la salida de los paquetes que proviene de la red local hacia Internet a travs del firewall. iptables -t nat -A POSTROUTING -s 172.16.1.0/16 -o eth0 -j SNAT \ --to source 192.168.1.4 2.5.2. DNAT
El objetivo DNAT es usado para hacer la Traduccin de Direcciones destino de la red, significa que este objetivo reordenar la direccin IP destino y puerto destino en la cabecera del paquete IP.
Este objetivo puede ser til, por ejemplo cuando usted tiene un servidor Web dentro de una LAN privada, pero ninguna IP pblica asignada para que accedan desde Internet. Usted entonces
38
podra decir al firewall para reenviar todos los paquetes que van a su propio puerto HTTP, hacia el servidor Web verdadero dentro de la LAN privada.
El objetivo DNAT es vlido dentro de las cadenas PREROUTING y OUTPUT en la tabla nat y en las cadenas definidas por el usuario que slo se llaman desde cualquiera de estas listas de cadenas. Se aplica con una de las siguientes opciones: --to-destination ipaddr Especifica una sola direccin IP destino nuevo y se asume cualquier puerto origen --to-destination ipaddr-ipaddr Rango de direcciones IP destino --to-destination ipaddr: port Se aplica a una sola direccin IP y puerto destino nuevo, esta opcin es vlida si la regla que coincide especifica el protocolo UDP o TCP. --to-destination ipaddr-ipaddr:port-port Se aplica a un rango de direcciones IP y puertos destino nuevo, esta opcin es vlida si la regla que coincide especifica el protocolo UDP o TCP. Ejemplo: Se tiene una mquina firewall que consta de una interface de red interna (eth1) siendo su direccin IP (172.16.1.1) que permite acceder a la red local, donde pertenece el servidor Web con direccin IP (172.16.1.3) y otra interface de red externa (eth0) con direccin IP (192.168.1.4) por donde sale a Internet a travs de un router. Implementar una regla que permita al servidor Web
AREA DE TRANSFERENCIA DE CONOCIMIENTOS
39
enmascarar su externos.
salida hacia Internet a travs del firewall para que puedan acceder clientes
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 192.168.1.4 --dport 80 -j DNAT \ --to-destination 172.16.1.3:80 2.5.3. MASQUERADE
El objetivo MASQUERADE permite a un conjunto de mquinas de la red interna acceder transparentemente a Internet ocultas tras el firewall, la cual aparece como el nico sistema que est usando Internet. La razn de esto es que para el objetivo MASQUERADE se hizo para trabajar como por ejemplo, con conexiones dial-up, o las conexiones DHCP que obtienes
direcciones IP dinmicas al preguntar cuando conectar hacia la red. Esto significa que usted slo debe usar el objetivo MASQUERADE cuando al firewall se le ha asignado una IP dinmica, que no se sabe la direccin IP verdadera en todo tiempo. Si usted tiene una conexin IP esttica, usted debera en su lugar usar el objetivo SNAT. Este objetivo es vlido dentro de la cadena POSTROUTING en la tabla nat as como el objetivo SNAT. El objetivo MASQUERADE toma una opcin especfica que es opcional: --to-ports port :port La opcin --to-ports se usa para definir el puerto o puertos origen a usar en paquetes salientes. Tambin puede especificar un solo puerto como --to-ports 1025 o un rango de puertos como --toports 1024-3000. Esta opcin es vlida si la regla que coincide especifica el protocolo UDP o TCP. Ejemplo: Implementar una regla que permita enmascarar todos los paquetes de la red privada 172.16.1.0/8 que salen por un enlace ppp0 hacia Internet. iptables -t nat -A POSTROUTING -o ppp0 -s 172.16.1.0/8 -j MASQUERADE 2.5.4. REDIRECT
Este objetivo slo es vlido en la tabla nat, en la cadena PREROUTING, OUTPUT y cadenas definida por el usuario, es un caso concreto del DNAT que nos permite redireccionar al puerto que queramos que los paquetes nos lleguen por un determinado puerto. --to-ports port :port Esta opcin especifica un puerto o rangos de puertos destino. Esto es vlido si la regla especifica tambin los protocolos TCP o UDP.
AREA DE TRANSFERENCIA DE CONOCIMIENTOS
40
Ejemplo: Todos los paquetes que ingresen por la interface eth0 con destino al puerto 1863 sean redirigidos hacia el puerto 3128. iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1863 -j REDIRECT --to-ports 3128 2.6. Implementacin de un servidor Firewall
Se Implementar un Firewall que proteja a los clientes de una red local cuando acceden a Internet. (Ver figura 22)
En la Figura 22 se puede apreciar una mquina firewall que consta de una interface de red interna (eth1) que se accede a la red local (LAN) y otra interface de red externa (eth0) que permite salir a Internet a travs de un router.
Se establecer restricciones de acceso a servicios externos y slo se habilitarn a ciertos servicios (Web, Mail, DNS, etc.) para que accedan los clientes de la red local.
A continuacin se indica los pasos a seguir para construir un firewall de filtrado de paquetes:
41
2. Se Habilita el parmetro del kernel ip_forward esto permite a la mquina firewall realizar el
reenvo de paquetes, tambin se incluye otros parmetros relacionado con la seguridad del sistema. Se configura en el archivo sysctl.conf ubicado en el directorio /etc. (Ver Figura 23)
3. Se crea un archivo script llamado firewall.sh, donde se implementaran las reglas de filtrado y
enmascaramiento IP, solo el administrador del sistema podr modificar estas reglas. Como se muestra en la Figura 24.
Figura 24. Creacin del archivo script y asignacin de privilegios al administrador del sistema
4. Se define las variables que comprende las interfaces de la mquina firewall, la direccin IP de
los servidores de Nombres asignado por su proveedor de Internet, la direccin de red y mscara de subred de la red privada LAN y otras variables que son constantes definidas en los
AREA DE TRANSFERENCIA DE CONOCIMIENTOS SEGURIDAD EN REDES GNU/LINUX
42
estndares de redes (red privada clase A, red privada clase B, etc) que sern usadas al crear las reglas de filtrado en el servidor de seguridad firewall como se muestra en la Figura 25.
5. Se elimina las reglas existentes en las tablas filter, NAT y cadenas definidas por el usuario, as
como tambin poner los contadores de paquetes y bytes a cero. Como se puede apreciar en la Figura 26.
43
Figura 26. Eliminando reglas existentes y poner los contadores de paquetes y bytes a cero
6. Se define la poltica de seguridad en cada cadena en denegar todo. (Ver Figura 27)
7. Se habilita la interface de bucle invertido, esto permite ejecutar cualquier servicio de red o
aquellos de los que depende el sistema, por ejemplo los servicios basados en redes locales como el sistema X Window. Las siguientes reglas que se agregan en las cadenas INPUT y OUTPUT es para aceptar paquetes de la direccin loopback como se muestra en la Figura 28.
44
8. Estas reglas permite rechazar paquetes invlidos que intenta ingresar por la interface externa
9. Las siguientes reglas permiten eliminar paquetes malformados que no tienen ningn indicador
10. Se habilita reglas como se muestra en la Figura 31 para eliminar paquetes fragmentados
45
11. Las siguientes reglas que se muestra en la Figura 32 permite habilitar el ingreso de paquetes
por la interface externa del firewall que slo provenga de conexiones existente y paquetes relacionado a privada. conexiones establecidas, excepto los paquetes que dicen venir de la red
Figura 32. Reglas que habilita el ingreso a paquetes asociados a conexiones existentes.
12. A continuacin se crea una nueva cadena de usuario llamada rule_eth1, donde se agregan
reglas que permitan la salida de paquetes provenientes de mi LAN por la interface interna eth1 de la mquina firewall, slo paquetes que generan nuevas conexiones y pertenezcan a conexiones existentes. (Ver Figura 33)
46
13.
La siguiente regla que se muestra en la Figura 34, se aplica NAT para los paquetes que provienen de la red interna al salir por la interface externa eth0, de modo que aparente venir los paquetes de la mquina firewall.
14. En la Figura 35 se muestra reglas que permiten denegar el ingreso y salida por la interface
externa del firewall paquetes que dicen provenir o ir a la direccin IP pblica del firewall, direccin IP interna, as como de las redes privadas clase A y clase B.
47
15. Se habilita reglas como se muestra en la Figura 36 para denegar el ingreso y salida por la
interface externa del firewall paquetes que dicen provenir o ir al intervalo de direcciones de clase C, clase D y clase E, la direccin loopback, direccin destino de difusin (255.255.255.255) y direccin origen de difusin ( 0.0.0.0).
48
16. En la Figura 37 se habilitan reglas para aceptar paquetes ICMP del tipo de mensaje de control
Source Quench, se envan cuando un origen de conexin, normalmente un enrutador, est enviando datos a una velocidad mayor que la del siguiente enrutador destino puede manejar.
Figura 37. Reglas para aceptar paquetes ICMP del tipo de mensaje de control Source Quench
49
17. Las siguientes reglas permite aceptar paquetes ICMP del tipo de mensaje de estado
Parameter Problem, se enva cuando se recibe un paquete que contiene datos ilegales. (Ver Figura 38)
Figura 38. Reglas para aceptar paquetes ICMP del tipo de mensaje de estado Parameter Problem.
18. Las siguientes reglas que se muestra en la Figura 39, permite aceptar paquetes ICMP del tipo
de mensaje de error Destination Unreachable, es el que se enva en respuesta a un intento de un hacker de asignar sus puertos de servicio, se recomienda permitir salir estos mensajes ICMP con el cdigo de subtipo Port Unreachable.
Figura 39. Reglas para aceptar paquetes ICMP del tipo de mensaje Destination Unreachable.
19. Las siguientes reglas permite desde el firewall hacer ping a cualquier hosts de Internet pero no
50
Figura 40. Reglas que permite hacer ping desde el Firewall a Internet.
20. Habilitar par de reglas que permite hacer ping desde el firewall a la red privada pero no de la
Figura 41. Reglas que permite hacer ping desde el Firewall a la red privada
21. Las siguientes reglas permiten hacer ping desde la red privada a Internet pero no de Internet
Figura 42. Reglas que permite hacer ping desde la red privada a Internet.
22. Reglas que permiten a los clientes de la red privada tener acceso a Servidores DNS externos
para resolver consultas de nombres de hosts. En la Figura 43 se muestra las reglas que permiten a los clientes conectarse solamente a servidores DNS de su proveedor de Internet.
51
Figura 43. Reglas que permiten a los clientes de la red privada tener acceso a servidores DNS
23. Las siguientes reglas permite a la mquina Firewall tener acceso a Servidores DNS externos
para resolver consultas de nombres de hosts. En la Figura 44 se muestra las reglas que permiten al Firewall tener acceso solamente a servidores DNS de su proveedor de Internet.
52
Figura 44. Reglas que permiten al Firewall tener acceso a servidores DNS externos
24. Se habilita a los clientes de la red privada tener acceso a servidores Web externos. En la
Figura 45 se implementa dos reglas, en donde en la segunda regla se acepta solo paquetes provenientes de servidores Web externos que no tenga el indicador SYN de solicitud conexin, solo el cliente de la red privada pueden solicitar conexin a servidores externos.
53
Figura 45. Reglas que permite a los clientes de la red privada conectarse a servidores Web externos
25. Habilita a la mquina firewall conectarse a servidores Web externos. En la Figura 46, se crea
dos reglas la primera regla permite salir por la cadena OUTPUT paquetes generados localmente que crean nuevas conexiones y pertenecen a conexiones establecidas, la segunda regla permite ingresar por la cadena INPUT slo paquetes que provienen de servidores Web externos que pertenezcan a conexiones establecidas entre la mquina firewall y el servidor Web.
Figura 46. Reglas que habilita al Firewall conectarse a servidores Web externos
26. Las siguientes reglas permite a los clientes de la red privada conectarse a servidores SMTP.
En la Figura 47, la primera regla permite al firewall reenviar paquetes proveniente de la red privada que tenga como destino a servidores SMTP, la segunda regla permite solo el ingreso de paquetes que provengan de servidores externos SMTP que no tenga el indicador SYN activo ms conocidos como paquetes SYN, para luego ser reenviados por la mquina firewall con destino a la red privada.
Figura 47. Reglas que permite a clientes de la red privada conectarse a servidores SMTP
54
27. En la Figura 48 se implementa dos reglas con las mismas caractersticas del anterior ejemplo
que permite a los clientes de la red privada conectarse a servidores de entrega de correo POP.
Figura 48. Reglas que permite a clientes de la red privada conectarse a servidores POP.
28. Las siguientes reglas que se muestra en la Figura 49, permiten a los clientes de la red privada
Figura 49. Reglas para que los clientes se puedan conectar a servidores IMAP.
29. En la Figura 50, se define las tareas de la sentencia stop donde se elimina todas las reglas
generadas en las cadenas filter, nat y cadenas definidas por el usuario, as como cambiar la poltica en cadena de aceptar todo.
55
Figura 50. Se elimina las reglas de filtrado y se cambia las polticas definidas en cada cadena
30. En la Figura 51 se define la sentencia status para listar las reglas que se implementaron en
Figura 51. Lista las reglas de filtrado de las cadenas INPUT, FORWARD y OUTPUT
31. En la Figura 52, la siguiente estructura de sentencias define las opciones que usara el archivo
script firewall.sh para iniciar la implementacin de reglas (start), remover reglas (stop), listar reglas (status) as como remover y generar reglas de filtrado (restart).
56
Figura 52. Estructuras que define las opciones usadas por el archivo script firewall.sh
32. Ahora iniciamos la implementacin de reglas ejecutando el archivo script firewall.sh como se
33. En la Figura 54 se d un ejemplo como visualizar las reglas que existen en la cadena INPUT
de la tabla filter.
57
Terminado la configuracin de iptables en nuestro servidor de seguridad firewall, para que el archivo script firewall.sh se ejecute automticamente cada vez que reiniciamos nuestro sistema escribiremos la secuencia de ejecucin en el archivo script usado por el sistema llamado /etc/rc.d/rc.local como se muestra en la Figura 55.
Existe otra herramienta de iptables que permiten guardar todas las reglas habilitadas en nuestro firewall en un archivo. En la Figura 56, se da un ejemplo usando la herramienta iptables-save para guardar las reglas de filtrado en un archivo llamado filename.
AREA DE TRANSFERENCIA DE CONOCIMIENTOS
58
Donde la opcin -c permite guardar los contadores del nmero de paquetes y bytes que se activaron en cada regla.
Se genera con la herramienta iptables-save a travs de un operador de salida (>) el archivo filename, en la Figura 57 se muestra el contenido de este archivo.
Figura 57. Contenido del archivo filename generado con la herramienta iptables-save
Para restaurar las reglas que se guardaron en el archivo filename se usa la herramienta iptablesrestore como se muestra en la Figura 58.
59
Figura 58: Manejo de la herramienta iptables-restore para restaurar las reglas de filtrado
2.7.1.
Autoevaluacin
3. Cules son las cadenas de la tabla filter? a. POSTROUTING, OUTPUT y INPUT b. OUTPUT,FORWARD y PREROUTING c. PREROUTING, OUTPUT y POSTROUTING d. INPUT, OUTPUT y FORWARD
4. Qu opcin de iptables lista informacin detallada de cada regla en una determinada cadena? a. b. c. d.
--state
60
SEGURIDAD EN REDES GNU/LINUX
b. c. d.
INPUT, OUTPUT y FORWARD PREROUTING, OUTPUT y POSTROUTING OUTPUT,FORWARD y PREROUTING FORWARD, POSTROUTING y PREROUTING
Established, New, Related y Reject Invalid, Related, Redirect y Established New, Established, Related e Invalid Invalid, Replace, New y Established
8. Qu parmetro de configuracin del kernel se habilita como mdulo para realizar el filtrado de
paquetes?
a. b. c. d.
9. Cul es el objetivo que se aplica a una determinada regla que permita enmascarar todos los
paquetes que proviene de una red privada que salen por un enlace ppp0 con destino a Internet?
a. b. c. d.
61
2.7.2.
Laboratorio
Duracin 30 minutos Objetivos Brindar al participante en aprender el manejo de la herramienta iptables y el uso de las opciones de comando de lnea para crear sus propias reglas de filtrado de paquetes. Recursos a utilizar Una PC que tenga dos interface de red por alumno con Linux distribucin (RedHat 9.0 o Deban 3.0 ) tener instalado la herramienta iptables y los archivos fuentes del kernel. Ejecucin de la Prctica I Crear las siguientes reglas de filtrado: - Cambiar la poltica de seguridad de cada cadena de la tabla filter - Para acceder a servidores DNS y Web - Para acceder a servidores Web seguros (puerto 443). - Conectarse a un servidor BD Mysql (puerto 3306). - Solicitudes auth de entrada (puerto 113). - Para aceptar paquetes icmp del tipo de mensaje Time Exceded (Tipo 11). - Para hacer ping a hosts de Internet pero no de Internet a mi mquina. Experiencia practica 2.- Instalacin de un servidor firewall
Duracin 45 minutos Objetivos Brindar al participante las recomendaciones y procedimiento a seguir para implementar un servidor firewall en Linux. Recursos a utilizar Una PC que tenga dos interface de red por alumno con Linux distribucin (RedHat 9.0 o Deban 3.0 ) tener instalado la herramienta iptables y los archivos fuentes del kernel. Ejecucin de la Prctica II
AREA DE TRANSFERENCIA DE CONOCIMIENTOS
62
Las siguientes reglas deben habilitarse en la mquina firewall para proteger la red privada con salida a Internet. - Habilitar parmetros relacionado con la seguridad del sistema. Rechazar a responder a solicitudes broadcast Proteccin de Cookie TCP SYN Proteccin contra malos mensajes de error Habilitar el reenvi de paquetes - Cambiar la poltica de seguridad predeterminada en la tabla de filtrado - Reglas para habilitar la direccin loopback - Reglas para rechazar paquetes invlidos - Denegar paquetes malformados - Denegar paquetes fragmentados - Habilitar el ingreso de paquetes asociados a conexiones existentes - Filtrar contra ataques Spoofing - Filtrar mmensajes de control Echo Request (Tipo 8) y Echo Reply (Tipo 0) - Aplicar NAT a los paquetes que proviene de la red local que salen a Internet a travs del firewall - Habilitar a clientes de la red privada enviar solicitud de consulta a servidores DNS. - Permitir a los clientes de la red privada conectarse a servidores Web - Permitir a los clientes de la red privada conectarse a servidores SMTP - Guardar las reglas usando el comando iptables-save - Restaurar las reglas con el comando iptables-restore 2.8. Bibliografa
Textos.
Linux Firewalls (2da. Edicin), autor: Robert L. Ziegler, Publicado por: New Riders Securing and Optimizing Linux: The Ultimate Solution version: 2.0, autor : Gerhard Mourani, Publicado por : Open Network Architecture, Inc., Ultima version : 2001-06-10
Enlaces.
http://www.netfilter.org Contiene informacin surtida sobre iptables, incluyendo una lista FAQ que responde a problemas especficos y otras guas tiles por Rusty Russell, el mantenedor del firewall de Linux IP. Los documentos HOWTO en el sitio cubren temas tales como conceptos bsicos de redes, filtrado de paquetes del kernel 2.4 y configuraciones NAT.
63
www.justlinux.com/nhf/Secutity/Iptables-Basics.html iptables.
Contiene
informacin
bsica
sobre
http://iptables-tutorial.frozentux.net/iptables-tutorial.html Contiene informacin en ingls sobre iptables escrita por Oskar Andreasson.
64