Cómo instalar el Config Server Firewall (CSF) en Debian 11

CSF, también conocido como «Config Server Firewall», es un cortafuegos gratuito y avanzado para sistemas Linux. Viene con algunas funciones de seguridad avanzadas, como la detección de intrusiones, inundaciones e inicios de sesión. Está diseñado para defenderse de muchos ataques, como escaneos de puertos, inundaciones SYN y ataques de fuerza bruta al inicio de sesión. También proporciona integración para cPanel, DirectAdmin y Webmin.

Este tutorial explicará la instalación de CSF, la configuración básica y los comandos esenciales para CSF en Debian 11.

Requisitos previos

  • Un servidor con Debian 11.
  • Una contraseña de root configurada en el servidor.

Cómo empezar

Antes de empezar, se recomienda actualizar los paquetes de tu sistema a la versión actualizada. Puedes hacerlo con el siguiente comando:

apt-get update -y

Una vez actualizados todos los paquetes, instala otras dependencias necesarias utilizando el siguiente comando:

apt-get install sendmail dnsutils unzip libio-socket-ssl-perl libcrypt-ssleay-perl git perl iptables libnet-libidn-perl libio-socket-inet6-perl libsocket6-perl -y

Instalar CSF en Debian 11

Por defecto, el paquete CSF no está incluido en el repositorio por defecto de Debian 11. Tendrás que descargarlo desde su sitio web oficial.

Puedes descargar la última versión de CSF con el siguiente comando:

wget http://download.configserver.com/csf.tgz

Una vez completada la descarga, extrae el archivo descargado con el siguiente comando:

tar -xvzf csf.tgz

A continuación, cambia el directorio a CSF y ejecuta el script install.sh para instalar CSF en tu servidor.

cd csf
bash install.sh

Una vez instalado el CSF, deberías obtener la siguiente salida:

Don't forget to:
1. Configure the following options in the csf configuration to suite your server: TCP_*, UDP_*
2. Restart csf and lfd
3. Set TESTING to 0 once you're happy with the firewall, lfd will not run until you do so

Adding current SSH session IP address to the csf whitelist in csf.allow:
*WARNING* URLGET set to use LWP but perl module is not installed, fallback to using CURL/WGET
Adding 106.222.22.32 to csf.allow only while in TESTING mode (not iptables ACCEPT)
*WARNING* TESTING mode is enabled - do not forget to disable it in the configuration
'lfd.service' -> '/usr/lib/systemd/system/lfd.service'
'csf.service' -> '/usr/lib/systemd/system/csf.service'
Created symlink /etc/systemd/system/multi-user.target.wants/csf.service → /lib/systemd/system/csf.service.
Created symlink /etc/systemd/system/multi-user.target.wants/lfd.service → /lib/systemd/system/lfd.service.
Failed to disable unit: Unit file firewalld.service does not exist.
Failed to stop firewalld.service: Unit firewalld.service not loaded.
Unit firewalld.service does not exist, proceeding anyway.
Created symlink /etc/systemd/system/firewalld.service → /dev/null.
'/etc/csf/csfwebmin.tgz' -> '/usr/local/csf/csfwebmin.tgz'

Installation Completed

Después de la instalación, verifica los módulos iptables necesarios para el CSF mediante el siguiente comando:

perl /usr/local/csf/bin/csftest.pl

Si todo está bien, deberías obtener la siguiente salida:

Testing ip_tables/iptable_filter...OK
Testing ipt_LOG...OK
Testing ipt_multiport/xt_multiport...OK
Testing ipt_REJECT...OK
Testing ipt_state/xt_state...OK
Testing ipt_limit/xt_limit...OK
Testing ipt_recent...OK
Testing xt_connlimit...OK
Testing ipt_owner/xt_owner...OK
Testing iptable_nat/ipt_REDIRECT...OK
Testing iptable_nat/ipt_DNAT...OK

RESULT: csf should function on this server

Configurar CSF

A continuación, tendrás que configurar CSF en función de tus necesidades. Puedes configurarlo editando el archivo /etc/csf/csf.conf.

nano /etc/csf/csf.conf

Primero, busca la línea TESTING = «1», y cambia el valor a «0» para habilitar el CSF:

TESTING = "0"

