Configuración Básica de Shorewall01

16
Configuración básica de Shorewall. Autor: Joel Barrios Dueñas Correo electrónico: darkshram en gmail punto com Sitio de Red: http://www.alcancelibre.org/ Jabber ID: [email protected] Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1 © 1999-2013 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano . La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos. Introducción. Acerca de Shorewall. Shorewall (Shoreline Firewall) es una robusta y extensible herramienta de alto nivel para la configuración de muros cortafuego. Shorewall sólo necesita se definan algunos datos en algunos archivos de texto simple y éste creará las reglas de cortafuegos correspondientes a través de iptables. Shorewall puede permitir utilizar un sistema como muro cortafuegos dedicado, sistema de múltiples funciones como puerta de enlace, dispositivo de encaminamiento y servidor. URL: http://www.shorewall.net/ Acerca de iptables y Netfilter. Netfilter es un conjunto de ganchos (Hooks, es decir, técnicas de programación que se emplean para crear cadenas de procedimientos como gestor) dentro del núcleo de GNU/Linux y que son utilizados para interceptar y manipular paquetes de red. El componente mejor conocido es el cortafuegos, el cual realiza procesos de filtración de paquetes. Los ganchos son también utilizados por un componente que se encarga del NAT

description

04

Transcript of Configuración Básica de Shorewall01

Page 1: Configuración Básica de Shorewall01

Configuración básica de Shorewall.Autor: Joel Barrios DueñasCorreo electrónico: darkshram en gmail punto comSitio de Red: http://www.alcancelibre.org/Jabber ID: [email protected]

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2013 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

Acerca de Shorewall.

Shorewall (Shoreline Firewall) es una robusta y extensible herramienta de alto nivel para la configuración de muros cortafuego. Shorewall sólo necesita se definan algunos datos en algunos archivos de texto simple y éste creará las reglas de cortafuegos correspondientes a través de iptables. Shorewall puede permitir utilizar un sistema como muro cortafuegos dedicado, sistema de múltiples funciones como puerta de enlace, dispositivo de encaminamiento y servidor.

URL: http://www.shorewall.net/

Acerca de iptables y Netfilter.

Netfilter es un conjunto de ganchos (Hooks, es decir, técnicas de programación que se emplean para crear cadenas de procedimientos como gestor) dentro del núcleo de GNU/Linux y que son utilizados para interceptar y manipular paquetes de red. El componente mejor conocido es el cortafuegos, el cual realiza procesos de filtración de paquetes. Los ganchos son también utilizados por un componente que se encarga del NAT (acrónimo de Network Address Translation o Traducción de dirección de red). Estos componentes son cargados como módulos del núcleo.

Iptables es el nombre de la herramienta de espacio de usuario (User Space, es decir, área de memoria donde todas las aplicaciones, en modo de usuario, pueden ser intercambiadas hacia memoria virtual cuando sea necesario) a través de la cual los administradores crean reglas para cada filtrado de paquetes y módulos de NAT. Iptables es la herramienta estándar de todas las distribuciones modernas de GNU/Linux.

URL: http://www.netfilter.org/

Page 2: Configuración Básica de Shorewall01

Acerca de iproute.

Iproute es una colección de herramientas (ifcfg, ip, rtmon y tc) para GNU/Linux que se utilizan para controlar el establecimiento de la red TCP/IP, así como también el control de tráfico. Aunque ifconfig sigue siendo la herramienta de configuración de red estándar en las distribuciones de GNU/Linux, iproute tiende a sustituirlo al proveer soporte para la mayoría de las tecnologías modernas de red (incluyendo IP versiones 4 y 6), permitiendo a los administradores configurar los parámetros de red y el control de tráfico.

URL: http://linux-net.osdl.org/index.php/Iproute2

Conceptos requeridos.

¿Qué es una zona desmilitarizada?

Una zona desmilitarizada (DMZ), es parte de una red que no está dentro de la red interna (LAN) pero tampoco está directamente conectada hacia Internet. Podría resumirse como una red que se localiza entre dos redes. En términos más técnicos se refiere a un área dentro del cortafuegos donde los sistemas que la componen tienen acceso hacia las redes interna y externa, sin embargo no tienen acceso completo hacia la red interna y tampoco acceso completamente abierto hacia la red externa. Los cortafuegos y dispositivos de encaminamiento (routers) protegen esta zona con funcionalidades de filtrado de tráfico de red.

Diagrama de una Zona Desmilitarizada.Imagen de dominio público tomada de Wikipedia y modificada con el Gimp.

¿Que es una Red Privada?

