Instalación y Configuración de CSF Firewall

Config Server Firewall (CSF) es un firewall de código abierto que se puede usar en la mayoría de los sistemas operativos basados en Linux para proteger los servidores contra usuarios no autenticados. CSF supervisa continuamente el archivo de registro del servidor y notifica errores en la autenticación de inicio de sesión de SSH, SMTP, HTTP, IMAP, POP3 y FTP y otros muchos protocolos. Este firewall le permite bloquear y desbloquear manualmente direcciones IP específicas de manera temporal o permanente. Además, proporciona una interfaz basada en web para cPanel, DirectAdmin y Webmin para administrar el firewall desde el navegador web.

CSF es muy simple, fácil de instalar, sencillo y es compatible con muchos sistemas operativos basados en Linux como CentOS, Ubuntu, RedHat, OpenSUSE y Debian. CSF utiliza el identificador de daemon de error de inicio de sesión (LFD) que verifica los registros de LFD en un intervalo de tiempo regular. Encuentra intentos fallidos de inicio de sesión y los bloquea inmediatamente.

Empezamos

Primero, recomendamos actualizar tu sistema con la última versión estable. Puedes hacerlo con el siguiente comando:

apt-get update -y
apt-get upgrade -y
apt-get install perl libwww-perl liblwp-protocol-https-perl libgd-graph-perl zip unzip

Instalan un gestor de correo

apt install nullmailer o esmtp o sendmail-bin

Una vez que se haya completado el proceso de actualización, reinicia tu sistema para aplicar todos los cambios.

Instala CSF

Primero, descarga la última versión de CSF de su sitio web oficial. Puedes hacerlo con el siguiente comando:

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

Una vez que se haya completado la descarga, extrae el archivo descargado con el siguiente comando:

tar -zxvf csf.tgz

A continuación, cambia el directorio a csf e instálalo con el siguiente comando:

cd csf
sh install.sh

Una vez que la instalación se haya completado con éxito, deberías ver el siguiente resultado:

Created symlink /etc/systemd/system/firewalld.service → /dev/null.
'csf/LICENSE.txt' -> 'webmin/csf/images/LICENSE.txt'
'csf/bootstrap/js/bootstrap.min.js' -> 'webmin/csf/images/bootstrap/js/bootstrap.min.js'
'csf/bootstrap/css/bootstrap.min.css.map' -> 'webmin/csf/images/bootstrap/css/bootstrap.min.css.map'
'csf/bootstrap/css/bootstrap.min.css' -> 'webmin/csf/images/bootstrap/css/bootstrap.min.css'
'csf/bootstrap/fonts/glyphicons-halflings-regular.eot' -> 'webmin/csf/images/bootstrap/fonts/glyphicons-halflings-regular.eot'
'csf/bootstrap/fonts/glyphicons-halflings-regular.woff2' -> 'webmin/csf/images/bootstrap/fonts/glyphicons-halflings-regular.woff2'
'csf/bootstrap/fonts/glyphicons-halflings-regular.svg' -> 'webmin/csf/images/bootstrap/fonts/glyphicons-halflings-regular.svg'
'csf/bootstrap/fonts/glyphicons-halflings-regular.ttf' -> 'webmin/csf/images/bootstrap/fonts/glyphicons-halflings-regular.ttf'
'csf/bootstrap/fonts/glyphicons-halflings-regular.woff' -> 'webmin/csf/images/bootstrap/fonts/glyphicons-halflings-regular.woff'
'csf/bootstrap-chosen.css' -> 'webmin/csf/images/bootstrap-chosen.css'
'csf/chosen-sprite.png' -> 'webmin/csf/images/chosen-sprite.png'
'csf/[email protected]' -> 'webmin/csf/images/[email protected]'
'csf/chosen.min.css' -> 'webmin/csf/images/chosen.min.css'
'csf/chosen.min.js' -> 'webmin/csf/images/chosen.min.js'
'csf/configserver.css' -> 'webmin/csf/images/configserver.css'
'csf/csf-loader.gif' -> 'webmin/csf/images/csf-loader.gif'
'csf/csf.svg' -> 'webmin/csf/images/csf.svg'
'csf/csf_small.png' -> 'webmin/csf/images/csf_small.png'
'csf/jquery.min.js' -> 'webmin/csf/images/jquery.min.js'
'csf/loader.gif' -> 'webmin/csf/images/loader.gif'
'/etc/csf/csfwebmin.tgz' -> '/usr/local/csf/csfwebmin.tgz'

Installation Completed

