tomado de http://www.vensign.com/blog/instalar-shorewall-firewall-para-debian-y-ubuntu.html

   Instalar Shorewall Firewall para Debian y Ubuntu


Visto 7.432 veces | 39 Comentarios | Imprimir <http://www.vensign.com/blog/instalar-shorewall-firewall-para-debian-y-ubuntu.html/print/> En esta oportunidad les voy a mostrar como instalar Shorewall que es un potente Firewall (o mejor dicho interfaz para configurar el netfilter) para Linux. La configuración que voy a presentar es para el caso de una computadora con una sola interfaz de red (es decir una computadora personal que quieras proteger), en otra oportunidad les explicaré como hacer un servidor que sirva de Firewall a una red. Esta instalación está dirigida a Debian y Ubuntu tanto las versiones de Desktop como de Server. Empecemos...


   Instalación de Shorewall 4.0

Lo primero que vamos a hacer es actualizar la lista de repositorios para que así se instale la última versión de Shorewall, tanto Ubuntu como Debian tienen en los repositorios regulares la versión 3.4 y actualmente la última versión estable es la 4.0 al momento de escribir este post. Para esto tenemos que modificar el archivo sources.list que se encuentra en /etc/apt/. Ejecutamos los siguientes comandos/(como bien saben tienen que tener privilegios de root para hacer estas operaciones o utilizar sudo delante de los comandos en caso de Ubuntu):/

cp /etc/apt/sources.list /etc/apt/sources.list.backup

Recuerden que siempre es bueno realizar un respaldo de los archivos que vamos a modificar. Luego ejecutamos:

vim /etc/apt/sources.list

Tambien pueden utilizar gedit, nano o el editor de su preferencia. Agregamos estas dos líneas al final del archivo:

deb http://people.connexer.com/~roberto/debian/ etch main
deb-src http://people.connexer.com/~roberto/debian/ etch main

Guardamos el archivo y luego agregamos la GnuPG key a nuestra lista de llaves para decir que confiamos en esta fuente y comprobar que estan firmados por su autor. Ejecutamos:

gpg --keyserver keyring.debian.org --recv-key B2B97BB1
gpg --export -a B2B97BB1 | sudo apt-key add -

Por último actualizamos la lista de paquetes:

apt-get update

Listo ya tenemos los paquetes de la última versión de Shorewall listo para instalarlos. Ahora ejecutamos:

apt-get install shorewall shorewall-perl


   Configuración de Shorewall para una Sola Interfaz

Una vez finalizada la instalación procedemos a cambiar la configuración. Shorewall trae unos "esqueletos" de configuración que debemos copiar a la carpeta /etc/shorewall para esto ejecutamos los siguentes comandos:

cd /usr/share/doc/shorewall-common/default-config

cp -p interfaces rules zones policy /etc/shorewall

/Nota: En versiones anteriores de Shorewall encontraras los archivos esqueletos en /usr/share/shorewall/default-config/ solo en caso de que no encuentres los archivos en la ruta especificada. / /Nota: Utilizamos la opción -p de copy para que se mantengan todos los privilegios de los archivos para más información consulta man cp./ Ahora que ya tenemos nuestros archivos de configuración base vamos a modificarlos:


   Shorewall Zones

El primer archivo de configuración que vamos a modificar es el de zones, Shorewall ve la red donde se encuentra como un conjunto de zonas, para el caso de una sola interfaz de red que estamos haciendo solo vamos a tener dos zonas. Primero ejecutamos el siguiente comando:

vim /etc/shorewall/zones

Puedes utilizar tambien gedit, nano o el editor de tu preferencia. Aqui tenemos que agregarle al archivo la linea /*red ipv4*/ justo despues de /*fw firewall*/ como se muestra a continuación:

#
# 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
# Tutorial de Shorewall Vensign http://www.vensign.com
###############################################################################
#ZONE   TYPE            OPTIONS         IN                      OUT
#                                       OPTIONS                 OPTIONS
fw      firewall
red     ipv4
#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE

La zona /fw firewall/ siempre debe existir ya que es la zona que reconoce Shorewall como suya, además será definida como una variable $FW en el shell una vez que ejecutemos el Shorewall y será referida durante toda la configuración. Para más información de las zonas puedes ejecutar man shorewall-zones o ir a la dirección

http://www.shorewall.net/manpages/shorewall-zones.html


   Shorewall Interfaces

Ahora vamos a obtener el nombre de la interfaz externa (la que se conecte hacia internet) ejecutando el siguiente comando:

ip route ls

y obtendrás algo como esto:

192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.104

