CSF, también conocido como "Config Server Firewall", es un firewall gratuito y avanzado para sistemas Linux. Viene con algunas funciones de seguridad avanzadas, como intrusiones, inundaciones y detecciones de inicio de sesión. Está diseñado para defenderse de muchos ataques, como análisis de puertos, inundaciones SYN y ataques de fuerza bruta de inicio de sesión. También proporciona integración para cPanel, DirectAdmin y Webmin.
Prerrequisitos
-
Un servidor que ejecuta Debian 11.
-
Se configura una contraseña de root en el servidor.
Empezando
Antes de comenzar, se recomienda actualizar los paquetes de su sistema a la versión actualizada. Puedes hacerlo usando el siguiente comando:
apt-get update -y
Una vez que todos los paquetes estén actualizados, instale otras dependencias requeridas usando 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
De forma predeterminada, el paquete CSF no se incluye en el repositorio predeterminado de Debian 11. Deberá descargarlo de su sitio web oficial.
Puede descargar la última versión de CSF con el siguiente comando:
wget http://download.configserver.com/csf.tgz
Una vez que se complete la descarga, extraiga el archivo descargado con el siguiente comando:
tar -xvzf csf.tgz
A continuación, cambie el directorio a CSF y ejecute el script install.sh para instalar CSF en su servidor.
cd csf
bash install.sh
Una vez que se haya instalado CSF, debería obtener el siguiente resultado:
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, verifique los módulos iptables requeridos para CSF usando el siguiente comando:
perl /usr/local/csf/bin/csftest.pl
Si todo está bien, debería obtener el siguiente resultado:
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, deberá configurar CSF según sus requisitos. Puede configurarlo editando el archivo /etc/csf/csf.conf.
nano /etc/csf/csf.conf
Primero, busque la línea TESTING = "1" y cambie el valor a "0" para habilitar el CSF:
TESTING = "0"
A continuación, busque la línea RESTRICT_SYSLOG = "0" y cambie el valor a 3 para establecer el acceso a los archivos syslog/rsyslog solo para los miembros del RESTRICT_SYSLOG_GROUP:
RESTRICT_SYSLOG = "3"
Agregue los puertos abiertos TCP entrantes requeridos en la siguiente línea:
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995"
Agregue sus puertos TCP salientes requeridos en la siguiente línea:
#Permitir puertos TCP salientes
TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995"
Agregue los puertos abiertos UDP entrantes requeridos en la siguiente línea:
#Permitir puertos UDP entrantes
UDP_IN = "20,21,53,80,443"
Agregue sus puertos UDP salientes requeridos en la siguiente línea:
#Permitir puertos UDP salientes
UDP_OUT = "20,21,53,113,123"
Guarde y cierre el archivo, luego vuelva a cargar el firewall CSF para aplicar los cambios:
csf -r
Comandos básicos de CSF
Para detener el firewall CSF, ejecute el siguiente comando:
csf -s
Para limpiar el firewall CSF, ejecute el siguiente comando:
csf -f
Para enumerar todas las reglas de IPTABLES agregadas por CSF, ejecute el siguiente comando:
csf -l
Para iniciar el CSF y permitir que se inicie al reiniciar el sistema, ejecute el siguiente comando:
systemctl start csf
systemctl enable csf
Para verificar el estado del firewall CSF, ejecute el siguiente comando:
systemctl status csf
Debería obtener el siguiente resultado:
? 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, ejecute el siguiente comando:
csf -a 192.168.100.10
Para denegar un host específico por dirección IP, ejecute el siguiente comando:
csf -d 192.168.100.11
Para eliminar la IP de la lista de permitidos, ejecute el siguiente comando:
csf -ar 192.168.100.10
Para eliminar la IP de la lista de denegación, ejecute el siguiente comando:
csf -dr 192.168.100.11
Puede agregar direcciones IP confiables editando el archivo /etc/csf/csf.allow:
nano /etc/csf/csf.allow
Agregue sus direcciones IP de confianza:
192.168.100.10
Puede agregar direcciones IP que no sean de confianza editando el archivo /etc/csf/csf.deny:
nano /etc/csf/csf.deny
Agregue sus direcciones IP que no son de confianza:
192.168.100.11