Bienvenidos

Bienvenidos al libro digital de Micro Outsourcing, aquí encontraras una serie de artículos preparados por nuestros profesionales con base a nuestras experiencias y conocimientos, con el compromiso de aclarar tus inquietudes y solucionar los problemas que se presentan a diario en el campo informático.

jueves, 13 de enero de 2011

Configuración básica de shorewall

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.4) para centos 5.6 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, en la consola tipiamos lo siguiente:

#rpm -ivh shorewall-4.4.15.3-1.noarch.rpm

Nota: Para editar los archivos Utilizaremos el comando vi
i = insertar texto
Esc = detener edición
:wq = guardar los cambios
: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
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      net     ACCEPT
fw      loc     ACCEPT
all     all     DROP



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



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



Paso 8
Iniciamos el servicio shorewall
#service shorewall start

Desactivamos iptables y activamos a shorewall en el incio automático
#chkconfig iptables 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.

5 comentarios:

  1. Excelente POST Sucre, siga así, me ha ayudado montón a configurar un Firewall en Quito! Publiquese un articulo de OpenVPN

    ResponderEliminar
  2. Que buen Post
    una cuestion cuales son los puertos que abres para aplicaciones espesificas
    para la conexion desde la red lan a un servidor fuera y al puerto 5000 por ejemplo

    ResponderEliminar
  3. Estimado Manuel,

    Para abrir un puerto especifico en tu caso mensionas el puerto 5000, tendrías que editar el archivo "rules" y agregar lo siguiente:

    ACCEPT loc net tcp 5000 #(en caso de ser protocolo TCP)
    ACCEPT loc net udp 5000 #(en caso de ser protocolo UDP)

    Si deseas identificar que puerto utiliza una aplicación puedes usar "Wireshark" que es muy bueno para identificar los puertos que estan siendo solicitados.

    Espero haber ayudado. Saludos,

    ResponderEliminar
  4. No olvidar poner la siguiente linea para slinux deje trabajar el shorewall

    chcon -t bin_t /usr/lib/shorewall/getparams

    ResponderEliminar
  5. Buenas tardes, amigo una consulta.. tengo un proxy squid instalado en Centos 6, me funciona perfectamente, además instalé el shorewall y el problema que tengo es que no puedo recibir ni enviar los correos corporativos de la empresa, me indica que no se puede encontrar el servidor de correo electrónico. Seguí los pasos de tu post, podrías ayudarme. Gracias de antemano.

    ResponderEliminar