default via 192.168.1.1 dev eth0  metric 100

Por supuesto que la dirección IP de tu computadora (u ordenador para nuestros amigos Españoles) puede ser distinta al igual que el nombre de la interfaz en este caso eth0. Fijense que la interfaz externa viene dado por la línea /default via 192.168.1.1 dev *eth0 * metric 100/. Esto es importante si se tiene más de una interfaz de red. Bueno ya con esta información podemos proceder a modificar el archivo /etc/interfaces, ejecutamos el siguiente comando:

vim /etc/shorewall/interfaces

Y agregamos la siguiente línea

red     eth0            detect          
dhcp,tcpflags,logmartians,nosmurfs,blacklist,routeback

Para que el archivo quede algo parecido a esto:

#
# 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
# Tutorial Shorewall Vensign http://www.vensign.com/
###############################################################################
#ZONE   INTERFACE       BROADCAST       OPTIONS
red     eth0            detect          
dhcp,tcpflags,logmartians,nosmurfs,blacklist,routeback
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Vamos a analizar un poco esto:

   * ZONE: Aquí definimos la zona a la cual va a pertenecer la interfaz
     que vamos a definir, en este caso la zona es red que ya definimos
     anteriormente
   * INTERFACE: El nombre de la interfaz
   * BROADCAST: Es opcional. Aquí definimos que queremos que haga el
     Shorewall con los paquetes de Broadcast en este caso con la opción
     detect le decimos que detecte las direcciones de broadcast por
     nosotros. Tambien podríamos colocar aquí la dirección IP de
     broadcast de nuestra red.
   * OPTIONS: Esta es la parte más extensa, así que explicaré las
     opciones utilizadas aquí.
         o dhcp: Esta opción se debe colocar si tu computadora obtiene
           su dirección IP vía DHCP, o si tu firewall está instalado en
           un servidor DHCP.
         o tcpflags: Esta opción hace que Shorewall revise los paquetes
           por combinaciones ilegales de FLAGS (o banderas) TCP. Nunca
           está de más tenerlo.
         o logmartians: Esta opción hace que Shorewall registre
           paquetes con direcciones de origen imposibles, para esto
           tenemos que tener habilitado el routefilter en la interfaz
           lo cual veremos más adelante como hacerlo.
         o nosmurfs: Filtra paquetes smurfs (paquetes que tienen como
           dirección de origen una dirección de broadcast)
         o blacklist: Analiza los paquetes contra la lista negra que
           definiremos más adelante en el archivo blacklist del shorewall
         o routeback:Permite que Shorewall filtre paquetes que se
           devuelven a esta misma interfaz

Bueno ya tenemos el archivo de interfaces listo lo guardamos y seguimos con la configuración. Nota: Para más información del archivo de interfaces y sus opciones pueden ejecutar man shorewall-interfaces


   Shorewall Policy

Aqui vamos a definir una política que determina como Shorewall maneja la conexión entre las distintas zonas. Es de destacar que las instrucciones se ejecutan de arriba a abajo por lo que es importante mantener el orden para que se ejecuten adecuadamente. Vamos a modificar el archivo de politicas que se encuentra /etc/shorewall ejecutando el siguiente comando:

vim /etc/shorewall/policy

Y lo modificamos para que quede así:

#
# Shorewall version 4.0 - Sample Policy File for one-interface configuration.
# Copyright (C) 2006 by the Shorewall Team
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# See the file README.txt for further details.
#-----------------------------------------------------------------------------
# For information about entries in this file, type "man shorewall-policy"
#
# The manpage is also online at
# http://shorewall.net/manpages/shorewall-policy.html
# Tutorial de Shorewall Vensign http://www.vensign.com/
###############################################################################
#SOURCE         DEST            POLICY          LOG LEVEL       LIMIT:BURST
$FW             red             ACCEPT
red             $FW             DROP            info
red             all             DROP            info
# The FOLLOWING POLICY MUST BE LAST
all             all             REJECT          info
#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE

Lo que estamos diciendo aquí es que todo lo que venga de $FW que lo definimos anteriormente es la zona de Firewall de Shorewall sea aceptado y que todo lo demás sea rechazado para que pase por las reglas que crearemos a continuación. Para más información pueden buscar las páginas de manual ejecutando man shorewall-policy.


   Shorewall Rules

Las reglas sirven para agregar excepciones a las politicas que declaramos anteriormente, si dejamos las politicas como están sin agregar ninguna regla pues no podremos ni siquiera navegar asi que vamos a modificar el archivo de rules ejecutando:

