Como proteger tu servidor o Raspberry

Este es uno de los capítulos del tutorial Servidor virtual. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.

Con independencia de que tu servidor sea una Raspberry Pi o un VPS alojado en cualquier proveedor, es indudable que tienes que proteger tu servidor. Evidentemente cuanto mas expuesto está mas ataques es susceptible de sufrir. Para un pececillo, no es lo mismo encontrarse en una charca que en medio del óceano. Y ojo, que no tienen porque ser seres humanos los que ataquen nuestro servidor, pueden ser robots, que escaneen los puertos que hay abiertos en busca de una vulnerabilidad.

¿Podemos protegernos ante ataques? Si. ¿Estaremos totalmente seguros? No. Sin embargo, entre nuestras obligaciones se encuentra, sin lugar a dudas, la de poner las mayores trabas posibles para que alguien pueda acceder a nuestro servidor, o que simplemente nos tumbe algún servicio.

Dentro de las herramientas disponibles para dificultar el acceso de extraños a nuestro servidor está el cortafuegos. El cortafuegos está implementado en el propio kernel de Linux, y para configurarlo se utiliza iptables. Sin embargo, dada la complejidad de esta herramienta, puedes utilizar UFW.

Como proteger tu servidor o Raspberry

UFW o como proteger tu servidor

En el artículo sobre primeros pasos con tu VPS, ya comenté algunos detalles sobre como UFW. El objetivo de este artículo, es entrar en detalle de esta sencilla herramienta de configuración del cortafuegos.

Lo primero, y mas evidente, es que no instales un servicio que no vayas a utilizar. No hay que dejar puertas abiertas. Esto es sentido común, pero, como dicen, el sentido común, es el menos común de los sentidos. Lo cierto es que en ocasiones, es posible, que dejes de utilizar un servicio, y este se quede levantado… Tenemos que evitar estas circunstancias… Dicho esto, vamos a ver que es eso de UFW, y como podemos trabajar con él en el caso de un servidor.

Para el caso de un entorno de escritorio, te recomiendo Gufw. Una sencilla e intuitiva aplicación desarrollada por Marcos Costales.

En el caso de un servidor, sin interfaz gráfica, no te queda mas remedio que hacerlo vía ssh. En este caso es cuando puedes utilizar UFW, para configurar iptables.

¿Que es UFW?¿Como te puede ayudar a proteger tu servidor?

UFW no es mas que una herramienta de configuración de tu cortafuegos. Realmente, UFW, no trabaja sobre el cortafuegos incluido en el núcleo de Linux, sino que lo hace sobre iptables. UFW te facilita de una forma sencilla la gestión de iptables.

Habilitar y deshabilitar UFW para proteger tu servidor

Cuando habilitas UFW, se establecen una serie de reglas que viene configuradas por defecto.

Para habilitar UFW, simplemente tenemos que ejecutar,

sudo ufw enable

Para comprobar el estado de UFW

sudo ufw status verbose

Al ejecutarlo encontrarás algo como

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

Si te das cuenta todas las entradas, aparentemente, son denegadas. Existen excepciones. Estas excepciones las puedes ver ejecutando,

sudo ufw show raw

Puedes ver todas las reglas en el directorio /etc/ufw/. Son todos los archivos con extensión .rules.

Por último para deshabilitar el cortafuegos, es tan sencillo como ejecutar,

sudo ufw disable

Creando reglas específicas

Para crear una regla tanto de permiso como denegación, tan solo tienes que ejecutar esta orden,

  • Para permiso sudo ufw allow <port>/<optional: protocol>
  • Para denegación sudo ufw deny <port>/<optional: protocol>

Algunos ejemplos,

sudo ufw allow 80
sudo ufw allow 80/tcp
sudo ufw allow 80/udp

El primero permite el acceso por el puerto 80 utilizando tanto el protocolo tcp como el udp, mientras que los siguientes, solo permiten uno de los dos protocolos. El puerto 80 es el que se utiliza para la conexión web. Con lo que si tienes una página web este puerto debería estar abierto. Si además utilizas HTTPS, también debería estar abierto el puerto 443.

Lo mismo podemos hacer para el tema de la denegación de acceso,

sudo ufw deny 80
sudo ufw deny 80/tcp
sudo ufw deny 80/udp

Borrando reglas

Al igual que añadimos reglas, también podemos eliminarlas. Así, por ejemplo, para borrar alguna de las reglas anteriores, solo tendremos que indicar la regla a borrar. Por ejemplo para borrar deny 80/tcp la orden a ejecutar es,