A continuación, busca la línea RESTRICT_SYSLOG= «0», y cambia el valor a 3 para establecer el acceso a los archivos syslog/rsyslog sólo para los miembros del RESTRICT_SYSLOG_GROUP:

RESTRICT_SYSLOG = "3"

Añade los puertos TCP abiertos entrantes que necesites en la siguiente línea:

TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995"

Añade los puertos TCP salientes que necesites en la siguiente línea:

# Allow outgoing TCP ports
TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995"

Añade los puertos abiertos UDP entrantes que necesites en la siguiente línea:

# Allow incoming UDP ports
UDP_IN = "20,21,53,80,443"

Añade los puertos UDP salientes que necesites en la siguiente línea:

# Allow outgoing UDP ports
UDP_OUT = "20,21,53,113,123"

Guarda y cierra el archivo y vuelve a cargar el cortafuegos de CSF para aplicar los cambios:

csf -r

Comandos básicos de CSF

Para detener el cortafuegos CSF, ejecuta el siguiente comando:

csf -s

Para vaciar el cortafuegos CSF, ejecuta el siguiente comando:

csf -f

Para listar todas las reglas IPTABLES añadidas por el CSF, ejecuta el siguiente comando:

csf -l

Para iniciar el CSF y permitir que se inicie al reiniciar el sistema, ejecuta el siguiente comando:

systemctl start csf
systemctl enable csf

Para comprobar el estado del cortafuegos CSF, ejecuta el siguiente comando:

systemctl status csf

Deberías obtener la siguiente salida:

? csf.service - ConfigServer Firewall & Security - csf
     Loaded: loaded (/lib/systemd/system/csf.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sat 2021-09-18 15:42:04 UTC; 11s ago
    Process: 8022 ExecStart=/usr/sbin/csf --initup (code=exited, status=0/SUCCESS)
   Main PID: 8022 (code=exited, status=0/SUCCESS)
        CPU: 705ms

Sep 18 15:42:04 debian11 csf[8022]: ACCEPT  all opt    in * out lo  ::/0  -> ::/0
Sep 18 15:42:04 debian11 csf[8022]: LOGDROPOUT  all opt    in * out !lo  ::/0  -> ::/0
Sep 18 15:42:04 debian11 csf[8022]: LOGDROPIN  all opt    in !lo out *  ::/0  -> ::/0
Sep 18 15:42:04 debian11 csf[8022]: csf: FASTSTART loading DNS (IPv4)
Sep 18 15:42:04 debian11 csf[8022]: csf: FASTSTART loading DNS (IPv6)
Sep 18 15:42:04 debian11 csf[8022]: LOCALOUTPUT  all opt -- in * out !lo  0.0.0.0/0  -> 0.0.0.0/0
Sep 18 15:42:04 debian11 csf[8022]: LOCALINPUT  all opt -- in !lo out *  0.0.0.0/0  -> 0.0.0.0/0
Sep 18 15:42:04 debian11 csf[8022]: LOCALOUTPUT  all opt    in * out !lo  ::/0  -> ::/0
Sep 18 15:42:04 debian11 csf[8022]: LOCALINPUT  all opt    in !lo out *  ::/0  -> ::/0
Sep 18 15:42:04 debian11 systemd[1]: Finished ConfigServer Firewall & Security - csf.

Para permitir un host específico por dirección IP, ejecuta el siguiente comando:

csf -a 192.168.100.10

Para denegar un host específico por dirección IP, ejecuta el siguiente comando:

csf -d 192.168.100.11

Para eliminar la IP de la lista de permitidas, ejecuta el siguiente comando:

csf -ar 192.168.100.10

Para eliminar la IP de la lista de denegación, ejecuta el siguiente comando:

csf -dr 192.168.100.11

Puedes añadir IPs de confianza editando el archivo /etc/csf/csf.allow:

nano /etc/csf/csf.allow

Añade tus IPs de confianza:

192.168.100.10

Puedes añadir IPs no confiables editando el archivo /etc/csf/csf.deny:

nano /etc/csf/csf.deny

Añade tus IPs no confiables:

192.168.100.11

Conclusión

En la guía anterior, hemos explicado cómo instalar el cortafuegos CSF en Debian 11. También te mostramos algunos comandos básicos de CSF para gestionar tu tráfico. Para más información, visita la documentación deCSF.

También te podría gustar...