Skip to main content

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

 

 

 

 

Cómo instalar servidor LAMP en Ubuntu 13.10 Server

Instalar servidor LAMP en Ubuntu 13.10 Server (Linux, Apache, MySQL, PHP)

En esta entrada vamos a ver cómo instalar un servidor LAMP (Linux, Apache, MySQL y PHP) en Ubuntu 13.10 Server. Un servidor LAMP es una poderosa combinación de aplicaciones que permiten desplegar aplicaciones web basadas en el lenguaje PHP y la base de datos MySQL. Todos estos componentes son open source, con todas las ventajas que ello implica.

Linux es el sistema operativo por excelencia para desplegar servidores en Internet. Entre ellos los servidores LAMP. Apache es una aplicación de servidor web HTTP que permite servir páginas HTML a navegadores web. MySQL es un servidor de base de datos que permite a las aplicaciones disponer de un medio de almacenamiento estructurado y persistente. Finalmente PHP es un lenguaje de script con una curva de aprendizaje suave y que permite realizar poderosas aplicaciones web.

Instalación

Instalar servidor LAMP en Ubuntu 13.10 Server es realmente fácil. Tan solo debemos lanzar la siguiente orden en un terminal:

sudo apt-get install lamp-server^

Esto inicia al gestor de paquetes la tarea de instalar un servidor LAMP estándar. En el proceso de descarga e instalación de los paquetes que conforman un servidor LAMP nos pedirá la contraseña que queremos tenga el usuario root de la base de datos MySQL.

Una vez concluida la instalación podemos comprobar que se instaló correctamente Apache. Una forma sencilla de hacerlo es mediante un navegador web y escribiendo en la barra de direcciones la dirección IP del servidor.
Otra opción es, como disponemos del comando curl en Ubuntu 13.10 Server podemos lanzarlo en local y ver si nos muestra la web por defecto. El comando es:

curl -i localhost

Y dará una salida similar a:

Apache funciona correctamente

Para comprobar si PHP funciona correctamente podemos crear un sencillo script y ver si realiza su función.

Creamos el script con:

sudo nano /var/www/info.php

Y copiamos el siguiente código en él:

<?php
phpinfo();
?>

Finalmente guardamos los cambios pulsando CTRL+O, RETURN, CTRL+X.

Ahora podemos apuntar en un navegador a la dirección URL del servidor LAMP. Puede ser algo como localhost/info.php o ipdelservidor/info.php donde cambiaremos ipdelservidor por la adecuada. También podemos usar el comando curl como hemos visto antes aunque nos bastará con:

curl -I localhost/info.php

Si ejecutamos el script en navegador podemos ver si entre la información que muestra aparece la relativa al servidor MySQL y así determinar que funciona correctamente.

En el siguiente vídeo podemos ver la realización de la presente guía.

Cómo identificar el sistema operativo Linux instalado

Con estas ordenes podremos identificar el sistema operativo Linux instalado en el equipo informático.

En ocasiones deberemos determinar el tipo de sistema Linux instalado. Esto es importante para saber las posibilidades del sistema y actuar en consecuencia. Las siguientes ordenes nos permiten identificar el sistema operativo.

Estas ordenes son para ejecutarlas en una terminal. Por ello deberemos tener una abierta y disponible para la introducción de ordenes. Dependerá del entorno, pero normalmente la combinación de teclas CTRL+ALT+T muestra una terminal. En un servidor lógicamente deberemos estar ante un terminal, sea físicamente o mediante conexión SSH.

La primera orden que nos podrá servir es:

Y nos responderá con algo como:
Otra orden que nos dará valiosa información es:
Y mostrará algo como:
Y finalmente para cerrar esta breve entrada veamos:
dando lugar a una salida como:
Como se puede deducir, estas ordenes para identificar el sistema operativo han sido probadas en un Ubuntu 13.10 Saucy Salamander. Si bien serán validas en casi todas las distribuciones Linux, derivadas de Debian o no.