====== Shorewall: configurando un firewall con IPTables/Netfilter ======
//Por Félix Molinuevo, [[http://fmsistemas.com/|FMSI Sistemas de Informática]]//
===== Introducción =====
Shorewall es un conjunto de scripts y archivos de configuración, que permiten configurar IPTables/Netfilter aprovechando toda la versatilidad de estas herramientas de firewalling.
Las indicaciones que aquí se muestran deberán ser cambiadas para el sistema específico donde se lo esté instalando.
===== Pasos para configurar un firewall básico =====
-Instalar firewall, en Debian:
aptitude install shorewall
-Editar /etc/default/shorewall poniendo startup en 1
-Los archivos de configuración de Shorewall se encuentran en /etc/shorewall
-Los scripts y otros archivos se encuentran en /usr/share/shorewall
-Organizar la red por zonas, para ello editar /etc/shorewall/zones:
fw firewall
net ipv4
dmz ipv4
loc ipv4
-Asociar las zonas a las interfaces, para ello editar /etc/shorewall/interfaces:
net eth0 detect dhcp,routefilter,tcpflags
dmz eth1 detect dhcp
loc eth2 detect dhcp
-Crear políticas por defecto, editando /etc/shorewall/policy:
net all DROP
dmz all REJECT
loc all REJECT
fw all ACCEPT
all all REJECT
-Crear las reglas, editando /etc/shorewall/rules:
ACCEPT loc net tcp 80,443
ACCEPT loc fw udp 53
ACCEPT all dmz tcp 80
-Configurar PAT/NAT, editando /etc/shorewall/masq:
eth0 eth1
eth0 eth2
-Activar forwarding, editando /etc/shorewall/shorewall.conf:
IP_FORWARDING=On
- Si se utiliza PPPoE, también se debe activar CLAMPMSS:
CLAMPMSS=Yes
-Chequear la configuración:
shorewall check
-Si todo está bien, iniciar el firewall
===== Algunas configuraciones avanzadas =====
- Para permitir solamente el acceso a internet de los hosts internos seleccionados, se deben configurar los archivos policy y rules de la siguiente manera:
En el archivo /etc/shorewall/policy no deben existir políticas de acceso completo como:
loc all ACCEPT
loc net ACCEPT
En el archivo /etc/shorewall/rules:
ACCEPT loc:192.168.0.123 net tcp 80,8080
- DNAT para conectarse desde internet a un host interno, en el archivo /etc/shorewall/rules:
DNAT net:190.155.200.123 loc:192.168.0.123:5900 tcp 5900
===== Facebook: cómo bloquear todo el rango de direcciones IP =====
En un archivo llamado "start" dentro de /etc/shorewall, poner la siguiente línea de Bash script:
/usr/bin/whois -h whois.radb.net '!gAS32934' | head -n -1 | tail -n -1 | /usr/bin/xargs --max-args=1 | \
/usr/bin/xargs -I {} --max-args=1 /sbin/iptables -t mangle -I POSTROUTING -d {} -j DROP
===== Bibliografía =====
*Debian Wiki: [[http://wiki.debian.org/HowTo/shorewall|http://wiki.debian.org/HowTo/shorewall]]