sudo ufw delete deny 80/tcp

Sin embargo, esta forma de borrar reglas te puede llevar a mas de un error. Otra opción muy interesante de realizar el borrado de reglas es utilizar, primero la siguiente orden,

sudo ufw status numbered

Esto nos devuelve las reglas que tenemos definidas pero numeradas. El resultado es algo como lo que puedes ver a continuación,

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 80/tcp                     ALLOW IN    Anywhere
[ 2] 443/tcp                    ALLOW IN    Anywhere

De esta forma, borrar una regla es algo muy sencillo. Así, por ejemplo, para borrar la regla 2, tan solo tenemos que ejecutar la orden,

sudo ufw delete 2

De hacerlo de esta manera, antes de borrar una regla te preguntará si efectivamente, esa es la regla que quieres borrar. Por ejemplo,

Deleting:
 allow 22/tcp
Proceed with operation (y|n)? y
Rule deleted (v6)

Trabajando con servicios

Otra opción interesante que nos ofrece UFW es la de trabajar directamente con servicios para proteger tu servidor. Esto es así, porque UFW lee de /etc/services. Igualmente, tu, si quieres conocer los servicios disponibles, tan solo tienes que ejecutar,

less /etc/services

Igual que hicimos en el caso de configurar puertos, también lo podemos hacer con los servicios. Así tenemos,

  • Para permitir un servicio sudo ufw allow <nombre del servicio>
  • Para denegar un servicio sudo deny deny <nombre del servicio>

De la misma manera para borrar la regla sudo delete allow/deny <nombre del servicio>.

Por ejemplo, para permitir rsync,

sudo ufw allow rsync

Trabajando con IP

No solo podemos configurar el acceso a puertos y protocolos, sino que también podemos permitir o denegar el acceso desde determinadas IP o rango de IP. Por ejemplo, para habilitar el acceso desde una IP,

sudo ufw allow from <IP>

Por ejemplo, para permitir el acceso desde la IP 111.222.111.444,

sudo ufw allow from 111.222.111.444

Si queremos dar acceso a un rango de IP

sudo ufw allow from 111.222.111.0/24

Si además quisieramos especificar un puerto determinado, por ejemplo el puerto de ssh, esto se convertiría en,

sudo ufw allow from 111.222.111.0/24 to any port 22

Configurando accesos por defecto

Es posible desde UFW configurar accesos por defecto para proteger tu servidor. En este caso, UFW considera la denegación de todas las conexiones entrantes, mientras que permite todas las conexiones salientes. Es decir, que cualquiera que quiera acceder a tu servidor o a tu propio ordenador no lo podrá hacer. Por el contrario, cualquier aplicación que esté en tu servidor o ordenador, podrá acceder a internet sin problemas.

Así, para establecer las reglas por defecto, tienes que ejecutar las siguientes órdenes,

sudo ufw default deny incoming

y

sudo ufw default allow outgoing

Por supuesto, también puedes denegar todas las conexiones salientes.Para ello, ejecuta,

sudo ufw default deny outgoing

Limitando el acceso

Otra interesante opción que tiene UFW es la limitar el acceso. Se trata de una forma sencilla de proteger tu servidor. ¿En que consiste esto de limitar el acceso?. Se trata de denegar el acceso desde una dirección IP cuando se han intentado 6 o mas conexiones en los últimos 30 segundos.

Esta opción es realmente interesante para servicios como puede ser SSH. Por ejemplo, en este caso, podemos ejecutar la orden,

sudo ufw limit ssh

El resultado será el siguiente,

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 80/tcp                     ALLOW IN    Anywhere
[ 2] 443/tcp                    ALLOW IN    Anywhere
[ 3] 22/tcp                     LIMIT IN    Anywhere
[ 4] 80/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 5] 443/tcp (v6)               ALLOW IN    Anywhere (v6)
[ 6] 22/tcp (v6)                LIMIT IN    Anywhere (v6)

Reseteando

Por último, es posible que quieres dejar la configuración de tu cortafuegos conforme se encontraba antes de que le metieras mano. Si quieres dejar el cortafuegos con su configuración inicial, solo tienes que ejecutar,

sudo ufw reset

Conclusión

No es necesario que te hable sobre la importancia de tener el acceso a tu servidor o ordenador protegido, para evitar ataques. Con este sencillo artículo, sobre como proteger tu servidor, puedes definir y personalizar la configuración de tu cortafuegos para que se adapte a tus necesidades. Espero sinceramente que te sea de utilidad.


Más información,

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *