Saltar a contenido

Bastionado de wordpress1

Para mejorar la seguridad de nuestro servidor Wordpress, configuraremos un cortafuegos que solo permita acceso a los puertos que hemos abierto explícitamente, además, nos aseguraremos de que la única máquina con permisos para iniciar conexiones HTTP/HTTPS/SSH sobre wordpress1 sea solo frontera1.

También modificaremos el servicio SSH para que este solo permita el uso de llaves públicas para iniciar sesión, lo cuál bloqueará completamente cualquier intento de ataque por fuerza bruta.

Cortafuegos

Desactivar IPv6

Ya que el protocolo IPv6 no será utilizado en la red interna, desactivaremos el uso de este para mejorar la seguridad de nuestra red, para ello podemos editar el archivo /etc/default/ufw y modificar la siguiente línea:

IPV6=no

Creación de reglas

Las reglas que deseamos aplicar en nuestro cortafuegos son las siguientes:

  • Bloquear por defecto cualquier petición entrante.
  • Permitir todas las peticiones al exterior.
  • Solo permitir las peticiones entrantes por los puertos TCP 22 y 8080 que vengan de frontera1.

Para conseguir esto utilizaremos los siguientes comandos:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow proto tcp from 192.168.6.254 to any port 22,8080

Warning

Algo importante a tener en cuenta es que se tendrá que modificar la configuración de wordpress1 en el archivo ~/.ssh/config para poder hacer el salto primero a pve1 y después a frontera1 antes de poder conectarse al servidor en vez de solo a pve1.

Host frontera1
  HostName 192.168.6.254
  User raul
  Port 22
  Proxyjump pve1

Host wordpress1
  HostName 192.168.6.253
  User raul
  Port 22
  Proxyjump frontera1

Una vez las hayamos configurado correctamente, activaremos las reglas con el comando sudo ufw enable, ahora, si intentamos acceder a estos puertos desde cualquier máquina que no sea frontera1, podremos ver como las peticiones son rechazadas.

Funcionamiento exitoso del cortafuegos.

Funcionamiento exitoso del cortafuegos.

Como se puede ver, tanto las peticiones al puerto 8080 como al puerto 22 de la máquina son rechazadas si estas no son iniciadas por frontera1.

Note

Para poder listar las reglas configuradas en la máquina se puede utilizar el siguiente comando:

sudo ufw status numbered

Si se desea borrar alguna regla, se puede utilizar el comando sudo ufw delete $REGLA donde $REGLA sea el número utilizado en la lista para esta.

SSH

Mientras que hay múltiples maneras de mejorar la seguridad de un servidor SSH, la más sencilla de implementar que utilizaremos será configurando la siguiente directiva en el archivo /etc/ssh/sshd_config:

PasswordAuthentication no

Una vez configurado el archivo, nos aseguraremos de configurar una llave SSH en el servidor para no quedarnos encerrados fuera de este y reiniciaremos el servicio SSH.

ssh-copy-id wordpress1
ssh wordpress1
sudo systemctl restart ssh

De esta manera solo se permitirá acceso por SSH si el cliente está utilizando una llave pública, lo cual mejora considerablemente la seguridad de nuestro servidor.