Agustín Barto
Contenidos
- INTRODUCCION
- Caracteristicas de Shorewall
- Alternativas
- ZONAS
- Arquitectura de zonas
- Zona "fw"
- ARCHIVOS DE CONFIGURACION
- shorewall.conf
- zones
- interfaces
- policy
- rules
- masq
- modules
- Otros
- CASOS
- Firewall standalone.
- Firewall red tipica dos zonas/dos interfaces.
- Multiples zonas sobre una interfaz.
- Proxy transparente con Squid.
- Reglas para P2P.
- Reglas para DNAT.
Audio de la charla (formato OGG)
1. INTRODUCCION
Caracteristicas de Shorewall
"The Shoreline Firewall, more commonly known as "Shorewall", is
high-level tool for configuring Netfilter. You describe your
firewall/gateway requirements using entries in a set of configuration
files. Shorewall reads those configuration files and with the help of
the iptables utility, Shorewall configures Netfilter to match your
requirements. Shorewall can be used on a dedicated firewall system, a
multi-function gateway/router/server or on a standalone GNU/Linux
system. Shorewall does not use Netfilter's ipchains compatibility mode
and can thus take advantage of Netfilter's connection state tracking
capabilities."
"Shorewall is not a daemon. Once Shorewall has configured Netfilter,
it's job is complete and there is no "Shorewall process" left running in
your system. The /sbin/shorewall program can be used at any time to
monitor the Netfilter firewall."
Resumen de Caracteristicas:
- Sofisticado.
- Flexible (probablemente la herramienta de configuracion de
Netfilter mas flexible actualmente).
- Extensamente documentado.
- Incluido en casi todas las distribuciones principales.
- En constante desarrollo.
Alternativas
A pesar de ser tan potente y flexible, Shorewall puede llegar a ser una
herramienta demasiado complicada para el uso cotidiano del usuario
promedio. A continuacion se citan algunas alternativas y los puntos
fuertes de cada una de ellas:
- Firestarter - http://www.fs-security.com
- Herramienta grafica de configuracion y MONITOREO de Netfilter. Es
muy flexible y amigable. Permite definir un firewall bastante
sofisticado de una manera muy simple.
- Firewall Builder - http://www.fwbuilder.org
- Herramienta grafica de configuracion de Netfilter. Permite describir
firewalls complicados a la vez que permite al usuario promedio una
seguridad aceptable con muy pocos conocimientos de Netfilter. No es
tan flexible como Shorewall y requiere X-Window (y Qt?).
- Arno's IPTABLES Firewall Script - http://rocky.eld.leidenuniv.nl
- Script BASH de configuracion de Netfilter. Solo es necesario
configurar unas pocas variables para obtener un firewall aceptable.
Orientado a topologias de red tradicionales. Posee deteccion de
escaneo de puertos.
- Webmin - http://www.webmin.com
- La herramienta de administracion de computadoras con sistemas
operativos *NIX Webmin posee un modulo de administracion de Netfilter
bastante completa. Es conveniente para administracion remota del
firewall. Tambien posee un modulo de administracion de Shorewall.
- FireHOL - http://firehol.sourceforge.net
- Herramienta similar de Shorewall. El lenguaje de configuracion es
un tanto mas abstracto que el de Shorewall, pero parece ser igual de
flexible.
- Y miles mas... - http://freshmeat.net
2. ZONAS
Arquitectura de zonas
A diferencia de casi todas las otras herramientas de configuracion de
Netfilter disponibles, Shorewall trabaja alrededor del concepto de
ZONAS. Shorewall no asume ningun papel especifico a cada zona (a
diferencia de otras herramientas que explicitamente definen zonas
Internet, DMZ, etc.), caracteristica sobre la cual recae la mayor parte
de su flexibilidad.
Una zona es un concepto abstracto que identifica el origen o destino de
un paquete. Las mismas se utilizan para la definicion de reglas de
aceptacion o rechazo de paquetes en funcion de su procedencia o destino
(junto con otras caracteristicas del mismo). Las zonas pueden o no estar
asociadas a interfaces de red, subredes de IP o conjuntos de IPs
(mediante el uso del patch ipset).
Zona "fw"
La unica zona explicitamente asociada a un equipo/IP es la zona "fw"
(Shorewall distingue mayusculas de minusculas), la cual "contiene" al
firewall que se esta configurando. Es importante al momento de
configurar Shorewall asegurarse que se han configurado vias de acceso
suficientes a la zona "fw" desde el lugar de donde se este trabajando,
debido a que si esto no se hace, se podria perder completamente el
acceso remoto al equipo.
3. ARCHIVOS DE CONFIGURACION
shorewall.conf
Archivo de configuracion principal de Shorewall. Algunas de las
variables importantes a configurar en este archivo son:
- STARTUP_ENABLED: Si no es seteada a "Yes" o "yes" el firewall no se configurara. (Medida de seguridad).
- ADMINISABSENTMINDED: Si es seteada a "No" o "no" solo el trafico
desde y hacia las direcciones listadas en /etc/shorewall/routestopped
seran aceptadas cuando Shorewall es detenido. Cuando es setada a "Yes"
o "yes", ademas de acetar dichas conexiones, todas las conexiones que
estaban activas cuando Shorewall fue detenido continuaran funcionando
y todas al conexiones AL firewall son aceptadas.
- LOGRATE and LOGBURST: Estos parametros indican la rafaga y la tasa
de paquetes que son registrados. Esto es util cuando se generan muchos
paquetes invalidos en la red lo que podria generar muchisimo consumo
de procesador en el firewall.
- IP_FORWARDING: Este parametro determina si Shorewall debe
habilitar o deshabilitar el forwarding de paquetes de IPV4.
zones
En este archivo se definen las zonas del firewall (excepto por la zona
"fw" que siempre es definida). Hasta Shorewall 2.4.x el formato de cada
definicion es:
Zona Descripcion Comentarios
En versiones posteriores se dejara de lado el uso de "Comentarios" de la
zona. Este es un ejemplo de este tipo de archivos:
#ZONE DISPLAY COMMENTS
net Internet The big bad Internet
loc Local Local Network
dmz DMZ Demilitarized zone.
En este archivo se definen tres zonas. El nombre y la interpretacion de
cada zona son a eleccion del configurador.
interfaces
En este archivo se definen las interfaces a ser tomadas en cuenta por el
firewall y su posible asociacion con alguna zona (puede no ser
necesario). Ademas se identifican ciertas propiedades respecto de la
interpretacion de los paquetes que ingresan o salen por esa interfaz. El
formato de cada definicion es:
Zona Interfaz Broadcast Opciones
Ejemplo:
net ppp+ - norfc1918,nobogons,routefilter,logmartians,blacklist,tcpflags,nosmurfs
loc eth0 detect dhcp
loc tun+ -
policy
En este archivo se describen la politicas por defecto para paquetes que
viajan entre una zona y otra. El formato de las definiciones es:
Origen Destino Politica Nivel Log Tasa
Las posibles politicas son:
- ACCEPT: Se acepta la conexion.
- DROP: Se ignora la conexion.
- REJECT: Se rechaza explicitamente la conexion.
- QUEUE: Enviar el pedido a una aplicacion con el target QUEUE.
- CONTINUE: Dejar que el pedido de conexion continue para se procesador por otras reglas.
- NONE: Se asume que esta conexion no puede darse y no se generan reglas al respecto.
Ejemplo:
#SOURCE DEST POLICY LOG
# LEVEL
loc net ACCEPT
net all DROP info
#
# THE FOLLOWING POLICY MUST BE LAST
#
all all REJECT info
rules
Quizas el archivo de configuracion mas importante. Aqui se definen las
reglas que permiten o denegan el acceso a servicios y puertos desde y
hacia zonas o el firewall. Tambien se definen las reglas de DNAT y
registro de ciertos paquetes.
El formato para la definicion de reglas es:
Accion Origen Destino Protocolo Puerto Destino Puerto Origen Destino Original Tasa/Limite
Las acciones pueden ser: ACCEPT, DROP, REJECT, DNAT, DNAT-, REDIRECT,
CONTINUE, LOG, QUEUE or una accion definida por el usuario.
Ejemplos:
DNAT net loc:192.168.0.2 tcp 6881:6889,4661,4662,4711
DNAT net loc:192.168.0.2 udp 6881:6889,4665,4672
AllowSMTP fw all
AllowSSH loc fw
AllowSSH:info net:170.210.239.0/24 fw
ACCEPT all fw tcp 3128
ACCEPT loc fw tcp 10000
masq
Este archivo se utiliza para definir masquerading y SNAT. Es esencial
para las redes no enunciables que desean conectarse a la Internet a
traves de un firewall. El formato de las definiciones es:
Interfaz Subred Direccion Protocolo Puertos IPSEC
Ejemplos:
eth0 eth1
ppp+ 192.168.0.0/24
tun+ !192.168.0.0/24
modules
En este archivo se incluyen los modulos del kernel que se desean cargar
(o descargar) cuando se inicial el firewall.
Ejemplo:
loadmodule ip_tables
loadmodule iptable_filter
loadmodule ip_conntrack
#loadmodule ip_conntrack_ftp
loadmodule ip_conntrack_ftp ports=21,2370
loadmodule ip_conntrack_tftp
loadmodule ip_conntrack_irc
loadmodule iptable_nat
#loadmodule ip_nat_ftp
loadmodule ip_nat_ftp ports=21,2370
loadmodule ip_nat_tftp
loadmodule ip_nat_irc
Otros
Otros archivos de configuracion (lista incompleta) utiles son:
- hosts: Se utiliza para asociar grupos de hosts a una zona. Es
esencial para definir multiples zonas sobre una interfaz.
- tunnels: Se utiliza para configurar automaticamente reglas de
Netfilter para distintos tipos de tuneles (IPSEC, OpenVPN, etc.)
- tcrules: Se utiliza para cargar reglas de tc (herramienta para la
configuracion de los servicios de traffic shaping del kernel) desde el
firewall.
- Muchos mas... (ver /etc/shorewall)
4. CASOS
Firewall standalone.
Un firewall conectado a Internet mediante una interfaz ppp. Se
considera que solo hay una zona (Net) sobre la cual viven los posibles
perpetradores.
------------------------------------------------------------
/etc/shorewall/shorewall.conf
----------
.
.
.
STARTUP_ENABLED=Yes
IP_FORWARDING=Off
.
.
.
#LAST LINE -- DO NOT REMOVE
------------------------------------------------------------
------------------------------------------------------------
/etc/shorewall/zones
----------
net Net Internet
#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE
------------------------------------------------------------
------------------------------------------------------------
/etc/shorewall/interfaces
----------
net ppp+ - norfc1918,nobogons,routefilter,logmartians,blacklist,tcpflags,nosmurfs
#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE
------------------------------------------------------------
------------------------------------------------------------
/etc/shorewall/policy
----------
fw all ACCEPT
net all DROP info
all all REJECT info
#LAST LINE -- DO NOT REMOVE
------------------------------------------------------------
------------------------------------------------------------
/etc/shorewall/rules
----------
AllowWeb net fw # Servidor http,https
AllowSSH net fw # Servidor ssh
AllowPing net:172.16.0.0/16 fw
ACCEPT net:172.16.0.0/16 fw tcp 10000
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
------------------------------------------------------------
Firewall red tipica dos zonas/dos interfaces.
Este caso se corresponde al de cualquier red hogareña o cyber. Se tiene
una red interna que se desea conectar a (y proteger de) Internet. En
este caso asumimos que la red interna esta conectada a una interfaz
ethernet eth0 y a Internet por una interfaz ppp. Asumimos ademas que se
desea hacer masquerading de la red interna y que el server posee un
demonio DHCP para la auto-configuracion de los hosts en la red local.
------------------------------------------------------------
/etc/shorewall/shorewall.conf
----------
.
.
.
STARTUP_ENABLED=Yes
.
.
.
#LAST LINE -- DO NOT REMOVE
------------------------------------------------------------
------------------------------------------------------------
/etc/shorewall/zones
----------
loc Local Local networks
net Net Internet
#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE
------------------------------------------------------------
------------------------------------------------------------
/etc/shorewall/interfaces
----------
net ppp+ - norfc1918,nobogons,routefilter,logmartians,blacklist,tcpflags,nosmurfs
loc eth0 detect dhcp
#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE
------------------------------------------------------------
------------------------------------------------------------
/etc/shorewall/policy
----------
loc net ACCEPT
#loc fw ACCEPT
net all DROP info
all all REJECT info
#LAST LINE -- DO NOT REMOVE
------------------------------------------------------------
------------------------------------------------------------
/etc/shorewall/masq
----------
ppp+ eth0
#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
------------------------------------------------------------
------------------------------------------------------------
/etc/shorewall/rules
----------
AllowWeb fw all
AllowWeb all fw # Servidor http,https (para ambas zonas)
AllowSSH fw all
AllowSSH loc fw # Servidor ssh para red interna
ACCEPT:info net fw tcp 22000 # Servidor ssh para Internet (Informando sobre conexiones)
AllowSMB loc fw # Servidor samba
AllowSMB fw loc # Servidor samba
ACCEPT loc fw tcp 3128
ACCEPT fw all tcp 6667:6669
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
------------------------------------------------------------
Multiples zonas sobre una interfaz.
En este ejemplo suponemos una configuracion de hardware de red identica
a la del ejemplo anterior, o sea, un firewall/router con dos interfaces,
una ethernet eth0 conectada a la red interna que deseamos conectar a
Internet, y una interfaz ppp que conecta el host a dicha red. La
diferencia radica en que ahora deseamos discriminar entre dos "clases"
de hosts que pueden conectarse desde la red local: Uno con acceso a
todos los servicios de red disponibles, y otro que solo puede utilizar
http hacia la Internet y smtp hacia el firewall donde esta instalado un
MTA. Tambien deseamos que los hosts de la red interna sean configurados
via dhcp.
------------------------------------------------------------
/etc/shorewall/shorewall.conf
----------
.
.
.
STARTUP_ENABLED=Yes
.
.
.
#LAST LINE -- DO NOT REMOVE
------------------------------------------------------------
------------------------------------------------------------
/etc/shorewall/zones
----------
loc2 Local Local networks
loc1 Local Local networks
net Net Internet
#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE
------------------------------------------------------------
------------------------------------------------------------
/etc/shorewall/interfaces
----------
net ppp+ - norfc1918,nobogons,routefilter,logmartians,blacklist,tcpflags,nosmurfs
- eth0 detect dhcp
#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE
------------------------------------------------------------
------------------------------------------------------------
/etc/shorewall/host (primera opcion)
----------
loc1 eth0:192.168.0.0/25
loc2 eth0:192.168.0.128/25
net eth0:0.0.0.0/0
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS LINE -- DO NOT REMOVE
------------------------------------------------------------
------------------------------------------------------------
/etc/shorewall/host (segunda opcion)
----------
loc2 eth0:192.168.0.100/32,192.168.0.101/32,192.168.0.102/32
loc1 eth0:192.168.0.0/24
net eth0:0.0.0.0/0
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS LINE -- DO NOT REMOVE
------------------------------------------------------------
------------------------------------------------------------
/etc/shorewall/policy
----------
loc1 net ACCEPT
loc2 net REJECT
loc1 loc2 ACCEPT
loc2 loc1 ACCEPT
net all DROP info
all all REJECT info
#LAST LINE -- DO NOT REMOVE
------------------------------------------------------------
------------------------------------------------------------
/etc/shorewall/rules
----------
AllowWeb loc2 net
AllowSMTP loc2 fw
AllowWeb fw all
AllowWeb loc1 fw # Servidor http,https (para ambas zonas)
AllowSSH fw all
AllowSSH loc1 fw # Servidor ssh para red interna
ACCEPT:info net fw tcp 22000 # Servidor ssh para Internet (Informando sobre conexiones)
AllowSMB loc1 fw # Servidor samba
AllowSMB fw loc1 # Servidor samba
AllowSMB fw loc2 # Servidor samba
ACCEPT loc fw tcp 3128
ACCEPT fw all tcp 6667:6669
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
------------------------------------------------------------
Proxy transparente con Squid.
------------------------------------------------------------
/etc/squid/squid.conf
----------
.
.
.
ACL local_network src 192.168.0.0/24
.
.
http_access allow local_network
.
.
.
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
------------------------------------------------------------
------------------------------------------------------------
/etc/shorewall/rules
----------
REDIRECT loc 3128 tcp www
ACCEPT fw net tcp www
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
------------------------------------------------------------
Reglas para P2P.
------------------------------------------------------------
/etc/shorewall/rules (p2p sobre el firewall)
----------
ACCEPT net fw tcp 6881:6889,4661,4662,36711
ACCEPT net fw udp 6881:6889,4665,4672
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
------------------------------------------------------------
------------------------------------------------------------
/etc/shorewall/rules (p2p sobre una maquina interna)
----------
DNAT net loc:192.168.0.100 tcp 6881:6889,4661,4662,4711
DNAT net loc:192.168.0.100 udp 6881:6889,4665,4672
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
------------------------------------------------------------
Reglas para DNAT.
------------------------------------------------------------
/etc/shorewall/rules
----------
DNAT:info net loc:192.168.0.2 tcp www
DNAT:info net loc:192.168.0.2 tcp 443
DROP loc:!192.168.0.2 all tcp 25
DNAT:info net loc:192.168.0.2 tcp 25
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
------------------------------------------------------------
Volver a la página principal