Configuracion de Shorewall en Centos 6

Antecedentes.
En muchas ocasiones nos hemos encontrado con nuestro Internet lento, nuestros archivos infectados de virus, hasta incluso con el robo de información confidencial, todo esto y más puede suceder si dejamos la puerta abierta a los cybercriminales, claro la puerta de la que estamos hablando se llama firewall, por eso aquí explicaré como configurar nuestro muro de defensa ante las amenazas del Internet.


Objetivo.
Para proteger nuestra red de los ataques de hackers, virus, y cybercriminales y  más, en linux contamos con una herramienta poderosa llamada Netfilter (iptables), ésta se encarga de dar paso a las conexiones que nosotros hayamos configurado como seguras, prácticamente el chaleco antibalas de nuestra red, aquí lo haremos con Shorewall.


Que es Shorewall?
Shorewall es una herramienta de alto nivel para configurar netfilter, el cual utiliza una serie de archivos donde especificamos nuestra configuración en pocas lineas. Shorewall convierte e integra nuestra configuración en las reglas iptables, lo recomiendo para implementar firewall complejo y en redes de entornos cambiantes.


Requerimientos.
Shorewall (version actual 4.5) para centos 6, son 2 archivos (shorewall-4.5* y shorewall-core-4.5) como es nuestro caso podemos descargarlo desde Aquí


Gráfica de apreciación.




Manos a la obra.
Paso 1
Una vez descargado el archivo en modo gráfico lo podemos instalar dando doble clic o en la consola tipiamos lo siguiente:

#rpm -ivh shorewall-4.5.16.1-1.el6.noarch.rpm
#rpm -ivh shorewall-core-4.5.16.1-1.el6.noarch.rpm

Nota: Para editar los archivos Utilizaremos el comando vi
i = insertar texto o editar
Esc = detener edición
:wq = guardar los cambios y salir, tambien podemos usar :x
:q! = salir sin guardar cambios

Paso 2
Modificamos el archivo shorewall.conf ubicado dentro de /etc/shorewall/ buscamos el parametro STARTUP_ENABLE y cambiamos el valor por yes


#vi /etc/shorewall/shorewall.conf
STARTUP_ENABLED=Yes



Paso 3
Modificamos el archivo zones ubicado dentro de /etc/shorewall/ en este fichero definimos las zonas con las que trabajará shorewall (firewall, ipv4) de forma predeterminada encontraremos la zonal (fw) como firewall, aqui definiremos (net) para internet y (loc) para la red interna.

#vi /etc/shorewall/zones

# Shorewall version 4 - Zones File
#
# For information about this file, type "man shorewall-zones"
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-zones.html
#
###########################################################
#ZONE   TYPE       OPTIONS     IN            OUT
#                              OPTIONS       OPTIONS
fw      firewall 
loc     ipv4
net     ipv4



Paso 4
Modificamos el archivo interfaces ubicado dentro de /etc/shorewall/ en este archivo definiremos las interfaces que trabajaran para internet y para la red interna. En caso de haber el servicio DHCP como cliente, servidor o intermediario, se debe especificar aquí.

#vi /etc/shorewall/interfaces
#
# Shorewall version 4 - Interfaces File
#
# For information about entries in this file, type "man shorewall-interfaces"
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-interfaces.html
#
#############################################################
#ZONE   INTERFACE       BROADCAST       OPTIONS
net     eth0            detect          dhcp
loc     eth1            detect          dhcp

Nota: En algunas versiones nuevas de shorewall el BROADCAST viene por defecto y puede que no esté en el archivo de configuración, no se preocupen no es necesario colocarlo.

Interpretación:
1era Linea: La zona net (internet) va a estar en la eth0 se calcula la dirección de transmisión de forma automática y puede trabajar con DHCP.
2da Linea: La zona loc (red interna) va a estar en la eth1 se calcula la dirección de transmisión de forma automática y puede trabajar con DHCP.


Paso 5
Modificamos el archivo policy ubicado dentro de /etc/shorewall/ en este archivo definiremos las políticas principales de acceso y bloqueo, se recomienda la siguiente configuración donde nuestro firewall tiene acceso a la internet y la red local  y el resto esta bloqueado:

#vi /etc/shorewall/policy
#
# Shorewall version 4 - Policy File
#
# For information about entries in this file, type "man shorewall-policy"
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-policy.html
#
#########################################################
#SOURCE DEST    POLICY   LOG     LIMIT:       CONNLIMIT:
#                        LEVEL   BURST        MASK
fw      all     ACCEPT
all     all     REJECT   info
net     all     DROP     info

Interpretacion:
Aqui estamos indicando que nuestro equipo firewall tenga acceso a todo, en la segunda linea le indicamos que rechace de todo a todo e informe lo rechazado en el log, en la tercera linea indicamos que bloquee del interner hacia todos y también informe en el log lo bloqueado.
Ustedes se preguntarán porque estan estas reglas así, como veran el shorewall lee las reglas de abajo hacia arriba, así que se ejecutará primero la ultima linea y subirá hasta terminar con la primera, por lo tanto nuesto firewall quedará con politica que solo el tenga acceso a todo lo demas bloqueado y rechazado. Mas adelante agregaremos reglas especificas para nuestra red interna.

