Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
servidores:general:shorewall_configuracion [2009/01/23 18:50] fmolinuevo |
servidores:general:shorewall_configuracion [2013/01/29 13:52] fmolinuevo [Algunas configuraciones avanzadas] |
||
---|---|---|---|
Línea 1: | Línea 1: | ||
+ | ====== 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: <code> | ||
+ | aptitude install shorewall | ||
+ | </code> | ||
+ | -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: <code> | ||
+ | fw firewall | ||
+ | net ipv4 | ||
+ | dmz ipv4 | ||
+ | loc ipv4 | ||
+ | </code> | ||
+ | -Asociar las zonas a las interfaces, para ello editar /etc/shorewall/interfaces: <code> | ||
+ | net eth0 detect dhcp,routefilter,tcpflags | ||
+ | dmz eth1 detect dhcp | ||
+ | loc eth2 detect dhcp | ||
+ | </code> | ||
+ | -Crear políticas por defecto, editando /etc/shorewall/policy: <code> | ||
+ | net all DROP | ||
+ | dmz all REJECT | ||
+ | loc all REJECT | ||
+ | fw all ACCEPT | ||
+ | all all REJECT | ||
+ | </code> | ||
+ | -Crear las reglas, editando /etc/shorewall/rules: <code> | ||
+ | ACCEPT loc net tcp 80,443 | ||
+ | ACCEPT loc fw udp 53 | ||
+ | ACCEPT all dmz tcp 80 | ||
+ | </code> | ||
+ | -Configurar PAT/NAT, editando /etc/shorewall/masq: <code> | ||
+ | eth0 eth1 | ||
+ | eth0 eth2 | ||
+ | </code> | ||
+ | -Activar forwarding, editando /etc/shorewall/shorewall.conf: <code> | ||
+ | IP_FORWARDING=On | ||
+ | </code> | ||
+ | - Si se utiliza PPPoE, también se debe activar CLAMPMSS: <code> | ||
+ | CLAMPMSS=Yes | ||
+ | </code> | ||
+ | -Chequear la configuración: <code> | ||
+ | shorewall check | ||
+ | </code> | ||
+ | -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: <code> | ||
+ | loc all ACCEPT | ||
+ | loc net ACCEPT | ||
+ | </code> | ||
+ | |||
+ | En el archivo /etc/shorewall/rules: <code> | ||
+ | ACCEPT loc:192.168.0.123 net tcp 80,8080 | ||
+ | </code> | ||
+ | |||
+ | - DNAT para conectarse desde internet a un host interno, en el archivo /etc/shorewall/rules: <code> | ||
+ | DNAT net:190.155.200.123 loc:192.168.0.123:5900 tcp 5900 | ||
+ | </code> | ||
+ | |||
+ | ===== 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]] |