Page 3: Configuración Básica de Shorewall01

Una Red Privada es aquella que utiliza direcciones IP establecidas en el RFC 1918. Es decir, direcciones IP reservadas para Redes Privadas dentro de los rangos 10.0.0.0/8 (desde 10.0.0.0 hasta 10.255.255.255), 172.16.0.0/12 (desde 172.16.0.0 hasta 172.31.255.255) y 192.168.0.0/16 (desde 192.168.0.0 hasta 192.168.255.255).

¿Qué es un NAT?

NAT (acrónimo de Network Address Translation o Traducción de dirección de red), también conocido como enmascaramiento de IP, es una técnica mediante la cual las direcciones de origen y/o destino de paquetes IP son reescritas mientras pasan a través de un dispositivo de encaminamiento (router) o muro cortafuegos. Se utiliza para permitir a múltiples anfitriones en una Red Privada con direcciones IP para Red Privada para acceder hacia una Internet utilizando una sola dirección IP pública.

¿Qué es un DNAT?

DNAT, (acrónimo de Destination Network Address Translation o traducción de dirección de red de destino) es una técnica mediante la cual se hace público un servicio desde una Red Privada. Es decir permite redirigir puertos hacia direcciones IP de Red Privada. El uso de esta técnica puede permitir a un usuario en Internet alcanzar un puerto en una Red Privada (dentro de una LAN) desde el exterior a través de un encaminador (router) o muro cortafuegos donde ha sido habilitado un NAT.

Equipamiento lógico necesario. iptables: Controla el código del núcleo de GNU/Linux para filtración de

paquetes de red. iproute: Conjunto de utilidades diseñadas para utilizar las capacidades

avanzadas de gestión de redes del núcleo de GNU/Linux.. shorewall: Shoreline Firewall.

Shorewall puede descargarse en formato RPM desde http://www.shorewall.net/.

Si dispone de un servidor con CentOS o Red Hat™ Enterprise Linux puede utilizar el el almacén YUM de Alcance Libre ejecutando lo siguiente:

cd /etc/yum.repos.d/wget -N http://www.alcancelibre.org/al/server/AL-Server.repocd

Ejecute lo siguiente para instalar el paquete shorewall:

yum -y install shorewall

Procedimientos.

Page 4: Configuración Básica de Shorewall01

Este documento asume que se han estudiado y aplicado los temas descritos en los documentos titulados «Ajustes posteriores a la instalación de CentOS 6» y «Configuración de red en GNU/Linux».

Shorewall y SELinux.

Los contextos de SELinux para /sbin/iptables-multi-1.4.7 y /sbin/ip6tables-multi-1.4.7 cambiaron del tipo bin_t al tipo iptables_exec_t. Establezca estos nuevos contextos ejecutando lo siguiente:

restorecon -Rv /sbin

SELinux impedirá ejecutar algunos componentes de Shorewall instalados en /usr e impedirá acceder hacia /sys para obtener información respecto de los dispositivos de red presentes en el sistema. El siguiente procedimiento crea una política que permitirá a Shorewall operar normalmente.

Crear el directorio /usr/share/selinux/packages/shorewall:

mkdir /usr/share/selinux/packages/shorewall

Cambiarse al directorio /usr/share/selinux/packages/shorewall:

cd /usr/share/selinux/packages/shorewall

Descargar desde Alcance Libre el archivo http://www.alcancelibre.org/linux/secrets/shorewall.te:

wget http://www.alcancelibre.org/linux/secrets/shorewall.te

Editar el archivo shorewall.te:

vi shorewall.te

Verificar que el archivo shorewall.te tenga el siguiente contenido:

module shorewall 1.0;

require { type shorewall_t; type usr_t; type sysfs_t; class file { execute execute_no_trans }; class dir search; class dir getattr;}

Page 5: Configuración Básica de Shorewall01

#============= shorewall_t ==============allow shorewall_t usr_t:file { execute execute_no_trans };allow shorewall_t sysfs_t:dir search;allow shorewall_t sysfs_t:dir getattr;

Crear el archivo de módulo shorewall.mod a partir del archivo shorewall.te:

checkmodule -M -m -o shorewall.mod shorewall.te

Crear el archivo de política shorewall.pp a partir del archivo shorewall.mod

semodule_package -o shorewall.pp -m shorewall.mod

Incluir la política al sistema:

semodule -i /usr/share/selinux/packages/shorewall/shorewall.pp

Regrese al directorio de inicio de root.

cd

Activación de reenvío de paquetes para IPv4.