Nota: La información de bloqueos que nos arroje el shorewall la podremos observar en el archivo messages, con el siguiente comando para ver en vivo:
#tail -f /var/log/messages | grep Shorewall


Paso 6
Modificamos el archivo masq ubicado dentro de /etc/shorewall/ en este fichero definiremos el enmascaramiento, es decir para que las consultas salgan a través de la única ip del firewall y viseversa.


#vi /etc/shorewall/masq
#
# Shorewall version 4 - Masq file
#
# For information about entries in this file, type "man shorewall-masq"
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-masq.html
#
#######################################################
#INTERFACE SOURCE ADDRESS PROTO PORT(S) IPSEC MARK USER/
#                                                  GROUP
eth0      0.0.0.0/0

Nota: en 0.0.0.0/0 también pueden poner solo la red local de ustedes ejemplo: 192.168.1.0/24


Paso 7
Modificamos el archivo rules ubicado dentro de /etc/shorewall/ en este fichero definiremos las reglas según nuestro requerimiento, en el siguiente ejemplo:


Las reglas del firewall nos permiten realizar consultas dns y navegar a través del proxy.

En la red interna pueden hacer ping hacia el internet, consultas dns, conectarse a un correo externo por el puerto 25 y 110, consultas https (web seguras) y navegar a través del proxy por el puerto 3128.


#vi /etc/shorewall/rules
#
# Shorewall version 4 - Rules File
#
# For information on the settings in this file, type "man shorewall-rules"
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-rules.html
#
#########################################################
#ACTION      SOURCE    DEST      PROTO   DEST    SOURCE   
#                                        PORT    PORT(S)      

#Reglas del equipo Firewall (localhost)
ACCEPT       fw         fw       udp     53
ACCEPT       fw         fw       tcp     3128

#Reglas Red interna
ACCEPT       loc        net      icmp
ACCEPT       loc        fw       udp     53
ACCEPT       loc        net      tcp     25,110,443
ACCEPT       loc        fw       tcp     3128

#SECTION ESTABLISHED
#SECTION RELATED
#SECTION NEW


Si necesita dar paso a una ip en especial agrega :x.x.x.x donde las (x) es la direccion ip especifica ejemplo:
#Reglas Red interna y externa
ACCEPT    loc:192.168.0.5    net   tcp  9000
ACCEPT    net:186.68.158.89  fw    tcp  80
Interpretación:
1era línea: Desde la red local la ip 192.168.0.5 tiene salida al Internet por el protocolo tcp al puerto 9000.
2da Línea: Desde el Internet la ip 186.68.158.89 puede acceder al firewall en el protocolo tcp al puerto 80

o a su ves rangos de ips ejemplo:
#Reglas Red interna
ACCEPT    loc:192.168.0.5-192.168.0.10  net     9000
Interpretación:
Desde la red local las 192.168.0.5 hasta la 192.168.0.10 pueden acceder al Internet al puerto 9000



Si necesita trabajar con proxy transparente puede agregar la siguiente Linea.
#Redireccionamos hacia el Puerto del proxy (squid)
REDIRECT     loc        3128     tcp     80,8080

Nota: recordar que en este archivo las reglas se ejecutan de abajo hacia arriba, por lo tanto si deseamos bloquear o permitir acceso en un futuro, la regla debe ser insertada arriba de las anteriores.

Paso 8
Permitimos acceso del SeLinux
#restorecon -Rv /sbin
#restorecon reset /sbin/iptables-multi-1.4.7 context system_u:object_r:bin_t:s0->system_u:object_r:iptables_exec_t:s0
#restorecon reset /sbin/ip6tables-multi-1.4.7 context system_u:object_r:bin_t:s0->system_u:object_r:iptables_exec_t:s0

 Nota: Por cuestiones del blog las lineas se verán separadas pero son 3 líneas desde el #

Iniciamos el servicio shorewall
#service shorewall start

Desactivamos iptables y activamos a shorewall en el incio automático
#chkconfig iptables off
#chkconfig ip6tables off
#chkconfig shorewall on
No se preocupe que shorewall se encarga de levantar a iptables.


Para reiniciar el servicio utilice

#service shorewall restart

Listo tu red esta protegida.

Cualquier duda por favor deja tu comentario, si necesitas ayuda con otro tema de igual forma coméntalo.

Espero te haya se servido de mucho, si está a tu alcance te agradeceré enormemente que le des clic a cualquier anuncio en esta página o una contribución en donar para seguir publicando.


Comentarios

  1. muy fino, me sirvió de mucho
    Saludos!!

    ResponderEliminar
    Respuestas
    1. Gracias por tu comentario, nuevamente estaré retomando este blog para publicar más.

      Eliminar

Publicar un comentario

Entradas populares