En este tutorial se va a instalar Shorewall que es un potente Firewall (o mejor dicho interfaz para configurar el netfilter) para Linux, no solo funciona para Debian y Ubuntu sino para cualquier linux, solo que en este tutorial solo se va a instalar para estas 2 distribuciones. La configuración que voy a presentar es [...]
En este tutorial se va a instalar Shorewall que es un potente Firewall (o mejor dicho interfaz para configurar el netfilter) para Linux, no solo funciona para Debian y Ubuntu sino para cualquier linux, solo que en este tutorial solo se va a instalar para estas 2 distribuciones.
La configuración que voy a presentar es para el caso de una computadora con dos interfaces de red .
Esta instalación está dirigida a Debian y Ubuntu tanto las versiones de Desktop como de Server.
Instalación de Shorewall 4.0
Primero se actualiza la lista de repositorios para que así se instale la última versión de Shorewall.
Modificaremos el archivo sources.list que se encuentra en /etc/apt/sources.list
Se deben de tener privilegios de root o en Ubuntu emplear sudo
#vim /etc/apt/sources.listTambien pueden utilizar gedit, nano o el editor de tu preferencia. Agregamos estas líneas al final del archivo:
############# Para Debian Estable ######################## # Main deb http://http.us.debian.org/debian/ stable main non-free contrib # Source deb-src http://http.us.debian.org/debian/ stable main non-free contrib # Security deb http://security.debian.org/ stable/updates main contrib non-free
Guardamos el archivo y luego agregamos la GnuPG key a nuestra lista de llaves para decir que confiamos en esta fuente y comprobar que están firmados por su autor. Ejecutamos:
#gpg --keyserver keyring.debian.org --recv-key B2B97BB1#gpg --export -a B2B97BB1 | apt-key add -Por último actualizamos la lista de paquetes:
#apt-get updateListo ya tenemos los paquetes de la última versión de Shorewall listo para instalarlos. Ahora ejecutamos:
#apt-get install shorewall shorewall-perlConfiguración de Shorewall para dos Interfaces
Una vez finalizada la instalación procedemos a cambiar la configuración.
Shorewall trae unos ejemplos para 1,2 y hasta 3 interfaces de configuración en /usr/share/doc/shorewall-common/examples/ que debemos copiar a la carpeta /etc/shorewall para esto ejecutamos los siguientes comandos (en este tutorial solo copiaremos los de una sola interfaz):
#cd /usr/share/doc/shorewall-common/examples/two-interfaces#cp -p interfaces rules zones policy /etc/shorewallNota: 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 (/etc/shorewall/zones).
Shorewall ve la red donde se encuentra como un conjunto de zonas, para el caso de dos interfaces de red que estamos haciendo vamos a tener tres zonas. Primero ejecutamos el siguiente comando:
#vim /etc/shorewall/zonesSe verificara el archivo que tiene la linea de loc ipv4 net ipv4 justo después de fw firewall debe verse como el archivo que a continuación se muestra, ya los ejemplos lo traen por eso solo se va a verificar:
# Shorewall version 4.0 - Sample Zones File for two-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-zones" # # The manpage is also online at # http://shorewall.net/manpages/shorewall-zones.html # ############################################################################### #ZONE TYPE OPTIONS IN OUT # OPTIONS OPTIONS fw firewall net ipv4 loc ipv4 #LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE
Shorewall Interfaces
Ahora vamos a obtener el nombre de la interfaz externa (la que se conecte hacia internet) ejecutando el siguiente comando:
ip route lsy obtendrás algo como esto:
10.1.0.0/16 via 10.1.0.253 dev eth0
default via 192.168.1.254 dev eth1
Por supuesto que la dirección IP de tu computadora 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.254 dev eth0. Esto es importante si se tiene más de una interfaz de red.
Con esta información procederemos a modificar el archivo /etc/shorewall/interfaces, ejecutamos el siguiente comando:
#vim /etc/shorewall/interfacesY agregamos las siguientes líneas
#ZONE INTERFACE BROADCAST OPTIONS
net eth1 detect dhcp,tcpflags,logmartians,nosmurfs,blacklist,routeback
loc eth0 detect tcpflags,logmartians,blacklist,routeback,nosmurfs- ZONE: Aquí definimos la zona a la cual va a pertenecer la interfaz que vamos a definir, en este caso la zona es net 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. También 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í.
- 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.
- tcpflags: Esta opción hace que Shorewall revise los paquetes por combinaciones ilegales de FLAGS (o banderas) TCP. Nunca está de más tenerlo.
- 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.
- nosmurfs: Filtra paquetes smurfs (paquetes que tienen como dirección de origen una dirección de broadcast)
- blacklist: Analiza los paquetes contra la lista negra que definiremos más adelante en el archivo blacklist del shorewall
- routeback:Permite que Shorewall filtre paquetes que se devuelven a esta misma interfaz
Con esto el archivo de interfaces esta 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 políticas que se encuentra /etc/shorewall/policy ejecutando el siguiente comando:
vim /etc/shorewall/policy
Y lo modificamos para que quede así:
# Shorewall version 4.0 - Sample Policy File for two-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 # ############################################################################### #SOURCE DEST POLICY LOG LEVEL LIMIT:BURST loc net REJECT loc $FW REJECT info loc all REJECT info # Policies for traffic originating from the firewall ($FW) $FW net REJECT info $FW loc REJECT info $FW all REJECT info # Policies for traffic originating from the Internet zone (net) net $FW DROP info net loc DROP info net 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 entre zonas 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:
vim /etc/shorewall/rules
Y lo modificamos para que quede así:
#
# Shorewall version 4.0 - Sample Rules File for two-interface configuration. # Copyright (C) 2006,2007 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-rules" # # The manpage is also online at # http://shorewall.net/manpages/shorewall-rules.html # ############################################################################################################# #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK # PORT PORT(S) DEST LIMIT GROUP # # Accept DNS connections from the firewall to the network # DNS/ACCEPT $FW net # # Accept SSH connections from the local network for administration # SSH/ACCEPT loc $FW # # Allow Ping from the local network # Ping/ACCEPT loc $FW # # Drop Ping from the "bad" net zone.. and prevent your log from being flooded.. # Ping/DROP net $FW ACCEPT $FW loc icmp ACCEPT $FW net icmp # #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
Los nombres 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 $FW que declaramos al principio y luego colocamos el destino que es la zona net en el caso de las conexiones entrantes (net—>firewall) e invertido para las conexiones salientes (firewall–>net).
Si quisieramos aplicar una regla sobre un puerto y protocolo específico la declaramos de la siguiente forma:
ACCEPT $FW net tcp 873 REJECT $FW net udp 443
Esto son ejemplos, con lo anterior solo tiene permitido que le hagan ping, ssh y https (entrada) y de salida solo tiene habilitado el puerto de ssh y el ping, todo lo demas esta cerrado. Lo debes adecuar a tus necesidades.
Para una lista detallada de los puertos y sus respectivos protocolos puedes ir aquí
En los logs, si tiene algun puerto que este bloqueado y necesitas saber cual es, lo puedes encontrar en los logs /var/log/messages, con el siguiente comando lo ves en el momento.
tail -f /var/log/messages
Para más información acerca de las reglas puedes leer man shorewall-rules.
Ultimos Pasos
Ahora los últimos toques, vamos a modificar el archivo de configuración de Shorewall:
#vim /etc/shorewall/shorewall.confAsegurense que los siguientes valores están correctos:
STARTUP_ENABLED=YesROUTE_FILTER=YesCon 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
y por ultimo, que fue un problema que me sucedió y que no lo dicen en todos los tutoriales de Debian o Ubuntu
cambiar la linea startup=0 por startup=1 del archivo /etc/default/shorewall
#vim /etc/default/shorewallquedando de la siguiente forma
# prevent startup with default configuration # set the following varible to 1 in order to allow Shorewall to start startup=1 # if your Shorewall configuration requires detection of the ip address of a ppp # interface, you must list such interfaces in "wait_interface" to get Shorewall to # wait until the interface is configured. Otherwise the script will fail because # it won't be able to detect the IP address. # # Example: # wait_interface="ppp0" # or # wait_interface="ppp0 ppp1" # or, if you have defined in /etc/shorewall/params # wait_interface= # # Startup options # OPTIONS="" # EOF
Para iniciar manualmente a Shorewall y probar nuestra configuración ejecutamos:
#shorewall startCon esto nos dará algo parecido a esto:
Compiling... Initializing... Determining Zones... IPv4 Zones: net loc 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... net Zone: eth1:0.0.0.0/0 loc Zone: eth0:0.0.0.0/0 Deleting user chains... Compiling /etc/shorewall/routestopped ... Creating Interface Chains... Compiling Common Rules Adding Anti-smurf Rules Adding rules for DHCP Compiling TCP Flags checking... Compiling Kernel Route Filtering... Compiling Martian Logging... Compiling /etc/shorewall/rules... Compiling Actions... Compiling /usr/share/shorewall/action.Drop for Chain Drop... Compiling /usr/share/shorewall/action.Reject for Chain Reject... Compiling /etc/shorewall/policy... Compiling Traffic Control Rules... Compiling Rule Activation... Compiling IP Forwarding... Shorewall configuration compiled to /var/lib/shorewall/.start Starting Shorewall.... Initializing... Clearing Traffic Control/QOS Deleting user chains... Enabling Loopback and DNS Lookups Creating Interface Chains... Setting up SMURF control... Setting up Black List... Adding Anti-smurf Jumps... Setting up rules for DHCP... Setting up TCP Flags checking... Setting up ARP filtering... Setting up Route Filtering... Setting up Martian Logging... Setting up Accept Source Routing... Setting up SYN Flood Protection... Setting up Rules... Setting up Actions... Creating action chain Drop Creating action chain Reject Creating action chain dropBcast Creating action chain dropInvalid Creating action chain dropNotSyn Applying Policies... Activating Rules... done.
Si dice done al final todo quedo bien y 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)
Entradas Relacionadas
Related posts:
- How To: Instalar Shorewall Firewall para Debian y Ubuntu En este tutorial se va a instalar Shorewall que es...
- Instalar Openfire 3.6.3 & Spark 2.5.8 & SparkWeb 0.9.0 en Debian 5.0 Lenny Para poder aplicar este tutorial se necesita tener instalado Debian...
- HowTo: Instalar Openfire 3.6.3 & Spark 2.5.8 & SparkWeb 0.9.0 en Debian 5.0 Lenny Para poder aplicar este tutorial se necesita tener instalado Debian...
- HowTo: Instalar apache2 con SSL en Debian 5.0 Lenny #apt-get install apache2 Instalar openssl ssl-cert #apt-get install openssl ssl-cert...
- HowTo: VirtualBox con soporte para USB en Ubuntu 9.04 Jaunty Antes de empezar debemos de tener instalado VirtualBox en Ubuntu...
Related posts brought to you by Yet Another Related Posts Plugin.





Leave Your Response