Si se dispone de más de un dispositivo de red y se requiere implementar un NAT, DNAT y/o SNAT, es indispensable activar el reenvío de paquetes para IPv4. Edite el archivo /etc/sysctl.conf:

vi /etc/sysctl.conf

Al inicio del archivo encontrará el siguiente contenido:

# Kernel sysctl configuration file for Red Hat Linux## For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and# sysctl.conf(5) for more details.

# Controls IP packet forwardingnet.ipv4.ip_forward = 0

Cambie el valor 0 de net.ipv4.ip_forward por 1:

# Kernel sysctl configuration file for Red Hat Linux## For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and

Page 6: Configuración Básica de Shorewall01

# sysctl.conf(5) for more details.

# Controls IP packet forwardingnet.ipv4.ip_forward = 1

Para aplicar los cambios ejecute lo siguiente:

sysctl -p

Lo anterior devolverá como salida algo similar a lo siguiente, donde deberá mostrarse que se ha aplicado net.ipv4.ip_forward con el valor 1:

net.ipv4.ip_forward = 1net.ipv4.conf.default.rp_filter = 1net.ipv4.conf.default.accept_source_route = 0kernel.sysrq = 0kernel.core_uses_pid = 1error: "net.bridge.bridge-nf-call-ip6tables" is an unknown keyerror: "net.bridge.bridge-nf-call-iptables" is an unknown keyerror: "net.bridge.bridge-nf-call-arptables" is an unknown key

Si se carece de interfaces de red configuradas con IPv6, es normal e inofensivo se muestren los tres errores mostrados arriba.

Procedimiento de configuración de Shorewall.

Se modificarán los siguientes archivos:

/etc/shorewall/shorewall.conf: Archivo general de configuración de Shorewall. En este se activa el servicio y funciones que se requiera utilizar.

/etc/shorewall/zones: Se utiliza para definir las zonas que utilizará el muro cortafuegos.

/etc/shorewall/interfaces: Se utiliza para definir cuáles dispositivos de red corresponden a una zona del muro cortafuegos en particular y las opciones que se requieran para cada una de éstas.

/etc/shorewall/masq: Se utiliza para definir cuáles dispositivos utilizar para los enmascaramientos de direcciones IP.

/etc/shorewall/policy: Se utiliza para definir las políticas predeterminadas para cada zona del muro cortafuegos respecto de las demás zonas.

/etc/shorewall/rules: Se utiliza para definir las reglas para apertura de puertos. /etc/shorewall/blacklist: Se utiliza para definir las direcciones IP o bloques de

direcciones IP que se desea poner en lista negra.

Shorewall viene inactivo de modo predeterminado. Para activar el servicio edite el archivo /etc/shorewall/shorewall.conf:

Page 7: Configuración Básica de Shorewall01

vi /etc/shorewall/shorewall.conf

Localice la opción STARTUP_ENABLED, la cual deberá tener «No» como valor predeterminado:

STARTUP_ENABLED=No

Cambie «No» por «Yes»:

STARTUP_ENABLED=Yes

Se requiere definir cuáles zonas serán gestionadas en el muro cortafuegos. Edite el archivo /etc/shorewall/zones:

vi /etc/shorewall/zones

Encontrará que sólo está definida la zona fw con el tipo firewall:

fw firewall

Si dispone de un único dispositivo de red sólo podrá definir una zona (net) tipo ipv4:

fw firewallnet ipv4

Si dispone de dos dispositivos de red, puede especificar una segunda zona (loc) tipo ipv4, la cual puede ser utilizada para acceder desde la red de área local:

fw firewallnet ipv4loc ipv4

Si dispone de tres dispositivos de red, puede especificar una tercera zona (dmz) tipo ipv4, la cual puede ser utilizada para acceder desde la zona des-militarizada:

fw firewallnet ipv4loc ipv4dmz ipv4

Una vez definidas la zonas a utilizar en el muro cortafuegos, se debe definir que dispositivos de red corresponden a cada zona del muro cortafuegos. Edite el archivo /etc/shorewall/interfaces:

vi /etc/shorewall/interfaces

Page 8: Configuración Básica de Shorewall01

Si dispone de un único dispositivo de red defina el nombre del dispositivo de red a utilizar, auto-detección de la dirección de difusión (broadcast) y las opción blacklist para utilizar la lista negra de Shorewall y la opción dhcp. Esta última opción sólo es necesaria si en la interfaz habrá un cliente o servidor DHCP. El nombre del dispositivo de red puede ser eth0, eth1, p1p1, p2p1, em1, em2, etc., dependiendo de la versión de SMBIOS:

net eth0 detect blacklist,dhcp

