Documentos de Académico
Documentos de Profesional
Documentos de Cultura
QUE ES UN FIREWALL ?
Un Firewall es un hardware especfico con un sistema operativo que filtra el trfico TCP/UDP/ICMP y decide si un paquete pasa, se modifica, se convierte o se descarta. Para que un Firewall entre redes funcione como tal debe tener al menos dos tarjetas de red.
HISTORIA
FIREWALL
ESTRATEGIAS DE SEGURIDAD
TIPOS DE FIREWALL
PROXY
VENTAJAS
DESVENTAJAS
Los servicios PROXY por lo general requieren de modificaciones a los clientes, a los procedimientos o a ambos
Los servicios PROXY no lo protegen de todas las debilidades de los protocolos
CRITERIOS DE FILTRADO
Por direccin de origen Por direccin de destino Por puerto de origen Por puerto de destino
poltica de seguridad Definir qu se permite y qu se prohbe, y, el trfico al que debe darse paso y el que debe cortarse. definicin de reglas Debe especificarse qu paquetes son permisibles por medio de expresiones lgicas funcin de los campos de dichos paquetes. escritura de reglas Traducir las especificaciones al lenguaje que el software de filtrado soporta
NETFILTER/IPTABLES
netfilter: es un componente del ncleo Linux (desde la versin 2.4) encargado de la manipulacin de paquetes de red, que permite: Filtrado de paquetes Traduccin de direcciones (NAT) Modificacin de paquetes
FUNCIONAMIENTO
Para cada paquete, en funcin del procesamiento que vaya a sufrir, se consulta la cadena que corresponda a su situacin dentro de netfilter. Dentro de cada cadena las reglas se inspeccionan secuencialmente [orden de reglas importante] Si el paquete encaja con las condiciones de una regla, se ejecuta la accin correspondiente y se abandona la cadena. Si el paquete no encaja con ninguna regla, se le aplica la poltica por defecto que se haya asignado a esa cadena.
NETFILTER/IPTABLES
iptables: es una herramienta/aplicacion (forma parte del proyecto net-filter) que hace uso de la infraestructura que ofrece netfilter para construir y configurar firewalls
Permite definir polticas de filtrado, de NAT y realizar logs remplaza a herramientas anteriores: ifwadmin, ipchains
Puede usar las capacidades de seguimiento de conexiones net-filter para definir firewalls con estado
IPTABLES
La definicin de reglas para iptables est definida usando comandos. Estructura general de cada comando:
IPTABLES-TABLAS
TABLAS. Se corresponden con los distintos tipos de procesamiento que se pueden aplicar sobre los paquetes. Tablas disponibles:
IPTABLES-CADENAS
CADENAS: Contienen las listas de reglas a aplicar sobre los paquetes Cadenas predeterminadas:
IPTABLES-OPCIONES DE COMANDOS
-A Aade la regla iptables al final de la cadena especificada. Este es el comando utilizado para simplemente aadir una regla cuando el orden de las reglas en la cadena no importa. -C Verifica una regla en particular antes de aadirla en la cadena especificada por el usuario. Este comando puede ser de ayuda para construir reglas iptables complejas pidindole que introduzca parmetros y opciones adicionales. -D Borra una regla de una cadena en particular por nmero (como el 5 para la quinta regla de una cadena). Puede tambin teclear la regla entera e iptables borrar la regla en la cadena que corresponda. -E Renombra una cadena definida por el usuario. Esto no afecta la estructura de la tabla. -F Libera la cadena seleccionada, que borra cada regla de la cadena. Si no se especifica ninguna cadena, este comando libera cada regla de cada cadena.
IPTABLES-OPCIONES DE COMANDOS
-h Proporciona una lista de estructuras de comandos, as como tambin un resumen rpido de parmetros de comandos y opciones. -I Inserta una regla en una cadena en un punto especificado por un valor entero definido por el usuario. Si no se especifica ningn nmero, iptables colocar el comando en el tope de la cadena. -L Lista todas las reglas de la cadena especificada tras el comando. Para ver una lista de todas las reglas en todas las cadenas en la tabla por defecto filter, no especifique ninguna cadena o tabla.
PARAMETROS PRINCIPALES
-p protocolo del paquete. Puede tomar los valores tcp,udp,icmp o all (ip). -s origen del paquete. Puede ser un nombre de mquina, una IP, una red completa especificada como direccin/mscara, etc. --sport puerto origen, se puede especificar el puerto de origen del paquete, o un rango de puertos puertoinicio-puertofinal siendo los valores por defecto para estos 0 y 65535 (=2e16 -1) -d destino del paquete. Exactamente igual que en el caso anterior
-o interfaz de salida del paquete en el caso de las cadena de salida o de redireccionamiento (forward).
ACCIONES O TARGETS
ACCEPT (aceptar) Este destino hace que Iptables acepte el paquete.
DROP (descartar) Este destino hace que Iptables descarte el paquete sin ningn otro tipo de procesamiento. El paquete simplemente desaparece sin indicacin de que fue descartado al ser entregado a la terminal de envo o a una aplicacin.
REJECT (rechazo) Este destino tiene el mismo efecto que 'DROP', salvo que enva un paquete de error a quien envi originalmente. Se usa principalmente en las cadenas de ENTRADA y de REDIRECCIN de la tabla de filtrado.
SINTAXIS
Tabla puede ser nat, filter o mangle; Comando puede ser A, -D, -L, -F, -I; Cadena puede ser INPUT, OUTPUT, FORWARD; target puede ser ACCEPT o DROP.
#!/bin/sh ## SCRIPT de IPTABLES - ejemplo del manual de iptables ## Ejemplo de script para proteger la propia mquina ## Pello Xabier Altadill Izura ## www.pello.info - pello@pello.info echo -n Aplicando Reglas de Firewall... ## FLUSH de reglas iptables -F iptables -X iptables -Z iptables -t nat -F ## Establecemos politica por defecto iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT ## Empezamos a filtrar # El localhost se deja (por ejemplo conexiones locales a mysql) /sbin/iptables -A INPUT -i lo -j ACCEPT # A nuestra IP le dejamos todo iptables -A INPUT -s 195.65.34.234 -j ACCEPT # A un colega le dejamos entrar al mysql para que mantenga la BBDD iptables -A INPUT -s 231.45.134.23 -p tcp --dport 3306 -j ACCEPT # A un diseador le dejamos usar el FTP iptables -A INPUT -s 80.37.45.194 -p tcp -dport 20:21 -j ACCEPT # El puerto 80 de www debe estar abierto, es un servidor web. iptables -A INPUT -p tcp --dport 80 -j ACCEPT # Cerramos rango de los puertos privilegiados. Cuidado con este tipo de # barreras, antes hay que abrir a los que si tienen acceso. iptables -A INPUT -p tcp --dport 1:1024 -j DROP iptables -A INPUT -p udp --dport 1:1024 -j DROP # Cerramos otros puertos que estan abiertos iptables -A INPUT -p tcp --dport 3306 -j DROP iptables -A INPUT -p tcp --dport 10000 -j DROP iptables -A INPUT -p udp --dport 10000 -j DROP
IPTABLES - NAT
NetworkAddressTranslation
Consiste en cambiar la direccin de origen y/o destino de un datagramaIP, al pasar por un elemento de red (router, firewall, switch, host, etc). La motivacin para el cambio viene de diversas fuentes: necesidad, diseo y/o seguridad
TIPOS DE NAT
Esttico: Una direccin tiene asociada otra direccin fija que siempre se usar al cambiar. Dinmica: Una direccin no tiene asociacin fija, por tanto serreemplazada por otra elegida dinmicamente.
Masquerading: Tambin conocido como NAPT, se asigna dinmicamente una direccin y puerto para realizar el cambio.
NAT ESTTICO
NAT DINMICO
NAPT O MASQUERADING
Necesidad: Se tiene un nmero insuficiente de direcciones IP pblicas, por lo que se deben asociar un varias direcciones privadas a unas pocas direcciones pblicas. Diseo: Se quiere ocultar la topologa local de una red, enmascarndola a travs de NAT. Seguridad: Mediante el uso de NAT se puede tener un control implcito de que trfico de entrada est permitido.
TIPOS DE TRADUCCIONES
Direcciones de origen (SNAT). Direcciones de destino (DNAT).
IPTABLES SNAT
Direcciones IP estticas
iptables t nat A POSTROUTING o $PUB j SNAT to 200.33.44.5
Direcciones IP dinmicas
iptables t nat A POSTROUTING o $PUB j MASQUERADE
IPTABLES - DNAT
iptables t nat A PREROUTING i $PUB \ p tcp d 200.33.44.5 --dport 80 \ j DNAT --to 10.0.0.5 # HTTP iptables t nat A PREROUTING i $PUB \ p tcp d 200.33.44.5 --dport 25 \ j DNAT --to 10.0.0.8 # SMTP iptables t nat A PREROUTING i $PUB \ p tcp d 200.33.44.5 --dport 53 \ j DNAT --to 10.0.0.2 # DNS
IPFWADM
Se utiliza para mantener, configurar e inspeccionar el firewall y las normas de cuenta en el Kernel de linux. Estas normas pueden dividirse en 4 categorias: Cuenta de paquetes de IP Firewall de entrada de IP Firewall de salida de IP Firewall de envio de IP
SINTAXIS BASICA
ifwadm {rule_category} {policy_action} {policy} {interface} {target}
quiere
hacer
el
con
trfico
CATEGORA DE NORMAS
-A [direction] Para especificar las normas de cuenta de IP. Direction puede ser in, out. -F Para especificar las normas de envo, o normas de las rutas corrientes de Internet. -I Para especificar las normas de filtrado de entrada.
COMANDOS IPFWADM
-a [normativa] Para adjuntar una normativa. -d [normativa] Para borrar una normativa. -f Para limpiar todas las normativas. -h Para conseguir ayuda. -i [normativa] Para insertar una normativa. -I Para enumerar todas las normativas -p Para cambiar las normativas por defecto.
OPCIONES
PARAMETROS DE IPFWADM
-D [direccion] Para especificar la direccin de destino. -P [protocolo] Para especificar el protocolo. -S [direccin] Para especificar la direccin fuente. -W [interfaz] Para especificar la interfaz de red a la que aplica la normativa.
-b Para aplicar la normativa actual al trfico entrante o saliente. -e Para obtener una salida ms extensa. -m Para especificar que los paquetes bajo la normativa estaran enmascarados. -n Para mostrar toda la informacin en formato numrico. -o Para activar el loggin Kernel -r [puerto] Para redirigir los paquetes hacia un socket local. -v para obtener salida ampulosa.
EJEMPLO DE CONFIGURACIN
ipfwadm I a accept V 172.16.0.1 S 0.0.0.0./0 -D 0.0.0.0/0 ipfwadm O a accept V 172.16.0.1 S 0.0.0.0./0 -D 0.0.0.0/0
NOTA:
A medida que define sus normas, ipfwadm las asignar a varios archivos en /proc/net, incluidos los siguientes.
-rw-r--r-- 1 root -rw-r--r-- 1 root -rw-r--r-- 1 root -r--r--r-- 1 root -r--r--r-- 1 root -rw-r--r-- 1 root root root root root root root 0 0 0 0 0 0 Nov 29 09:03 ip_acct Nov 29 09:03 ip_forward Nov 29 09:03 ip_input Nov 29 09:03 ip_masq_app Nov 29 09:03 ip_masquerade Nov 29 09:03 ip_output
IPCHAINS
Mediante la utilidad ipchains, se puede manipular el conjunto de reglas de filtrado, que residen en una tabla del kernel. Las reglas estn agrupadas en cadenas (chains), que son simplemente conjuntos de reglas que estn lgicamente relacionadas. Por defecto, existen tres juegos de reglas:
COMANDOS IPCHAINS
-A[normativa] Para agregar una norma a la cadena. -D [normativa] Para borrar una norma de una cadena. -F Para limpiar todas las normas de una cadena. -R Para reemplazar una norma en una cadena. -I [normativa] Para insertar una norma en una cadena. -L Para listar todas las normas de una cadena. -P Para cambiar las normativas por defecto.
TARGETS IPCHAINS
ACCEPT Esta es la accin por defecto y lo que hace es aceptar el paquete REJECT Esta accin rechaza el paquete (enva un paquete de rechazo al origen)
-n : Esta opcin muestra los nmeros de IP de cada regla y no trata de hacer la traduccin a nombres consultando un DNS.
line-numbers : Muestra los nmeros de lnea de cada regla. -l : Esta opcin genera que cada vez que un paquete coincida con la regla que tiene un -l, se guarde en los archivos del syslog una lnea indicando toda la informacin del paquete que coincidi con la regla y el nmero de regla con la que coincidi. -b : Esta opcin genera que se armen dos reglas en vez de una, la segunda regla se agrega automticamente intercambiando la direccin origen por la destino y viceversa.
EJEMPLO DE CONFIGURACIN
poltica Queremos que la red pueda recibir correo (puerto 25), aunque solamente a travs de la pasarela de correo (relay.mired.com). El correo desde spammers.com debe ser bloqueado siempre. reglas La siguiente tabla resumira la situacin
escritura de reglas Traducidas para ipchains, tendramos algo como esto ipchains -A input -j DENY -p TCP -s spammers.com -d 156.35.0.0/16 ipchains -A input -j ACCEPT -p TCP -s 0/0 -d relay smtp
Una forma aparente de implementar la poltica todos los hosts internos pueden enviar correo al exterior podra ser esta:
Sin embargo, no tenemos control sobre el uso que del puerto 25 puedan hacer hosts externos subvirtiendo nuestra poltica cuidadosamente consignada. Con una notacin mejor esto se solventa:
Se soportan cadenas arbitrarias, incluso cadenas de construccin que tienen nombres completos en lugar de flags (ej. `input ' en lugar de ` -I '). La opcin ` -k ' ha desaparecido: use `! -y '. La opcin ` -b ' realmente inserta/adiciona/borra dos reglas, en lugar de una sola regla 'bidireccional'. La opcin ` -b ' puede pasarse a ` -C ' para hacer dos chequos (uno en cada direccin). La opcin ` -x ' para ` -l ' se ha reemplazado por ` -v '. Mltiples puertos de orgen y destino no son soportados ms. Pudiendo negar un rango de puertos que puede hacer mas que eso. Las interfaces slo pueden ser especificadas por nombre (no por direccin). Los fragmentos son examinados, no se permiten que crucen automticamente. Los protocolos arbitrarios por encima de IP pueden probarse. El viejo comportamiento de los emparejamientos de SYN y ACK (previamente ignorados para paquetes NO-TCP) ha cambiado. la opcin de SYN no es vlida para las reglas que no especificas de TCP. Los contadores son ahora de 64 bits en mquinas de 32 bits, no de 32 bits. Se soportan opciones inversas ahora. Cdigos ICMP son ahora soportados.
Bajo iptables, cada paquete filtrado se procesa nicamente usando las reglas de una cadena solamente, 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, es importante que coloque la regla designada para capturar un paquete particular dentro de la regla que en verdad maneja el paquete.
El objetivo DENY ha sido cambiado a DROP. En ipchains, los paquetes que coincidan una regla en una cadena podran ser dirigidos al objetivo DENY. Este objetivo debe ser cambiado a DROP bajo iptables.
El orden es importante cuando se esten colocando opciones en una regla. Anteriormente, con ipchains, el orden de las opciones de una regla no importaba. El comando iptables usa una sintaxis ms estricta. En comandos iptables, el protocol (ICMP, TCP o UDP) debe ser especificado antes del puerto fuente o destino. 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 cadenas INPUT no son vistas por los paquetes que se mueven hacia las interfaces de salida.
TCP WRAPPERS
Es una herramienta simple que sirve para monitorear y controlar el trfico que llega por la red. Esta herramienta ha sido utilizada exitosamente en la proteccin de sistemas y la deteccin de actividades ilcitas. Fue desarrollada por Wietze Zweitze Venema y esta basada en el concepto de Wrapper; es una herramienta de seguridad libre y muy til. Un Wrapper es un programa para controlar el acceso a un segundo programa. El Wrapper literalmente cubre la identidad del segundo programa, obteniendo con esto un ms alto nivel de seguridad
Debido a que la seguridad lgica esta concentrada en un solo programa, los Wrappers son fciles y simples de validar.
Debido a que el programa protegido se mantiene como una entidad separada, ste puede ser actualizado sin necesidad de cambiar el Wrapper. Debido a que los Wrappers llaman al programa protegido mediante la llamada al sistema estndar exec(), se puede usar un solo Wrapper para controlar el acceso a diversos programas que se necesiten proteger.
tcpd: Es el demonio del TCP-Wrappers. tcpdmatch: Predice como el tcpd manejara una peticin en especfico.
tcpdchk: Verifica las reglas de control de acceso contenidas en los archivos /etc/hosts.allow y /etc/hosts.deny.
safe-finger: Versin de finger para implementar el finger reversivo. try-from: Programa que permite probar si el sistema es capaz de reconocer qu mquina la esta contactando.
COMODINES
Operador Descripcin Si este comodin aparece en la lista de demonios dentro de una regla de control de acceso, entonces coincide con cualquier nombre de demonios de red del sistema. Si aparece en la lista de clientes, entonces coincide con cualquier nombre o direccin de mquinas cliente. Este comodn coincide con cualquier cadena que no contenga el carcter ".", su principal uso se encuentra en la lista de clientes. EXCEPT funciona como un operador que tiene un uso esperado de la siguiente forma: lista_1 EXCEPT lista_2; lo cual coincide todo lo que se encuentre en la lista_1 a menos de que se encuentre en la lista_2.
ALL.
LOCAL.
EXCEPT.
EXPANSIONES
%h. Estos caracteres se expanden al nombre de la mquina cliente (o la direccin si el nombre no est disponible).
%d. Estos caracteres se expanden al nombre del demonio del servicio de red correspondiente a la peticin. %p. Estos caracteres se expanden al identificador del proceso del demonio del servicio de red correspondiente %c. Este caracter se expande a la informacin del cliente ya sea el nombre de la cuenta junto con la direccin o nombre de la mquina cliente, dependiendo de cunta informacin est disponible.
El tcpd revisa que servicio est siendo solicitado y desde donde con base a reglas de control de acceso que se encuentran en los siguientes archivos (normalmente ubicados bajo el directorio /etc):
hosts.allow. Contiene las reglas que especifican las mquinas y servicios que estn autorizados
hosts.deny. Contiene las reglas que especifican las mquinas y servicios que NO estn autorizados
list-hosts
Lista de nombres, direcciones, o patrones de hosts que sern comparados con el nombre o direccin del host cliente que realiza la peticin del servicio. Esta comparacin se realiza de manera secuencial, lnea por lnea empezando por el archivo hosts.allow y terminando por el archivo hosts.deny. La bsqueda se suspende cuando una regla de control de acceso es activada.
comando-shell
ARCHIVO DE CONDIFURACIN
Archivo tcpd.log
Sep 25 20:57:04 server in.fingerd[1698]: connect from 132.111.222.3 Sep 25 20:59:24 server in.telnetd[1706]: refused connect from 132.111.222.3 Sep 25 21:02:38 server in.fingerd[1721]: connect from 132.111.222.8
Sep 25 21:03:50 server in.fingerd[1727]: refused connect from otro.dominio.mx
EJEMPLO 2
/etc/hosts.deny # Niega todos los servicios a todos las mquinas excepto a una en especfico: 132.111.222.8 ALL:ALL EXCEPT 132.111.222.8 Archivo tcpd.log
Sep 22 13:35:44 server in.fingerd[18227]: refused connect from 132.111.222.9
EJEMPLO 3
/etc/hosts.deny # No se permite el acceso a los hosts que van desde la # direccin 132.111.222.0 hasta la 132.111.222.7 ALL:132.111.222.0/255.255.255.248 Archivo tcpd.log
Nov 24 16:04:33 server in.ftpd[28591]: refused connect from 132.111.222.3 Nov 24 16:05:04 server in.ftpd[28595]: connect from 132.111.222.21
EJEMPLO 4
/etc/hosts.allow # Se permite el acceso a todo mundo menos a las mquinas de la red local ALL:ALL EXCEPT LOCAL Archivo tcpd.log
Aug 16 23:59:42 server in.telnetd[13347]: refused connect from hwisk
GRACIAS..
Integrantes: Carlos Zambrano Elena Crdenas Irma Naranjo Dick Vera