Introducción
Firewall (cortafuego) en Ubuntu 15.10
Instrucciones para instalar un firewall (cortafuego) gestionado con las herramientas UFW y iptables usando el instalador de Debian / Ubuntu. Los metas específicos a lograr con este articulo son los siguientes:
- Instalar y configurar un cortafuegos en su servidor.
- Definir políticas de acceso al servidor usando la herramienta UFW.
- Definir políticas de acceso al servidor usando la herramienta iptables.
¿Qué es un Firewall (cortafuego)?
Un firewall (cortafuegos) es una parte de un sistema o una red que está diseñada para bloquear el acceso no autorizado, permitiendo al mismo tiempo comunicaciones autorizadas. Se trata de un dispositivo o conjunto de dispositivos configurados para permitir, limitar, cifrar, descifrar, el tráfico entre los diferentes ámbitos sobre la base de un conjunto de normas y otros criterios.

Diagrama de red con cortafuego. Cortesía: www.noticias3d.com
También es frecuente conectar el cortafuegos a una tercera red, llamada zona desmilitarizada o DMZ, en la que se ubican los servidores de la organización que deben permanecer accesibles desde la red exterior.
¿Qué es Netfilter/iptables?
Netfilter es un framework disponible en el núcleo Linux que permite interceptar y manipular paquetes de red. Dicho framework permite realizar el manejo de paquetes en diferentes estados del procesamiento. Netfilter es también el nombre que recibe el proyecto que se encarga de ofrecer herramientas libres para cortafuegos basados en Linux.
El componente más popular construido sobre Netfilter es iptables, una herramienta de cortafuegos que permite no solamente filtrar paquetes, sino también realizar traducción de direcciones de red (NAT) para IPv4 o mantener registros de log. El proyecto Netfilter no sólo ofrece componentes disponibles como módulos del núcleo sino que también ofrece herramientas de espacio de usuario y librerías.
Iptables es el nombre de la herramienta de espacio de usuario mediante la cual el administrador puede definir políticas de filtrado del tráfico que circula por la red. El nombre iptables se utiliza frecuentemente de forma errónea para referirse a toda la infraestructura ofrecida por el proyecto Netfilter. Sin embargo, el proyecto ofrece otros subsistemas independientes de iptables tales como el connection tracking system o sistema de seguimiento de conexiones, que permite encolar paquetes para que sean tratados desde espacio de usuario. iptables es un software disponible en prácticamente todas las distribuciones de Linux actuales.
¿Qué es UFW?
Uncomplicated Firewall (ufw) es un cortafuegos diseñado para ser de fácil uso desarrollado por Ubuntu. Utiliza la línea de comandos para configurar las iptables usando un pequeño número de comando simples.
Instalación
Debe actualizar el sistema, con el siguiente comando:
$ sudo apt-get update && sudo apt-get upgrade
Para instalar el cortafuegos UFW, ejecute el siguiente comando:
$ sudo apt-get install ufw
La herramienta iptables es instalada como una dependencia por el paquete ufw.
Usted puede ver si iptables está corriendo, puede comprobar que los módulos del cortafuegos en kernell están cargados correctamente, para esto ejecute el siguiente comando:
$ sudo lsmod | grep ip_tables
Ademas puede usar el parámetro -L del comando iptables para inspeccionar las reglas por defecto las cuales están cargadas actualmente, para esto ejecute el siguiente comando:
$ sudo iptables -L
Configuración de UFW
Es necesario activar el registro de eventos, de esta forma podemos auditar cualquier evento o sucesos en el cortafuegos, para esto ejecute el siguiente comando:
$ sudo ufw logging full
Si usted requiere desactivar el registro de eventos, ejecute el siguiente comando:
$ sudo ufw logging off
Gestión del cortafuegos con UFW
UFW al instalarse se gestiona vía linea de comando, a continuación se mostraran algunos usos comunes:
Estatus del cortafuegos con UFW
Para conocer el estatus detallado del cortafuegos usando UFW, ejecute el siguiente comando:
$ sudo ufw status verbose
Habilitar cortafuegos con UFW
Por defecto, el cortafuegos con UFW esta deshabilitado, para habilitarlo ejecute el siguiente comando:
$ sudo ufw enable
Deshabilitar cortafuegos con UFW
Si después requiere deshabilitar el cortafuegos usando la herramienta UFW, ejecute el siguiente comando:
$ sudo ufw disable Firewall stopped and disabled on system startup
Registro de eventos (Archivo log)
Para depurar posibles errores del cortafuegos usando la herramienta UFW, puede consultar el archivo log, con el siguiente comando:
$ sudo tail -f /var/log/ufw.log
Otro comando útil puede ser el siguiente:
$ sudo tail -f /var/log/syslog | grep UFW
Otorgando accesos
Un cortafuegos generalmente restringe todo y de forma granular usted va otorgando acceso a servicios específicos, al cual otorgaran privilegios, a continuación unos ejemplos típicos de permisos comunes:
Habilitar conexiones SSH/TCP
En primero lugar debe ser garantizado el acceso al servidor remoto por ssh:
$ sudo ufw allow ssh/tcp
Si en algún momento requiere remover esta regla, ejecute el siguiente comando:
$ sudo ufw delete allow ssh/tcp
Habilitar conexiones TCP al puerto 80
Si usted tiene instalado un servidor Web como Apache 2, debe ser garantizado el acceso al mismo por puerto 80:
$ sudo ufw allow in 80
Si en algún momento requiere remover esta regla, ejecute el siguiente comando:
$ sudo ufw delete allow in 80
Bloqueo de servicios
Bloquear el tráfico SMTP saliente, si su servidor solo será empleado para enviar correo interno (dentro del mismo servidor), es posible que quiera bloquear el correo saliente, el cual emplea el puerto 25, para esto ejecute el siguiente comando:
$ sudo ufw deny out 25
Si en algún momento requiere remover esta regla, ejecute el siguiente comando:
$ sudo ufw delete deny out 25
Bloque de URL
Para bloquear una URL usando reglas iptables, usted debe denegar todas las conexiones entrantes desde la dirección vtv.gob.ve, ejecute el siguiente comando:
$ sudo iptables -A INPUT -p tcp -s vtv.gob.ve -d 127.0.0.1 \ --dport 80 -j DROP
Denegar todas las conexiones de salida hacia la dirección vtv.gob.ve, ejecute el siguiente comando:
$ sudo iptables -A OUTPUT -p tcp -d www.vtv.gob.ve \ --dport 80 -j DROP
Si en algún momento requiere remover esta regla, ejecute el siguiente comando:
$ sudo iptables -D INPUT -p tcp -s vtv.gob.ve -d 127.0.0.1 \ --dport 80 -j DROP $ sudo iptables -D OUTPUT -p tcp -d www.vtv.gob.ve \ --dport 80 -j DROP
Redireccionamiento de puertos
Lo primero será que debemos tener habilitado el forwarding en el servidor, para ello pondrá lo siguiente:
$ echo "1"> sudo /proc/sys/net/ipv4/ip_forward
También pueden usar este otro comando, en caso de que el anterior no les funcione, ejecutando lo siguiente:
$ sudo sysctl net.ipv4.ip_forward=1 $ sudo sysctl -a | grep net.ipv4.ip_forward
Próximo, es habilitar las nuevas configuraciones al archivo de configuración, con el siguiente comando:
$ sudo sysctl -p
Luego reinicie el servicio de red:
$ sudo service networking restart
Supongamos que se requiere redireccionar el tráfico del puerto 8080 al 443 en el mismo servidor con una IP en específica, sería agregando el parámetro -s… ej. redireccionaré solo el tráfico que venga desde 192.168.0.101, para ello, ejecute el siguiente comando:
$ sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.0.101 \ --sport 8080 -j DNAT --to-destination 192.168.0.101:443 $ sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.0.101 \ --dport 8080 -j DNAT --to-destination 192.168.0.101:443
Y finalmente necesita enmascarar la dirección IP, para que el destino reciba el tráfico con la IP del servidor fuente:
$ sudo iptables -t nat -A POSTROUTING -j MASQUERADE
Usted comprobar las reglas iptables puede ver las reglas crudas del cortafuegos, ejecutando el siguiente comando:
$ sudo ufw show raw | grep 192.168.0.101 Chain PREROUTING (policy ACCEPT 13 packets, 4364 bytes) pkts bytes target prot opt in out source destination 0 0 DNAT tcp -- * * 192.168.0.101 0.0.0.0/0 tcp dpt:8080 to:192.168.0.101:443
Si después requiere deshabilitar el cortafuegos, ejecute el siguiente comando:
$ sudo iptables -t nat -D PREROUTING -p tcp -s 192.168.0.101 \ --sport 8080 -j DNAT --to-destination 192.168.0.101:443 $ sudo iptables -t nat -D PREROUTING -p tcp -s 192.168.0.101 \ --dport 8080 -j DNAT --to-destination 192.168.0.101:443 $ sudo iptables -t nat -D POSTROUTING -j MASQUERADE
Conclusiones
De esta forma usted ha aprendido a:
- Instalar un cortafuego usando UFW.
- Configurar básicamente el funcionamiento UFW.
- Crear políticas de permisos en su cortafuego para su servidor.
- Gestionar el cortafuegos con los comando más comunes.
- Auditar el registro de eventos del cortafuegos con UFW y iptables.
- Probar el funcionamiento de las políticas del cortafuegos usando utilidades más comunes.
Referencias
- Cortafuegos (informática) – Wikipedia, la enciclopedia libre
- Netfilter – Wikipedia, la enciclopedia libre
- Uncomplicated Firewall – Wikipedia, la enciclopedia libre
- 7.4.1 UFW [Servidor Debian]
- Cortafuegos – Ubuntu Documentation
- es/HowTos/Network/IPTables – CentOS Wiki
- Firewall with UFW · examples/ufw.md at master · jpfluger/examples · GitHub
- https://blog.desdelinux.net/redireccionar-trafico-iptables/
- http://www.tldp.org/HOWTO/Ethernet-Bridge-netfilter-HOWTO-4.html#TESTING_iptables_listing
¡Haz tu donativo!
Si te gusto este articulo, por favor, ayúdame a seguir escribiendo este tipo de articulo, haciendo donativos en Dolares vía el servicio Paypal haciendo clic aquí o en la siguiente imagen.