Si dispone de un segundo dispositivo de red puede asociar éste a la segunda zona del muro cortafuegos (loc). Igualmente defina que se auto-detecte la dirección de difusión y las opciones blacklist y dhcp si las considera necesarias.

net eth0 detect blacklist,dhcploc eth1 detect blacklist,dhcp

Si dispone de un tercer dispositivo de red puede asociar éste a la tercera zona del muro cortafuegos (dmz). Igualmente defina que se auto-detecte la dirección de difusión y las opciones blacklist y dhcp si las considera necesarias. Por lo general las zonas des-militarizadas prescinden de servidores DHCP por tratarse de redes designadas para alojar otros servidores con dirección IP estática.

net eth0 detect blacklist,dhcploc eth1 detect blacklist,dhcpdmz eth2 detect blacklist

Si dispone de un único dispositivo de red, omita el siguiente paso. Si dispone de de más de un dispositivo de red y se requiere habilitar el enmascaramiento de direcciones IP de un dispositivo hacia otro, edite el archivo /etc/shorewall/masq:

vi /etc/shorewall/masq

Si dispone de dos dispositivos de red, defina en la primera columna el dispositivo utilizado para la zona correspondiente a la red pública (net) y en la segunda columna el dispositivo utilizado por la zona correspondiente a la red de área local (loc):

eth0 eth1

Si dispone de tres dispositivos de red, añada otra línea donde se defina en la primera columna el dispositivo utilizado para la zona correspondiente a la red pública (net) y en la segunda columna el dispositivo utilizado por la zona correspondiente a la zona des-militarizada (dmz):

eth0 eth1eth0 eth2

Page 9: Configuración Básica de Shorewall01

Si además de tres dispositivos de red se dispone también de más de una dirección IP en el dispositivo correspondiente a al red pública, puede configurar el SNAT (Source Network Address Translation, mejor conocido en los entornos Windows como Secure Network Address Translation) para cada una de las zonas que serán enmascaradas. En el siguiente ejemplo se enmascara todo el tráfico originado desde el dispositivo eth1 con la dirección IP 200.1.2.3 y el tráfico proveniente del dispositivo eth2 con la dirección IP 200.1.2.4.

eth0 eth1 200.1.2.3eth0 eth2 200.1.2.4

Edite el archivo /etc/shorewall/policy

vi /etc/shorewall/policy

Si dispone de un sólo dispositivo de red defina sólo dos políticas. Una que permita al muro cortafuegos comunicarse a cualquier parte y otra que descarte cualquier paquete proveniente de la zona de red pública (net) y se guarde bitácora de la actividad generada y etiquetada con DROP:

fw all ACCEPTnet all DROP info

Si dispone de dos dispositivos de red añada una tercera política que rechace todos los paquetes provenientes desde la zona correspondiente a la red de área local (loc) y se guarde bitácora de la actividad generada y etiquetada con REJECT:

fw all ACCEPTnet all DROP infoloc all REJECT info

Si dispone de tres dispositivos de red añada una cuarta política que rechace todos los paquetes provenientes desde la zona correspondiente a la zona des-militarizada (dmz) y se guarde bitácora de la actividad generada y etiquetada con REJECT:

fw all ACCEPTnet all DROP infoloc all REJECT infodmz all REJECT info

Edite el archivo /etc/shorewall/rules:

vi /etc/shorewall/rules

Debajo de SECTION NEW defina una regla que permita el acceso hacia el servicio de SSH (puerto 22/TCP) desde cualquier zona del muro cortafuegos:

Page 10: Configuración Básica de Shorewall01

SECTION NEWACCEPT all fw tcp 22

Si requiere habilitar más puertos, puede hacerlo añadiendo líneas similares especificando el protocolo utilizado y el puerto o los puertos requeridos. En el siguiente ejemplo se habilitan los puertos para FTP, HTTP, HTTPS y el rango de puertos para conexiones pasivas para el servicio de FTP.

SECTION NEWACCEPT all fw tcp 22ACCEPT all fw tcp 20,21,80,443,30300:30309

Defina una regla que permita hacer pings (puerto 8/ICMP) hacia el muro cortafuegos desde cualquier zona del muro cortafuegos, sin importar el puerto de origen, sin importar la dirección IP de destino y limitando a una tasa de 10 conexiones por segundo con ráfagas de 5:

SECTION NEWACCEPT all fw tcp 22ACCEPT all fw tcp 20,21,80,443,30300:30309ACCEPT all fw icmp 8 - - 10/sec:5

