Está en la página 1de 13

8/8/2014 Alcance Libre - Configuración básica de Shorewall.

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: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2014 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras deriv adas 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 transf orma esta obra o genera una obra
deriv ada, 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 deriv ados de usos legítimos u otras limitaciones no se v en af ectados por lo anterior. Licencia completa en castellano. La
inf ormación contenida en este documento y los deriv ados 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.

http://www.alcancelibre.org/staticpages/index.php/configuracion-basica-shorewall/print 1/13
8/8/2014 Alcance Libre - Configuración básica de Shorewall.

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

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 una popular herramienta de configuración, iproute lo ha dejado obsoleto 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?


Una Red Privada es aquella que utiliza direcciones IP establecidas en el RFC 1918. Es decir,
http://www.alcancelibre.org/staticpages/index.php/configuracion-basica-shorewall/print 2/13
8/8/2014 Alcance Libre - Configuración básica de Shorewall.

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 Internet utilizando una
única 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.repo
cd

Ejecute lo siguiente para instalar el paquete shorewall:

yum -y install shorewall

http://www.alcancelibre.org/staticpages/index.php/configuracion-basica-shorewall/print 3/13
8/8/2014 Alcance Libre - Configuración básica de Shorewall.

Procedimientos.
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:

http://www.alcancelibre.org/staticpages/index.php/configuracion-basica-shorewall/print 4/13
8/8/2014 Alcance Libre - Configuración básica de Shorewall.

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;
}

#============= 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:

http://www.alcancelibre.org/staticpages/index.php/configuracion-basica-shorewall/print 5/13
8/8/2014 Alcance Libre - Configuración básica de Shorewall.

# 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 forwarding


net.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
# sysctl.conf(5) for more details.

# Controls IP packet forwarding


net.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 = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "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

http://www.alcancelibre.org/staticpages/index.php/configuracion-basica-shorewall/print 6/13
8/8/2014 Alcance Libre - Configuración básica de Shorewall.

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:

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:

http://www.alcancelibre.org/staticpages/index.php/configuracion-basica-shorewall/print 7/13
8/8/2014 Alcance Libre - Configuración básica de Shorewall.

fw firewall
net 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 firewall
net ipv4
loc 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 firewall
net ipv4
loc ipv4
dmz 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

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,dhcp


loc 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

http://www.alcancelibre.org/staticpages/index.php/configuracion-basica-shorewall/print 8/13
8/8/2014 Alcance Libre - Configuración básica de Shorewall.

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,dhcp


loc eth1 detect blacklist,dhcp
dmz 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 eth1
eth0 eth2

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.3


eth0 eth2 200.1.2.4

Edite el archivo /etc/shorewall/policy

vi /etc/shorewall/policy

http://www.alcancelibre.org/staticpages/index.php/configuracion-basica-shorewall/print 9/13
8/8/2014 Alcance Libre - Configuración básica de Shorewall.

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 ACCEPT
net 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 ACCEPT
net all DROP info
loc 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 ACCEPT
net all DROP info
loc all REJECT info
dmz 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:

SECTION NEW
ACCEPT 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.

http://www.alcancelibre.org/staticpages/index.php/configuracion-basica-shorewall/print 10/13
8/8/2014 Alcance Libre - Configuración básica de Shorewall.

SECTION NEW
ACCEPT all fw tcp 22
ACCEPT 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 NEW
ACCEPT all fw tcp 22
ACCEPT all fw tcp 20,21,80,443,30300:30309
ACCEPT 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 NEW
ACCEPT all fw tcp 22
ACCEPT all fw tcp 20,21,80,443,30300:30309
ACCEPT all fw icmp 8 - - 10/sec:5
ACCEPT loc net tcp 20,21,80,443
ACCEPT loc net tcp 25,110,143,465,587,993,995
ACCEPT loc net tcp 43,53,63,123
ACCEPT loc net udp 43,53,63,123
ACCEPT 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) por UDP y los pings (puerto 8 por ICMP) limitado a una
tasa de 20 conexiones por segundo con ráfagas de 10:

http://www.alcancelibre.org/staticpages/index.php/configuracion-basica-shorewall/print 11/13
8/8/2014 Alcance Libre - Configuración básica de Shorewall.

SECTION NEW
ACCEPT all fw tcp 22
ACCEPT all fw tcp 20,21,80,443,30300:30309
ACCEPT all fw icmp 8 - - 10/sec:5
ACCEPT loc net tcp 20,21,80,443
ACCEPT loc net tcp 25,110,143,465,587,993,995
ACCEPT loc net tcp 43,53,63,123
ACCEPT loc net udp 43,53,63,123
ACCEPT loc net icmp 8 - - 20/sec:10
ACCEPT dmz net tcp 20,21,80,443
ACCEPT dmz net tcp 25,110,143,465,587,993,995
ACCEPT dmz net tcp 43,53,63,123
ACCEPT dmz net udp 43,53,63,123
ACCEPT 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/8
196.0.0.0/8
154.0.0.0/8
197.0.0.0/8
92.241.160.0/19
91.144.176.0/22
212.191.0.0/17
79.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.


http://www.alcancelibre.org/staticpages/index.php/configuracion-basica-shorewall/print 12/13
8/8/2014 Alcance Libre - Configuración básica de Shorewall.

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

http://www.alcancelibre.org/staticpages/index.php/configuracion-basica-shorewall/print 13/13

También podría gustarte