#
# 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
#
# Tutorial de Shorewall Vensign http://www.vensign.com/
############################################################################################################################
#ACTION SOURCE          DEST            PROTO   DEST    SOURCE          
ORIGINAL        RATE            USER/
#                                               PORT    PORT(S)         DEST    
        LIMIT           GROUP
#SECTION ESTABLISHED
#SECTION RELATED
SECTION NEW
#
# ENTRANTE
#
Ping/ACCEPT     red     $FW
SSH/ACCEPT      red     $FW
#FTP/ACCEPT     red     $FW
#DNS/ACCEPT     red     $FW
#Web/ACCEPT     red     $FW
#SMTP/ACCEPT    red     $FW
#POP3/ACCEPT    red     $FW
#IMAP/ACCEPT    red     $FW
#
# SALIENTE
#
Ping/ACCEPT     $FW     red
DNS/ACCEPT      $FW     red
Web/ACCEPT      $FW     red
FTP/ACCEPT      $FW     red
#
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Bueno todas las líneas que comienzan con # están comentadas por lo que no tendrán efecto, las reglas con nombre como Ping, SSH, etc nos describe el protocolo sobre el que vamos a efectuar la acción que puede ser ACCEPT. REJECT, DROP entre otras. Shorewall cuenta con varios MACROS, los MACROS no son más que reglas prehechas que estamos utilizando aquí como Ping, SSH, DNS, etc. Para ver una lista completa de los macros puedes ejecutar /shorewall show macros/. Luego de colocar el macro y la Acción pasamos a colocar el destino que en este caso es la zona red que declaramos al principio y luego colocamos el destino que es la zona Firewall en el caso de las conexiones entrantes (red--->firewall) e invertido para las coneciones salientes (firewall-->red). Si quisieramos aplicar una regla sobre un puerto y protocolo específico la declaramos de la siguiente forma:

ACCEPT          $FW     red             tcp     873
REJECT          $FW     red             udp     443

Esto son ejemplos no los tomes como reglas reale. Para una lista detallada de los puertos y sus respectivos protocolos puedes ir aquí <http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-sg-es-4/ch-ports.html> Otros tips si tienes un servidor web es una buena idea que habilites Web, FTP sino tus usuarios no podrán ver tus páginas. Para más información acerca de las reglas puedes leer /man shorewall-rules./


   Ultimos Pasos

Ahora los útlimos toques, vamos a modificar el archivo de configuración de Shorewall: vim /etc/shorewall/shorewall.conf Asegurense que los siguientes valores están correctos:

STARTUP_ENABLED=Yes
ROUTE_FILTER=Yes

Con STARTUP_ENABLED le decimos al Shorewall que inicie con el sistema, y con ROUTE_FILTER del cual hablamos ya arriba en la parte de Interfaces Para iniciar manualmente a Shorewall y probar nuestra configuración ejecutamos:

shorewall start

Con esto nos dará algo parecido a esto:

Compiling...
Initializing...
Determining Zones...
IPv4 Zones: red
Firewall Zone: fw
Validating interfaces file...
Validating hosts file...
Pre-processing Actions...
Pre-processing /usr/share/shorewall/action.Drop...
Pre-processing /usr/share/shorewall/action.Reject...
Validating Policy file...
Determining Hosts in Zones...
red Zone: eth0:0.0.0.0/0
Deleting user chains...
Compiling /etc/shorewall/routestopped ...
Creating Interface Chains...
......
Creating action chain dropNotSyn
Applying Policies...
Activating Rules...
done.

Si dice done al final todo bien si nos da algun error debemos leer que nos indica y tratar de corregirlo. Shorewall registra todo a través del log del sistema para ver los logs podemos ejecutar los siguientes comandos:

   * *shorewall show log* (Muestra los últimos 20 mensajes de netfilter)
   * *shorewall logwatch* (Verifica los logs a un tiempo determinado)
   * *shorewall dump* (Nos da un amplio reporte de los problemas
     encontrados por Shorewall)

Bueno esto fue todo por ahora, apenas tocamos la superficie de esta poderosa herramienta más adelante publicaré tutoriales más completos y específicos del uso de Shorewall. Como siempre cualquier comentario, sugerencia e idea es bienvenida. Saludos Olivers


--

Este mensaje le ha llegado mediante el servicio de correo electronico que 
ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema 
Nacional de Salud. La persona que envia este correo asume el compromiso de usar 
el servicio a tales fines y cumplir con las regulaciones establecidas

Infomed: http://www.sld.cu/
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: 
<http://listas.jovenclub.cu/pipermail/gutl-l/attachments/20110728/e7f057aa/attachment.htm>
______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Responder a