Firewall (Cortafuegos)

Los sistemas operativos de la familia Gnu/Linux, dentro de los que se encuentran Debian y Ubuntu, incorporan en su núcleo un programa llamado IPTables, el cual es un cortafuegos (firewall) que funciona en segundo plano e inicia en cuanto arranca el sistema operativo. Básicamente permite o deniega el tráfico de paquetes originados en conexiones entrantes o salientes (las conexiones se forman siempre a partir de una dirección IP y un puerto). Sin embargo, en la mayoría de distribuciones, el cortafuegos no está configurado de forma predeterminada. Una manera fácil de configurarlo y administrarlo es instalando el programa Gufw (Graphical Uncomplicated Firewall, Cortafuegos Gráfico Sin complicaciones). Para instalarlo podemos ejecutar desde una terminal:

# apt-get install gufw

Ahora contamos con una interfaz gráfica desde la cual podemos configurar las reglas de tráfico desde y hacia nuestra computadora:

Interfaz Gufw

Imagen 01: Interfaz de Gufw

Inicialmente se encuentra desactivado, lo cual se indica con el logotipo del escudo en color gris. Para activarlo basta hacer click en el botón que se encuentra a un costado del campo Estado, lo que hará que el escudo cambie de color:

Habilitar Cortafuegos

Imagen 02: Habilitar Cortafuegos

Al realizar esta acción hemos configurado una serie de reglas básicas que, por defecto, deniegan todas las conexiones entrantes (Entrante: Deny) y permiten todas las conexiones salientes (Saliente: Allow), aunque podemos modificar su comportamiento desde las listas desplegables que aparecen al costado de los campos Entrante y Saliente. Este es el enfoque más utilizado por usuarios que no ejecutan servicios que escuchen y acepten conexiones (por ejemplo un servidor web o descargas por archivos torrents en redes par-a-par o peer-to-peer como Azureus), ya que nos permite realizar conexiones desde nuestra computadora hacia la red local (por ejemplo conexiones a través del protocolo Samba para compartir archivos) o Internet (Thunderbird, Firefox, Pidgin, Skype), y denegar todas las conexiones que provienen de cualquier lugar. Al cerrar la ventana de Gufw, las reglas se mantendrán configuradas.

La siguiente vez que abramos el programa, aparecerá un botón con la leyenda Unlock (Desbloquear). En caso de que queramos ver o modificar las reglas, necesitaremos hacer click en él:

Desbloquear

Imagen 03: Desbloquear

En seguida nos pedirá escribir nuestra contraseña de administración (generalmente la misma con la que iniciamos sesión) o de superusuario:

Contraseña de administrador

Imagen 04: Contraseña de administrador

Se mostrará nuestra configuración actual. En caso de que necesitemos abrir un puerto, es decir, habilitar conexiones entrantes para determinados programas, haremos uso del botón con el símbolo + que se encuentra en la parte inferior izquierda de la ventana:

Agregar regla

Imagen 05: Agregar regla

Se nos mostrará una ventana de configuración de reglas con tres pestañas: Preconfigurada, Simple y Avanzada:

Regla preconfigurada

Imagen 06: Regla preconfigurada

La mayoría de las aplicaciones o servicios utilizan puertos predefinidos para otorgar conexiones, por ejemplo, el servicio SSH (secure shell) utiliza el puerto 22, el servicio FTP el puerto 21, el servicio HTTPS el puerto 443, etc. En la pestaña Preconfigurada podemos configurar el tráfico de paquetes para aplicaciones o servicios determinados. La primer lista desplegable nos permite definir el trato que se dará a una conexión:

Allow: Permitir
Deny: Denegar
Reject: Rechazar
Limit: Limitar

La segunda definirá su origen:

In: Entrada
Out: Salida

La tercera nos permitirá elegir si se trata de una aplicación o de un servicio:

Aplication: Aplicación
Service: Servicio

Y la última lista desplegable cambiará según el valor que hayamos elegido en la lista anterior, mostrando una serie de aplicaciones o servicios según sea el caso. En la imagen anterior hemos definido la siguiente regla: Permitir la entrada de conexiones del servicio SSH. Una vez que hayamos seleccionado la regla que queremos agregar, haremos click en el botón Añadir, lo cual generará un par de entradas en la tabla de reglas:

Regla agregada

Imagen 07: Regla agregada

La primera pertenece al protocolo de comunicación IPv4 (Internet Protocol versión 4), que es el más extendido, mientras que la segunda pertenece al protocolo IPv6.

En algunos casos necesitaremos definir el puerto que se usará, ya sea para aplicaciones conocidas o desconocidas, por ejemplo, un servidor web que escucha en el puerto 8080 en vez de usar el puerto común (puerto 80). Usaremos las pestañas Simple o Avanzada, dependiendo del nivel de configuración que deseemos proporcionar. En la pestaña Simple definiremos, además de los dos primeros campos (allow-deny/in-out), el protocolo que usará la regla y el número de puerto. Los protocolos que se pueden usar son TCP y UDP (o ambos), y depende de la aplicación o servicio si usará uno u otro. En la pestaña Avanzada, además de lo anterior, definiremos un rango de direcciones IP origen y destino desde el cual se pueden establecer conexiones, con el fin de restringir el acceso a redes específicas.

Veamos un ejemplo en una red local que usa direcciones IP en el rango 100.70.0.1/24 (100.70.0.10, 100.70.0.11, 100.70.0.12, etc.). Imaginemos que un equipo de la red está ejecutando un servicio web como Apache, en la dirección 100.70.0.100, en el puerto 8080.

Para habilitar el tráfico interno desde cualquier computadora de la red local hacia el servicio web necesitamos definir una regla que permita [allow] la entrada [in] de conexiones que usan el protocolo TCP [TCP] y se originan desde cualquier equipo de la red local [Desde 100.70.0.1/24], desde cualquier puerto [campo en blanco], con destino hacia la computadora que ejecuta el servicio web [100.70.0.100] en el puerto 8080 [8080]. A partir de esta información construimos la siguiente regla:

Regla avanzada

Imagen 08: Regla avanzada

Nota: La dirección 100.70.0.1/24 es equivalente al rango de direcciones 100.70.0.1-100.70.0.255.

Podemos quitar reglas añadidas seleccionándolas y usando el botón con el símbolo -, que se encuentra en la parte inferior izquierda de la ventana. Los cambios se actualizan de manera automática e inmediata.