Upload
freak6969
View
64
Download
2
Embed Size (px)
Citation preview
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
Red Interna: Bases de Datos, Estaciones,
Servidores de RedRed Pública: Servidores Web, Correo, etc.
Red Externa: Routers, RAS, etc.
INTERNET
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 todos
los paquetes que posean dirección de origen 172.16.X.X para
cambiarla 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
Servidor
Correo
172.20.0.1
255.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
Router
Cabletron
8600
Switch
(Segmento Externo)
172.20.204.63
172.20.204.4
172.16.43.201Eth1 Eth0
Servidor
Web
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 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
# 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 conocidos
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP
iptables -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.205
iptables -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.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl 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-qua
lyty.co*
acl porno url_regex .*http://www.anpland.com*.*http://www.megapage.org/html*
.*http://www.sexylegsplaygirl.com*
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl 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 localhost
http_access deny porno
http_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 ACL Restricció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!!