Firewall para Ubuntu con CrowdSec para WordPress

Última revisión: 2 de octubre de 2021

Disponer de un cortafuegos (firewall) a nivel de Sistema Operativo no es una tarea sencilla habitualmente, y por eso solemos instalarlos como WAF para WordPress… pero ¿y si hubiera un firewall sencillo de instalar y mantenido por la comunidad?

CrowdSec es un cortafuegos multijugador masivo de código abierto capaz de analizar el comportamiento de los visitantes y proporcionar una respuesta adaptada a todo tipo de ataques. También aprovecha el poder de la multitud para generar una base de datos de reputación IP global para proteger la red de usuarios.

IMPORTANTE: Un firewall puede filtrar tráfico válido, por lo que es muy recomendable analizar con cuidado las excepciones o las configuraciones de plugins que podemos tener, ya que se pueden limitar funcionalidades.

Este tutorial ha sido creado en un VPS de Clouding.io. Puedes crear tu propio VPS desde 3€/mes.

Además, tienes la posibilidad de crear tu VPS con la imagen de WordPress en un clic.

COLABORACIÓN

Requisitos

Instalando CrowdSec

Partimos de la base de que ya tenemos un servidor montado, preferiblemente ya con los servicios funcionando, es decir, con Apache o nginx, cono PHP y con la base de datos MySQL o MariaDB. Si ya tenemos todo instalado será más sencillo que la instaclación detecte todo automáticamente.

Comenzaremos con la instalación del repositorio.

cd
wget -qO - https://s3-eu-west-1.amazonaws.com/crowdsec.debian.pragmatic/crowdsec.asc | apt-key add - && apt-add-repository -y -s  "https://s3-eu-west-1.amazonaws.com/crowdsec.debian.pragmatic/$(lsb_release -cs) $(lsb_release -cs) main"
apt -y update

E instalamos el software.

apt -y install crowdsec

En la máquina hay nginx y MariaDB y nos aparece esto:

Creating crowdsec configuration in /etc/crowdsec

[INF] crowdsec_wizard: Checking if service 'apache2' is running (ps+systemd)
[INF] crowdsec_wizard: Checking if service 'httpd' is running (ps+systemd)
[INF] crowdsec_wizard: Checking if service 'nginx' is running (ps+systemd)
[INF] crowdsec_wizard: Found 'nginx' running
[INF] crowdsec_wizard: Checking if service 'sshd' is running (ps+systemd)
[INF] crowdsec_wizard: Found 'sshd' running
[INF] crowdsec_wizard: Checking if service 'mysql' is running (ps+systemd)
[INF] crowdsec_wizard: Found 'mysql' running
[INF] crowdsec_wizard: Checking if service 'telnet' is running (ps+systemd)
[INF] crowdsec_wizard: Checking if service 'smb' is running (ps+systemd)

Detected services (unattended) : nginx sshd mysql linux

[INF] crowdsec_wizard: Installing collection 'crowdsecurity/linux'

[03/19/2021:05:25:56 PM][INF] crowdsec_wizard: Installing collection 'crowdsecurity/sshd'
[03/19/2021:05:25:56 PM][INF] crowdsec_wizard: Installing collection 'crowdsecurity/mysql'
[03/19/2021:05:25:56 PM][INF] crowdsec_wizard: Installing collection 'crowdsecurity/nginx'
[03/19/2021:05:26:02 PM][INF] crowdsec_wizard: Found following services : nginx
[03/19/2021:05:26:02 PM][INF] crowdsec_wizard: Found logs file for 'nginx': /var/log/nginx/access.log
[03/19/2021:05:26:02 PM][INF] crowdsec_wizard: Found logs file for 'nginx': /var/log/nginx/error.log
[03/19/2021:05:26:02 PM][INF] crowdsec_wizard: Acquisition file generated
[03/19/2021:05:26:02 PM][INF] crowdsec_wizard: Found logs file for 'sshd': /var/log/auth.log
[03/19/2021:05:26:02 PM][INF] crowdsec_wizard: Acquisition file generated
[03/19/2021:05:26:02 PM][INF] crowdsec_wizard: Found logs file for 'linux': /var/log/syslog
[03/19/2021:05:26:02 PM][INF] crowdsec_wizard: Found logs file for 'linux': /var/log/kern.log
[03/19/2021:05:26:02 PM][INF] crowdsec_wizard: Acquisition file generated

El sistema ha detectado automáticamente nginx, SSH, MySQL y «linux». Además ha encontrado una serie de logs para analizar.

Una vez instalado, podemos configurarlo para que se active siempre y validamos que está funcionando.

systemctl stop crowdsec
systemctl enable crowdsec
systemctl start crowdsec
systemctl status crowdsec

Como también tenemos WordPress, instalaremos el sistema que revisa WordPress.

cscli collections install crowdsecurity/wordpress
systemctl reload crowdsec
systemctl status crowdsec

Ya tenemos el cortafuegos funcionando… y no deberíamos tener que hacer nada más…el sistema ya ha conectado automáticamente con la API general, por lo que ya está analizando, enviando y recibiendo la información comunitaria.

Revisando CrowdSec

¿Qué hay funcionando?

cscli hub list

Si queremos analizar qué elementos hay activos, podremos ver los distintos parsers, scenarios y collections, que son los tres componentes básicos de cada uno de los sistemas que se controlan.

Los parsers son aquellos sistemas que analizan los ficheros de logs y similares buscando los ataques.

Los scenarios son los elementos que toman las decisiones de cómo gestionar la información.

Las collecctions son la aplicación de todo para cada una de las herramientas.

Estadísticas

cscli metrics

En la parte de métricas tenemos información sobre qué se ha leído y cómo se ha gestionado, cómo se ha aplicado por parte de cada una de las herramientas y posteriormente cómo se ha gestionado la información por las APIs.


Sobre este documento

Este documento está regulado por la licencia EUPL v1.2, publicado en WP SysAdmin y creado por Javier Casares. Por favor, si utilizas este contenido en tu sitio web, tu presentación o cualquier material que distribuyas, recuerda hacer una mención a este sitio o a su autor, y teniendo que poner el material que crees bajo licencia EUPL.