Si dispone de dos dispositivos de red, puede habilitar la salida desde la zona correspondiente a la red de área local (loc) hacia diversos puertos en la zona correspondiente a la red pública (net). En el siguiente ejemplo se habilita la salida para los puertos 20 (ftp-data), 21 (ftp), 22 (ssh), 25 (smtp), 43 (whois), 53 (dns), 63 (whois++), 80 (http), 110 (pop3), 123 (ntp), 143 (imap), 443 (https), 465 (smtps), 587 (submission), 993 (imaps) y 995 (pop3s) por TCP, los puertos 43 (whois), 53 (dns), 63 (whois++) y 123 (ntp) por UDP y los pings (puerto 8 por ICMP) limitado a una tasa de 20 conexiones por segundo con ráfagas de 10:

SECTION NEWACCEPT all fw tcp 22ACCEPT all fw tcp 20,21,80,443,30300:30309ACCEPT all fw icmp 8 - - 10/sec:5ACCEPT loc net tcp 20,21,80,443ACCEPT loc net tcp 25,110,143,465,587,993,995ACCEPT loc net tcp 43,53,63,123ACCEPT loc net udp 43,53,63,123ACCEPT loc net icmp 8 - -

20/sec:10

Si dispone de tres dispositivos de red, puede habilitar la salida desde la zona correspondiente a la zona des-militarizada (dmz) hacia diversos puertos en la zona correspondiente a la red pública (net). En el siguiente ejemplo se habilita la salida para los puertos 20 (ftp-data), 21 (ftp), 22 (ssh), 25 (smtp), 43 (whois), 53 (dns), 63 (whois++), 80 (http), 110 (pop3), 123 (ntp), 143 (imap), 443 (https), 465 (smtps), 587 (submission), 993 (imaps) y 995 (pop3s) por TCP, los puertos 43 (whois), 53 (dns), 63 (whois++) y 123 (ntp)

Page 11: Configuración Básica de Shorewall01

por UDP y los pings (puerto 8 por ICMP) limitado a una tasa de 20 conexiones por segundo con ráfagas de 10:

SECTION NEWACCEPT all fw tcp 22ACCEPT all fw tcp 20,21,80,443,30300:30309ACCEPT all fw icmp 8 - - 10/sec:5ACCEPT loc net tcp 20,21,80,443ACCEPT loc net tcp 25,110,143,465,587,993,995ACCEPT loc net tcp 43,53,63,123ACCEPT loc net udp 43,53,63,123ACCEPT loc net icmp 8 - -

20/sec:10ACCEPT dmz net tcp 20,21,80,443ACCEPT dmz net tcp 25,110,143,465,587,993,995ACCEPT dmz net tcp 43,53,63,123ACCEPT dmz net udp 43,53,63,123ACCEPT dmz net icmp 8 - -

20/sec:10

Edite el archivo /etc/shorewall/blacklist:

vi /etc/shorewall/blacklist

Cualquier dirección IP o bloques de direcciones IP que se añadan a este archivo quedarán automáticamente en lista negra. Ejemplos de algunos bloques de direcciones asignados a África y algunos de los bloques de direcciones controlados por la mafia rusa:

41.0.0.0/8196.0.0.0/8154.0.0.0/8197.0.0.0/892.241.160.0/1991.144.176.0/22212.191.0.0/1779.171.80.0/21

Al terminar la configuración, inicie el muro cortafuegos ejecutando lo siguiente:

service shorewall start

Si falla al iniciar, significa que hubo errores de sintaxis en cualquiera de los archivos editados. Revise el contenido de la bitácora de inicio de Shorewall ejecutando lo siguiente:

tail -80 /var/log/shorewall-init.log

Realice las correcciones pertinentes e intente iniciar de nuevo el servicio.

Iniciar, detener y reiniciar el servicio shorewall.

Page 12: Configuración Básica de Shorewall01

Para iniciar por primera vez el servicio ejecute lo siguiente:

service shorewall start

Para reiniciar el servicio shorewall o bien hacer que los cambios hechos a la configuración surtan efecto, ejecute lo siguiente:

service shorewall restart

Para detener el servicio shorewall, ejecute lo siguiente:

service shorewall stop

Agregar el servicio shorewall al arranque del sistema.

De modo predeterminado el servicio shorewall viene activo en los niveles de ejecución 2, 3, 4, y 5. Si necesita desactivar el servicio dureante el siguiente inicio del sistema, ejecute lo siguiente:

chkconfig shorewall off

Para hacer que el servicio de shorewall quede nuevamente activo con el siguiente inicio del sistema, ejecute lo siguiente:

chkconfig shorewall on