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