La seguridad es un aspecto muy importante en un sistema informático y en demasiadas ocasiones muy poco cuidado. Conseguirla en valor absoluto es imposible, pero se pueden obtener niveles aceptables utilizando, configurando y manteniendo las herramientas adecuadas. A primera vista puede parecer que es muy complicado realizar ésa labor, y reservada solo para usuarios experimentados; para intentar rebatirlo os presentaré a Gufw, o Graphical Uncomplicated FireWall.
Como ya podéis observar en el nombre de éste estupendo cortafuegos, uno de sus principales objetivos es ofrecer una herramienta fácil de usar, en la que no nos perdamos en un mar de menús y donde no haya que saber demasiado de informática para dominarlo. Es una interfaz gráfica del cortafuegos desarrollado por Ubuntu llamado Uncomplicated FireWall que a su vez es una implementación del poderorsísimo IpTables. Personalmente Ufw me gusta muchísimo, ya que cumple con creces lo que comunménte se le demanda a un cortafuegos y además es muy sencillo de manejar; por extensión, de Gufw solo tengo palabras buenas ya que no ha desvirtuado para nada el espíritu de Ufw y ofrece una interfaz gráfica que sin duda ayudará a los alérgicos de la consola.
Para empezar a explicar cómo funciona Gufw y ya que es una herramienta destinada a los recién llegados a GNU/Linux, voy a explicar brevemente cómo funciona un cortafuegos. Un firewall no es más que un programa que analiza los paquetes que pasan a través de él para decidir en base a unas reglas si retransmite o rechaza el paquete estudiado. Antes de seguir, quiero incidir en un punto que considero bastante importante; en la definición anterior he dicho que un cortafuegos es un programa, y como tal puede ser instalado en cualquier equipo. Para explicarlo planteemos el siguiente escenario, supongamos que me conecto a internet a través de un router. Para filtrar mi tráfico (es decir, el que genero y el que recibo) puedo instalar el firewall en tres posiciones. La primera es instalarlo en mi equipo, de ésta forma será mi ordenador el que filtre mis paquetes; la segunda es instalarlo en un equipo entre mi ordenador y el router de tal manera que será él quien filtre mi tráfico; la tercera opción es instalarlo en el router, ya que como por él pasa el trafico destinado y generado para y por mi equipo está capacitado para filtrarlo. Dependiendo de dónde lo instale tendré que configurar un equipo u otro. Lo digo porque probablemente tendrás un router con un cortafuegos instalado, y sería conveniente que revisases la configuración a menudo, o que lo deshabilitaras y usaras en su lugar en cada uno de los equipos conectados al router éste u otro cortafuegos.
Ahora pasemos al verdadero funcionamiento del firewall. Cualquier cortafuegos funciona en base a unas reglas que definen el tráfico que rechazarán y el que permitirán (muy simplificado, ya que con IpTables otros comportamientos intermedios son posibles, pero éso te lo dejo para que lo investigues tú XD). Pero, ¿qué tipo de reglas? Pues unas reglas formadas por campos que definen a un paquete de datos. Vamos con el ejemplo; supongamos que realizo una conexión con un servidor para bajarme por FTP un archivo, y que a la vez estoy navegando con peticiones HTTP. Aunque los dos paquetes son muy parecidos, difieren en una característica (más bien varias) ya que por ejemplo no utilizan el mismo protocolo en nivel de aplicación. Por tanto, si defino una regla del firewall para que no permita paquetes FTP, me será imposible bajarme el archivo pero podré navegar con total comodidad. Así pues, si estudio los paquetes y soy capaz de averiguar el valor de algunos campos clave seré capaz de filtrarlos. Ésos campos clave por ejemplo son el tipo de protocolo, puertos TCP o UDP, direcciones IP, direcciones MAC y otros campos menos conocidos como el TOS, MTU o el windowing.
En definitiva, y si os habéis perdido por el camino (espero que no) las reglas le dicen al cortafuegos: “Todo paquete que tenga esta pinta lo vas a rechazar/permitir.” Son ésas reglas las que tenemos que definir a mano en cualquier cortafuegos. Por último, para comprender el funcionamiento de un cortafuegos es necesario hablar de las políticas por defecto. Una política por defecto es todo tratamiento que recibe un paquete si no se ha encontrado ninguna regla que lo defina. Es decir, supongamos que en el ejemplo anterior tan solo tengo definida una regla que rechaza las peticiones FTP pero estoy realizando una conexión SSH; como no tengo definida ninguna regla para paquetes SSH, el firewall aplicará la política por defecto, que a grosso modo puede ser permitir o rechazar el paquete.
Para sintetizarlo todo, un cortafuegos analiza cada paquete que pasa a través de él y mira el valor de algunos campos clave, contrasta ésos valores con las reglas definidas, si concuerda aplica la regla y si no hay ninguna regla que coincida, aplica la política por defecto. Qué decir tiene que lo más seguro es elegir una política por defecto que rechace todo e ir definiendo reglas para permitir ciertos paquetes. Ahora unas capturas de pantalla de Gufw que espero que puedas interpretar sin ningún problema si has entendido la explicación:
En esta captura puedes ver cómo el cortafuegos está activado, la política por defecto es de rechazar (lo adecuado) y se han definido varias reglas. La primera deja pasar tráfico generado mediante Transmission (puerto 51413, aunque también pude ser dinámico), la segunda deja pasar tráfico del protocolo pop3 (puerto 110), la tercera deja pasar paquetes FTP (puerto 21) y la cuarta y última espero que os sea familiar ya que es el puerto de control de tor XD. Si pincháis en Añadir accederéis al cuadro de diálogo que define las reglas:
Como veis dispone de tres modos, preconfigurado, simple y avanzado. Si escoges Preconfigurado, en el primer desplegable defines la acción a realizar (permitir, denegar, rechazar o limitar), el segundo te sirve para elegir entre “programa” y “servicio” que te permitirá añadir reglas que han sido preconfiguradas para simplificar todo el proceso. Por ejemplo, puedes añadir reglas para permitir Amule o Transmission sin saber los puertos en los que escucha.
Esta pestaña es la que más veces vas a usar ya que te permite filtrar un paquete según el protocolo y puerto. El primer desplegable sirve para definir la acción (igual que el anterior), el segundo te permite elegir entre dos protocolos de transmisión de datos (TCP o UDP) y el tercero el puerto al que va destinado el paquete.
En esta pestaña además te ofrecen la posibilidad de filtrar los paquetes según la dirección del remitente y destinatario. La verdad es que tan solo es usable cuando tengas configurada la red con un hub y no segmentes la red o cuando actúes como puerta de enlace de otro equipo. Está muy bien que la hayan inlcuído pero si la tienes que utilizar sería más conveniente que utilizases otra implementación de IpTables que te permita definir más condiciones.
Además, el programa permite realizar logs aprovechando la funcionalidad que provee ufw. Para activarlos vete a Editar->Preferencias y habilita tanto el registro de Gufw como el de Ufw estableciendo un nivel orientativo de registro.
Este artículo tan solo ha pretendido ser una aproximación a cómo configurar un cortafuegos. Es muchísimo más complejo y para conseguirlo configurar medianamente bien se necesitan varios artículos como éste que espero algún día poder escribir en PillateUnLinux. Ufw puede dar mucho más de sí y os recomiendo a todos que echéis un vistazo a las páginas del manual, para que descubráis un cortafuegos facilísimo de manejar y bastante potente si se sabe utilizar bien. De Gufw decir que cumple con lo previsto: una forma de configurar un cortafuegos para montar la primera línea de defensa frente a posibles ataques.
Lo dicho, si no tienes ningún cortafuegos instalado en tu distribución favorita haz click aquí y descárgate Gufw; la excusa de no configurarlo por ser complicado acabó cuando decidiste llegar hasta éste párrafo. Por cierto, está en los repositorios de Ubuntu y en los estables de Debian. Para todos aquellos que tengáis un gestor de paquetería derivado de rpm lo tendréis que instalar desde el código fuente o con el alien. Todo es probar XD.