Skip to main content

ERROR: initcaps [Errno 2] iptables: Chain already exists

La aplicación UFW no es más que una herramienta que reduce la complejidad del uso del cortafuegos incluido en el núcleo de Linux, un frontend, por lo que quien de verdad protege nuestro servidor es iptables. Usar UFW realmente cómodo y sencillo para  configurar el cortafuegos de Linux. Pero como herramienta de software UFW puede suceder algún error al insertar reglas en iptables.

Esto mismo es lo que me ha pasado recientemente, y como consecuencia no podía ni añadir nuevas reglas ni eliminar otras antiguas. El error que me mostraba era:

La solución de este problema ha sido sencilla usando la siguiente secuencia de ordenes.

Evidentemente si nos es necesario usaremos sudo para ejecutar como root las ordenes anteriores.

Probado en Ubuntu 14.04 Server.

 

ERROR: initcaps [Errno 2] iptables: Chain already exists

Cómo bloquear una IP con UFW en Ubuntu 14.04

Los sistemas Linux vienen equipados desde el núcleo con un poderoso cortafuegos  de red (firewall) llamado Iptables. Un cortafuegos es una aplicación que limita o bloquea el acceso a los servicios de red disponibles en el equipo.  Para manejar más cómodamente este cortafuegos es habitual encontrar y usar en servidores Ubuntu una utilidad llamada UFW, acronimo de Uncomplicated Firewall.

En esta entrada solo vamos a mostrar la forma de bloquear una IP con UFW. ¿Por qué querríamos hacer esto? Es posible que haya algún moscón buscando alguna vulnerabilidad en alguno de nuestros servidores y las herramientas instaladas para frenarlo no lo hayan logrado. Aunque debemos buscar el porqué las herramientas no funcionaron, una rápida respuesta será bloquear manualmente al moscón. Por ejemplo, recientemente, un moscón de estos se tiró un rato incordiando el wp-login.php de uno de los sitios que administro y el bueno de Fail2ban no se dio por enterado. Así que mientras pulo y doy cera a las reglas de Fail2ban un bloqueo a la IP del moscón atajará el problema.

UFW funciona añadiendo reglas para cada situación. Estas reglas tienen un preferencia. El nivel más bajo 1 tiene la máxima preferencia y el último la menor. Así, si tenemos una regla que permite el acceso a todo (por ejemplo la 30) y posteriormente una que lo limita parcialmente, esta segunda (por ejemplo la regla 50) no será tenida en cuenta. Esta es la primera posible razón por la que si añadimos reglas mediante UFW no nos funcionen.

Veamos:

La orden anterior logra bloquear una IP con UFW permanentemente siendo 216.17.104.32 la de mi atacante y que obviamente cambiarás por la del tuyo. Así cuando apunte a nuestro servidor recibirá silencio por respuesta. Pero si no hubiéramos añadido insert 1 al principio, la regla se habría añadido al final de la cola de reglas y no se habría ejecutado nunca ya que previamente, como es un servidor web, permitimos mediante otra regla el acceso a todo el mundo en el puerto 80. Al añadir el insert 1 nuestra nueva regla se añade al principio y todas las demás se retrasan un nivel. Ten en cuenta que deberás ser root y que un sudo previamente puede ser necesario.

Si quieres saber más sobre el uso de UFW podemos visitar la ayuda que ofrece Ubuntu. Una orden relacionada que debes tener a mano y que nos permite ver la lista ordenada de las reglas en UFW.

Si cambiamos de opinión y queremos volver a dar acceso a nuestro servidor al moscón, sabiendo el orden de las reglas puedes borrar una por su indice y tendrá nuevamente acceso:

El apunte aquí descrito funciona en servidores Ubuntu Server 12.04 LTS y Ubuntu Server 14.04 LTS. Aunque probado en estas versiones sin duda no estará limitado a ellas y con seguridad funcionará en cualquier otro entrono semejante, Ubuntu, Debian o Linux donde este instalado UFW.

ubuntu

 

 

 

 

Configurar cortafuegos UFW en servidor Ubuntu 12.04 LTS

Uncomplicated Firewall o UFW es un cortafuegos básico que funciona muy bien y es sencillo de configurar.

Para instalarlo:

sudo apt-get install ufw

Una vez instalado podemos conocer el estado del cortafuegos con:

sudo ufw status verbose

Que en este paso nos dirá que esta inactivo.

Agregamos una reglas para los servicios ssh y http:

sudo ufw allow ssh
sudo ufw allow http

Y ahora lo activamos sin que interrumpa la conexión ssh al servidor con:

sudo ufw enable

Podemos probar que tal hace su trabajo si lo tenemos instalado con nmap:

sudo nmap -r -v -O servidor.com

Donde servidor.com lo sustituimos por nuestro servidor.