A continuación, deberás verificar los módulos Iptables requeridos en tu sistema. Puedes comprobarlo con el siguiente comando:

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

Deberías ver 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

Nota: si usas Ubuntu 20.04 buscar abajo al final para modificar la ruta hacia los binarios y el csftest.pl.

Configura CSF

El archivo de configuración de CSF predeterminado se encuentra en el directorio /etc/csf. Puedes configurar los parámetros requeridos para CSF con el siguiente comando:

nano /etc/csf/csf.conf

Haz los siguientes cambios:

#For testing environment the value should be TESTING = "1" and for production environment, the value should be TESTING = "0".
TESTING = "0"

#To enable log 
RESTRICT_SYSLOG = "3"

# Allow incoming TCP ports
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995"

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

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

# Allow outgoing UDP ports
# To allow outgoing traceroute add 33434:33523 to this list 
UDP_OUT = "20,21,53,113,123"

Con esta configuracion permitimos la entrada y salida de esos puertos

Si deseas dejar la salida todos los puertos deberias ponerlo asi

TCP_OUT = "1:65535"
UDP_OUT = "1:65535"

Si deseas habilitar el ping agregas

ICMP_IN = "1"

Para habilitar o deshabilitar IPV6 vamos a la sección IPv6 Port Settings 0 para deshabilitar, 1 para habilitar:

# SECTION:IPv6 Port Settings
IPV6 = "0"

Si queremos recibir notificaciones vamos a la sección de reportes por correo

# SECTION:Reporting Settings
LF_ALERT_TO = "[email protected]"
LF_ALERT_FROM = "[email protected]"
LF_ALERT_SMTP = "192.168.0.2"

Nota: 192.168.0.2 es el ip del servidor de correo

Por defecto csf usa sendmail para el envío de correo (notificaciones) para cambiar este valor se busca:

SENDMAIL = "/usr/sbin/sendmail"

y se cambia por el que sea mas cómodo, en mi caso:

SENDMAIL = "/usr/lib/nullmailer"

Para evitar envío de correo masivo por excesivo uso de recurso: buscar estas variables y ponerlas en 0 o subir el valor

PT_USERMEM = "0"
PT_USERRSS = "0"
PT_USERTIME = "0"

Si queremos habilitar el monitoreo de archivos y directorios en busca de posibles cambios vamos a:

# SECTION: Directory Watching & Integrity
# Set to disable set to "0"
LF_DIRWATCH_FILE = "3600" ##para que revise cada 1 hora

Y ponemos el directorio que queramos monitorear en: /etc/csf/csf.dirwatch

Si queremos habilitar el bloqueo de Port Scan vamos a:
Esta función rastrea los bloques de puertos registrados por iptables, Si una dirección IP genera un bloque de puerto que se registra más de PS_LIMIT dentro de PS_INTERVAL segundos, la dirección IP será bloqueada.

# SECTION:Port Scan Tracking
PS_INTERVAL = "3600"
PS_LIMIT = "10"

Guarda y cierra el archivo cuando haya terminado. Luego, inicia el firewall CSF con el siguiente comando:

# systemctl start csf

También puedes verificar el estado de CSF con el siguiente comando:

# systemctl status csf

Deberías ver el siguiente resultado:

csf.service - ConfigServer Firewall & Security - csf
   Loaded: loaded (/usr/lib/systemd/system/csf.service; enabled; vendor preset: enabled)
   Active: active (exited) since Wed 2021-06-01 16:22:01 UTC; 3s ago
  Process: 2618 ExecStart=/usr/sbin/csf --initup (code=exited, status=0/SUCCESS)
 Main PID: 2618 (code=exited, status=0/SUCCESS)

Jun 01 16:22:01 ubuntu1804 csf[2618]: ACCEPT  all opt    in * out lo  ::/0  -> ::/0
Jun 01 16:22:01 ubuntu1804 csf[2618]: LOGDROPOUT  all opt    in * out !lo  ::/0  -> ::/0
Jun 01 16:22:01 ubuntu1804 csf[2618]: LOGDROPIN  all opt    in !lo out *  ::/0  -> ::/0
Jun 01 16:22:01 ubuntu1804 csf[2618]: csf: FASTSTART loading DNS (IPv4)
Jun 01 16:22:01 ubuntu1804 csf[2618]: csf: FASTSTART loading DNS (IPv6)
Jun 01 16:22:01 ubuntu1804 csf[2618]: LOCALOUTPUT  all opt -- in * out !lo  0.0.0.0/0  -> 0.0.0.0/0
Jun 01 16:22:01 ubuntu1804 csf[2618]: LOCALINPUT  all opt -- in !lo out *  0.0.0.0/0  -> 0.0.0.0/0
Jun 01 16:22:01 ubuntu1804 csf[2618]: LOCALOUTPUT  all opt    in * out !lo  ::/0  -> ::/0
Jun 01 16:22:01 ubuntu1804 csf[2618]: LOCALINPUT  all opt    in !lo out *  ::/0  -> ::/0
Jun 01 16:22:01 ubuntu1804 systemd[1]: Started ConfigServer Firewall & Security - csf.

