Curso Básico de Firewall/Proxy
Aug 10, 2015
Curso Básico de Firewall/Proxy
Agenda
Cortafuegos o Firewall
• Conceptos Básicos
• Algunos Firewalls Comerciales
• Firewall Check Point
• Firewall Firebox-1
• El firewall de LINUX: IPTABLES
Proxies
• Conceptos Básicos
• Algunos Proxies Comerciales
• Proxy WinProxy
• Proxy ISA Server
• El Proxy de LINUX: SQUID
• Generando estadísticas del Proxy: Calamaris
Qué es un firewall ?
Un firewall es un dispositivo que filtra el tráfico entre redes, como mínimo dos.
El firewall puede ser un dispositivo físico o un software sobre un sistema operativo.
En general debemos verlo como una caja con dos o mas interfaces de
red en la que se establecen una reglas de filtrado con las que se decide si una conexión determinada puede establecerse o no.
Incluso puede ir más allá y realizar modificaciones sobre las comunicaciones, como el NAT.
Qué es un firewall ? (cont.)
La anterior es una definición genérica
Hoy en dia un firewall es un hardware especifico con un sistema operativo o una IOS que filtra el tráfico TCP/UDP/ICMP/../IP 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.
Esquema de firewall típico entre red local e internet
Esquema típico de firewall para proteger una red local conectada a internet a través de un router. El firewall debe colocarse entre el router con un único cable) y la red local (conectado al switch o al hub de la LAN)
Esquema de firewall entre red local e internet con zona DMZ para servidores expuestos
Con esta arquitectura, permitimos que el servidor sea accesible desde internet de tal forma que si es atacado y se gana acceso a él, la red local sigue protegida por el firewall. Esta estructura de DMZ puede hacerse también con un doble firewall (aunque como se ve se puede usar un único dispositivo con al menos tres interfaces de red)
Esquema de firewall entre red local e internet con zona DMZ para servidores expuestos creado con doble firewall(perímetro)
Hay dos maneras de implementar un firewall:
1) Política por defecto ACEPTAR: en principio todo lo que entra y sale por el firewall se acepta y solo se denegará lo que se diga explícitamente
2) Política por defecto DENEGAR: todo esta denegado, y solo se permitirá pasar por el firewall aquellos que se permita explícitamente
Si la política por defecto es ACEPTAR, se facilita mucho la gestión del firewall, ya que simplemente nos tenemos que preocupar de proteger aquellos puertos o direcciones que sabemos que nos interesa
Si la política por defecto es DENEGAR, a no ser que lo permitamos explícitamente, el firewall se convierte en un auténtico MURO infranqueable. El problema es que es mucho más difícil preparar un firewall así
Agunos Firewalls Existentes en el Mercado
Nombre Empresa
Check Point Express Check Point
ISA Server Microsoft
Firebox-1 Watchguard
Sun Screen Sun
IPTABLES Software Libre
Check Point Express
Aplicación de Reglas en el Check Point
objeto
origen destino
protocolo
acción
Funciones de Proxy en el Check Point
R e d I n te rn a : B a s e s de D a to s , Es ta cio n e s , S e rv ido re s de R e d
R e d Pú blica : S e rv ido re s W e b, C o rre o , e t c .
R e d Ex te rn a : R o u te rs , R A S , e t c .
I NTER NET
Firebox-1 de WatchGuard
Arena de Servicios en el Firebox-1
Servicios
Asignación de Políticas por Servicios en el Firebox-1
Qué es iptables?
Iptables es un sistema de firewall vinculado al kernel de linux que se ha extendido enormemente a partir del kernel 2.4 de este sistema operativo. Al igual que el anterior sistema ipchains, un firewall de iptables no es como un servidor que lo iniciamos o detenemos o que se pueda caer por un error de programación
Iptables esta integrado con el kernel, es parte del sistema operativo
¿Cómo se pone en marcha?
Realmente lo que se hace es aplicar reglas.
Se ejecuta el comando iptables, con el que añadimos, borramos, o creamos reglas.
Un firewall de iptables no es sino un simple script de shell en el que se van ejecutando las reglas de firewall.
Importante
El kernel lo que hace es, dependiendo si el paquete es para la propia maquina o para otra maquina, consultar las reglas de firewall
y decidir que hacer con el paquete según mande el firewall.
A continuación se muestra el camino que seguiría un paquete en el kernel
Elementos que componen IPTABLES
Reglas: establecen las políticas a aplicar sobre los paquetes y datagramas
En cada regla se encuentran los siguientes objetos:
Tablas
Cadenas
Comandos y Parámetros
Ejemplo de Regla:
iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -j SNAT --to-source 172.20.204.63
Tabla
Cadena
Comando
Se lee:
Aplicarle la tabla “nat” durante la fase de POSTROUTING a todoslos paquetes que posean dirección de origen 172.16.X.X paracambiarla a 172.20.204.63
Tabla: Establece el tipo de objeto sobre el que se tomará la acción
mangle: altera campos del paquete
nat: permite NAT´s de dirección de origen y de destino
filter: filtra o restringe en base a los cambos de los paquetes
Cadena: Indica en qué momento se aplicará la regla
PREROUTING, POSTROUTING,INPUT, OUTPUT, FORWARD
Comandos y Parámetros : definen la acción a realizar
Ej: DROP, ACCEPT
Funciones de los Objetos de IPTABLES
Flujo del Paquete dentro del Firewall
Antena
ServidorCorreo
172.20.0.1255.255.0.0
Linux
IPTABLES SQUID
172.16.0.0/16
172.20.0.0/16
Enlaces de Fibra Óptica(Torres Parque Central)
Enlaces Inalámbricos
RouterCabletron
8600
Switch(Segmento Externo)
172.20.204.63172.20.204.4
172.16.43.201Eth1 Eth0
ServidorWeb
Ejemplo Práctico: Una Red LAN conectada a Red Platino
Aplicación de Reglas
# se activa la bandera ip_forward para hacer redireccionamiento (routing) de # tráfico entre interfases
echo 1 > /proc/sys/net/ipv4/ip_forward
# Proxy transparente para http. Para no modificar los browser activandole "proxy".Redirige el #tráfico Web al Web Cache (squid) interno: le cambia el puerto de destino a los paquetes # que ingresan: 80 por 3128 iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128
# Servidor de correo #NAT estático entrante. Se aplica a dirección de destino 172.20.204.4 iptables -t nat -A PREROUTING -d 172.20.204.4 -j DNAT --to-destination 172.16.43.201 #Se le asigna una segunda dirección a la tarjeta de red eth0 para que pueda ser vista desde el exterior ip addr add 172.20.204.4 dev eth0
# Se permiten entradas sólo hacia los puertos relacionados con el correo y salida hacia el servidor ftp 161.196.215.65 de red platino : iptables -t filter -A FORWARD -p tcp -i eth0 -d 172.20.204.4 --dport 25 -j ACCEPT iptables -t filter -A FORWARD -p tcp -i eth0 -d 172.20.204.4 --dport 110 -j ACCEPT iptables -t filter -A FORWARD -p tcp -i eth1 -d 161.196.215.65 --dport 21 -j ACCEPT iptables -t filter -A FORWARD -p tcp -i eth1 -d 161.196.215.65 --dport 20 -j ACCEPT # NAT dinámico saliente: las direcciones de origen 172.16.X.X se convierten a 172.20.204.63 iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -j SNAT --to-source 172.20.204.63
Otro Ejemplo#!/bin/sh## Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT
# Se habilita la comunicación entre las dos tarjetas de red
echo 1 > /proc/sys/net/ipv4/ip_forward
# Se redirige el tráfico al puerto 80 hacia el SQUID
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128
# Se acepta que entre al SQUID el tráfico desde la red 172.20.X.X
iptables -A INPUT -s 172.20.0.0/16 -p tcp --dport 3128 -j ACCEPT
# Otras direcciones IP no pueden pasar a través del firewall
iptables -A FORWARD -s 0.0.0.0/0 -j DROP
# Cerramos el rango de puertos bien conocidosiptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROPiptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP
# NAT dinámico saliente: las direcciones de origen 0.0.0.0/0 se convierten a 172.20.245.205iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -j SNAT --to-source 172.30.245.205
IPTABLES desde el Webmin
Proxies
Las pasarelas trabajan en el nivel más alto del stack del protocolo para suministrar más oportunidades para monitorear el acceso entre redes.
Una pasarela es como un agente que lleva mensajes de clientes internos a servicios externos.
El servicio cambia la dirección IP de los paquetes de clientes para ocultar el cliente interno en relación a Internet, luego actúa como un agente proxy para
el cliente en Internet.
Los servidores proxy ocultan las direcciones internas
Un servidor proxy a nivel de aplicación suministra las propiedades proxy básicas y también análisis extensivo de paquetes.
Cuando llegan paquetes desde fuera a la pasarela son examinados y evaluados para determinar si la política de seguridad permite al paquete
entrar en la red interna.
¿ Como Trabajan ?
¿ Como Trabajan ?
No sólo evalúa el servidor las direcciones IP, sino también mira los datos de los paquetes para evitar que los hackers oculten información
en dichos paquetes.
Una pasarela a nivel de aplicación típica puede proporcionar servicios proxy para aplicaciones y protocolos como Telnet, FTP, HTTP (servicios
Web) y SMTP (correo electrónico).
Debe instalarse un proxy separado para cada servicio a nivel de aplicación (algunos fabricantes consiguen seguridad simplemente no proporcionando proxy para algunos servicios, por lo que se debe ser
cuidadoso en la evaluación).
Algunos Proxies Existentes en el Mercado
Nombre Empresa
Check Point Ckeck Point
ISA Server Microsoft
Firebox-1 Watchguard
PIX Cisco
WinProxy Ositis
WinGate Microsoft SQUID Software Libre
192.168.1.1
WinProxy 2.1: Interfases Interna y Externa
Interna
Externa
WinProxy 2.1: Habilitación de Protocolos
WinProxy 2.1: Administración de Usuarios
WinProxy 2.1: Establecimiento del Caché
ISA Server: Habilitación de Servicio
ISA Server: Configuración de Proxy y Firewall
ISA Server: Filtro de Paquetes
El SQUID es el Proxy de Web o Web-Caché para LINUX/UNIX
Squid es el software para servidor Proxy más popular y extendido entre los sistemas operativos basados sobre UNIX®.
Es muy confiable, robusto y versátil.
Al ser software libre, está disponible el código fuente y está libre del pago de licencias por uso o con restricción a un uso con determinado número de usuarios.
Squid puede hacer Proxy y cache con los protocolos HTTP, FTP, GOPHER y WAIS, Proxy de SSL, cache transparente, aceleración HTTP, cache de consultas DNS y otras más como filtración de contenido y control de acceso por IP y por usuario.
Squid no puede funcionar como proxy para servicios como SMTP, POP3, TELNET, SSH, etc
SQUID: Configuración
Squid utiliza el fichero de configuración localizado en /etc/squid/squid.conf, y se podrá trabajar sobre este utilizando un editor de texto
Parámetros recomendados:
http_port cache_mem cache_dir Al menos una Lista de Control de Acceso Al menos una Regla de Control de Acceso httpd_accel_host httpd_accel_port httpd_accel_with_proxy
Configuración del SQUID
proxy:/etc# more squid.conf
# IP address with port. ## The default port number is 3128.
Tamaños máximos y mínimos de los objetos a ser almacenados temporalmente:
# TAG: maximum_object_size (bytes)# Objects larger than this size will NOT be saved on disk. The# value is specified in kilobytes, and the default is 4MB#Default: maximum_object_size 4096 KB
# TAG: minimum_object_size (bytes)# Objects smaller than this size will NOT be saved on disk. The# value is specified in kilobytes, and the default is 0 KB, which# means there is no minimum.##Default:# minimum_object_size 0 KB
Configuración del SQUID (cont.)
En el siguiente archivo se guardan las solicitudes realizadas por los clientes e información sobre su permiso o rechazo.
# TAG: cache_access_log# Logs the client request activity. Contains an entry for# every HTTP and ICP queries received.##Default: cache_access_log /var/log/squid/access.log
La auditoria de la actividad del SQUID queda registrada en el archivo “cache.log”, cuya ruta se configura a continuación.# TAG: cache_log# Cache logging file. This is where general information about# your cache's behavior goes. You can increase the amount of data# logged to this file with the "debug_options" tag below.##Default: cache_log /var/log/squid/cache.log
Configuración del SQUID (cont.)
La etiqueta acl permite la definición de las listas de acceso (Access list)
acl aclname acltype
El aclname es el nombre que el usuario le desea dar a la lista.
El acltype se refiere al tipo de objeto que se le aplicará la lista de acceso. Entre los tipos más comunes están:
· src: dirección-IP/máscara de origen· acl: dirección-IP/máscara de destino· srcdomain: dominio de origen· dstdomain: dominio destino· srcdom_regex: nombre de la máquina cliente· dstdom_regex: nombre del servidor· time: establece días y horas dentro de la semana· url_regex: indica un URL particular· port: se aplica a los puertos· myport: se aplica al puerto propio· proto: establece el protocolo como HTTP, FTP, etc.· method: indica el método dentro de un servicio, como: GET, POST, etc
Configuración del SQUID (cont.)
#Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0acl manager proto cache_objectacl localhost src 127.0.0.1/255.255.255.255acl porno url_regex .*http://www.sexplexx.com* .*http://www.adulteras.com*acl porno url_regex .*http://www.sexyven.net* .*http://a-rated-sex.com* .*http://www.all-sex.com*acl porno url_regex .*http://ranking.sexranks.com* .*http://www.sex-movies-qualyty.co*acl porno url_regex .*http://www.anpland.com*.*http://www.megapage.org/html* .*http://www.sexylegsplaygirl.com*acl SSL_ports port 443 563acl Safe_ports port 80 # httpacl Safe_ports port 21 # ftpacl Safe_ports port 443 563 # https, snewsacl Safe_ports port 70 # gopheracl Safe_ports port 210 # waisacl Safe_ports port 1025-65535 # unregistered portsacl Safe_ports port 280 # http-mgmtacl Safe_ports port 901 # SWAT
La etiqueta http_access permite o niega el acceso basado en las listas de acceso anteriores. El formato es:
http_access allow|deny [!]aclname ...
donde “ !aclname “ significa “no pertenece” a la lista de acceso. Si no aparecen líneas http_access, la opción por defecto es negar la solicitud. A continuación se muestran la configuración para restringir o permitir el tráfico tipo http:
http_access allow localhosthttp_access deny pornohttp_access allow all
Administración de SQUID desde Webmin
SQUID
Parámetros configurables: el más importante es Control de Acceso
Listas de Acceso y Restricciones
Nombre del ACLRestricción
Calamaris
Es un software generador de reportes que se utiliza para leer, de forma cómoda, los archivos de auditoría de SQUID, Oops y otros Proxies
Lee los archivos access.log, cache.log, y otros. Luego los muestra en formato html u otro
Secuencia de comandos para generar una página Web con estadísticas:
#cat /var/squid/logs/access.log.0 | calamaris -F html -u > /web_server_root/calamaris/index.html
Previamente, para generar los logs rotativos debe usarse:
# squid -k rotate
Listado de Estadísticas de Calamaris
Dominios de 2° Nivel más Visitados
Tips• Requisitos del PC:
Pentium III a mayor
Dos (2) tarjetas de red, de fabricantes diferentes
RAM de 256 MB o más
Disco Duro de 40 GB o más
• Poseer acceso de servicio alternativo para pruebas de conexiones entrantes
• Revisar diariamente la actividad de los servicios
Concluyó la charla:Firewalls y Proxis
¡¡Muchas gracias por su atención!!