También puedes iniciar y volver a cargar las reglas del firewall con el siguiente comando:

csf -s
csf -r

Configura la Interfaz Web de CFS

CSF también proporciona una interfaz web para administrar el firewall desde la interfaz web. Para habilitar la Interfaz Web de CSF, necesitarás instalar algunos módulos de Perl en tu sistema. Puedes instalar todos los módulos requeridos con el siguiente comando:

apt-get install libio-socket-ssl-perl libnet-libidn-perl libio-socket-inet6-perl libsocket6-perl libcrypt-ssleay-perl -y

Después de instalar todos los módulos, deberá habilitar la interfaz de usuario web de CSF editando el archivo csf.conf.

Puedes hacerlo con el siguiente comando:

nano /etc/csf/csf.conf

Haz los siguientes cambios:

RESTRICT_UI = "1"
UI = "1"
UI_PORT = "8080"
UI_IP = ""
UI_USER = "admin"
UI_PASS = "admin@123456
# For security reasons, you should always keep this option low (i.e 0-10)
UI_RETRY = "5"
#This option will add the connecting IP address to the file /etc/csf/ui/ui.ban after UI_RETRY login failures.

Guarda y cierra el archivo cuando hayas terminado. Luego, permite el acceso a tu dirección IP con el siguiente comando:

nano /etc/csf/ui/ui.allow

Añade la siguiente línea:

192.168.0.4

Guarda y cierra el archivo. Luego, reinicia el servicio LFD para aplicar estos cambios:

service lfd restart

Ahora puedes verificar el estado de LFD con el siguiente comando:

service lfd status

Deberías ver el siguiente resultado:

lfd.service - ConfigServer Firewall & Security - lfd
 Loaded: loaded (/usr/lib/systemd/system/lfd.service; enabled; vendor preset: enabled)
 Active: active (running) since Wed 2021-06-01 16:26:13 UTC; 3s ago
 Process: 3291 ExecStart=/usr/sbin/lfd (code=exited, status=0/SUCCESS)
 Main PID: 3318 (lfd - sleeping)
 Tasks: 4 (limit: 1114)
 CGroup: /system.slice/lfd.service
 ├─3318 lfd - sleeping
 ├─3329 lfd - checking system integrity
 ├─3331 sh -c /usr/bin/md5sum /usr/bin/* /usr/sbin/* /bin/* /sbin/* /usr/local/bin/* /usr/local/sbin/* /etc/init.d/* /etc/xinetd.d/*
 └─3332 /usr/bin/md5sum /usr/bin/NF /usr/bin/VGAuthService /usr/bin/[ /usr/bin/aa-enabled /usr/bin/aa-exec /usr/bin/acpi_listen /usr/

Jun 01 16:26:12 ubuntu1804 systemd[1]: Starting ConfigServer Firewall & Security - lfd...
Jun 01 16:26:13 ubuntu1804 systemd[1]: Started ConfigServer Firewall & Security - lfd.

Accede a CSF UI

Ahora abre tu navegador web y escribe la URL http://192.168.0.4:8080. Serás redirigido a la siguiente página:

Proporciona el nombre de usuario y la contraseña de administrador que especificaste en el archivo de configuración y haz clic en el botón ‘Entrar’. Deberías ver el panel de control predeterminado de CSF en la siguiente página:


Desde aquí puedes permitir, denegar y desbloquear direcciones IP específicas rápidamente. También puede buscar direcciones IP, permitir y denegar direcciones IP, reiniciar y activar firewalls y permitir/denegar temporalmente direcciones IP.

Ahora haz clic en el menú csf. Deberías ver la siguiente página:

Desde aquí, puedes permitir, denegar y desbloquear direcciones IP específicas rápidamente. También puede buscar direcciones IP, permitir y denegar direcciones IP, reiniciar y activar firewalls y permitir/denegar temporalmente direcciones IP.

¡Felicidades! Has instalado con éxito Config Server Firewall.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 5 / 5. Recuento de votos: 2

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*