Configurar un cortafuegos en WHM

Una de las primeras cosas que uno podría echar en falta en CPanel es un buen cortafuegos, ya que de hecho no trae ninguno de serie. Pero no es problema, hay varios cortafuegos para CPanel desarrollados por terceras partes, los más populares son Advanced Policy Firewall y ConfigServer Services & Firewall. En este caso nos quedaremos con el segundo por ser el más usado y el más documentado.

Su instalación es bastante sencilla, si vamos a la página web podremos ver el enlace de descarga. Podemos descargar el fichero en nuestro ordenador y luego transferirlo por (S)FTP al servidor, pero lo más rápido y cómodo será hacerlo todo directamente por consola. Accedemos al servidor como root y ejecutamos los siguientes comandos:

# Descarga del paquete de CSF
wget http://www.configserver.com/free/csf.tgz
# Descomprimimos el paquete
tar zxf csf.tgz
# Podemos eliminar el fichero que hemos descargado y ya hemos descomprimido
rm -f csf.tgz
# Accedemos al directorio en el que se encuentra el paquete de CSF descomprimido
cd csf
# Instalamos CSF
./install.sh

Con esos sencillos pasos, si todo va bien, ya habremos instalado CSF con el script que realiza tanto la instalación system-wide como la instalación del plugin para el panel de control que estemos usando, ya que además de WHM también soporta DirectAdmin.

No deberíamos tener otros asistentes o generadores de reglas para IPTables como Firehol, FwBuilder, APF, … En caso de tener alguno debemos desinstalarlos, y si habíamos instalado APF para IPTables debemos ejecutar /etc/csf/remove_apf_bfd.sh para asegurarnos de que ha sido correctamente desinstalado de WHM.

Para comprobar si la instalación se efectuó correctamente podemos ejecutar el fichero /etc/csf/csftest.pl, si no devuelve FATAL para ninguno de las pruebas que realiza entonces todo debería ir bien. Al terminar la instalación nos informará de cuáles son actualmente los puertos que están abiertos por TCP y UDP:

TCP ports currently listening for incoming connections: xxx,yyy,zzz
UDP ports currently listening for incoming connections: aaa,bbb,ccc

Estos datos son meramente informativos, para que sepas qué puertos están proporcionando algún servicio en tu servidor y por lo tanto te interesaría bloquearlos o desbloquearlos.

Un aviso que si que nos interesará tener en cuenta tras la instalación es el que aparece a continuación del anterior:

Adding current SSH session IP address to the csf whitelist in csf.allow:
Adding n.n.n.n 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

Esto nos dice que la dirección IP n.n.n.n desde la que estamos actualmente conectados ha sido añadida a la lista blanca de IPs autorizadas a conectar por SSH mientras estemos en modo de pruebas.

Ahora ya podemos eliminar el directorio con los ficheros temporales de instalacion:

cd ..
rm -fr csf

Y por último reiniciamos lfd y csf:

/etc/init.d/lfd restart
/etc/init.d/csf restart

Ahora, si accedemos a nuestro interfaz WHM podremos comprobar que en el menú lateral aparece la opción “ConfigServer Security&Firewall” en la sección “Plugins”:

Accediendo a esta opción tendremos disponibles todos los servicios que proporciona CSF. Nada más entrar, lo primero que llama la atención es el aviso de CSF recordándonos que estamos usando el modo de pruebas:

Y a continuación tenemos el menú de CSF. La primera opción interesante que nos encontramos es la que pone “Check Server Security” que hará un completo análisis de la configuración no sólo del Firewall sino de todo el servidor, marcándonos con una advertencia aquellas pruebas en la que encontró algún problema y explicando cuál es el problema concreto que encontró:

A continuación entraremos en la opción más importante: “Firewall Configuration” donde podremos configurar el firewall y las opciones de seguridad que nos ofrece CSF. Aquí hay muchas opciones y cada una lleva su texto explicativo, pero son destacables las siguientes:

  • TESTING
    Aquí es donde desactivaremos el modo de pruebas poniendo esta opción a 0.
  • TCP_IN
    Puertos TCP por los que se permitirá la entrada a nuestro servidor, por ejemplo, los más comunes serían 20 y 21 (FTP), 22 (SSH), 80 (HTTP), 110 (POP3), 443 (HTTPS), … y los de CPanel/WHM/Webmail: 2082, 2083, 2086, 2087, 2095 y 2096.
  • TCP_OUT
    Puertos TCP de otros servidores a los que nuestro servidor necesitará tener acceso, por ejemplo, el puerto 25 para entregar el correo que salga de nuestro servidor con otros destinos o el 3306 para que sea posible conectar a bases de datos MySQL externas.
  • UDP_IN
    Puertos UDP por los que se permitirá la entrada a nuestro servidor, por ejemplo, el puerto 53 para el correcto funcionamiento de DNS si en nuestro servidor se está hospedando algún nombre de dominio o está realizando servicios DNS.
  • UDP_OUT
    Puertos UDP de otros servidores a los que nuestro servidor necesitará tener acceso, por ejemplo, el puerto 53 para DNS o el 123 para la sincronización de la hora.

En caso de tener dudas con las configuraciones de los puertos, la configuración predeterminada de CSF debería funcionar sin mayores problemas en la mayoría de los casos. Para obtener una lista de los puertos en los que actualmente se está ofreciendo algún servicio junto con el proceso que ofrece ese servicio se puede ejecutar este comando:

netstat -nlp

Éste comando está orientado a la implementación de netstat presente en la mayoría de distribuciones de GNU/Linux y podría no funcionar en otras implementaciones.

En esta pantalla tendremos otras opciones interesantes como las relativas a ICMP para bloquear o limitar los pings, las relativas a SMTP para limitar las conexiones SMTP que pueden realizar los usuarios para intentar bloquear el spam, protecciones contra ataques de flooding y fuerza bruta y otras configuraciones más avanzadas.

Después de hacer cambios en esta pantalla y guardarlos nos pedirá confirmación para reiniciar CSF, lo que debemos hacer para que los cambios se hagan efectivos, en caso contrario los cambios no se aplicarán hasta que se reinicie CSF.

Otras opciones que podemos encontrar en el menú principal de CSF y LFD son bastante autoexplicativas, como las que se refieren a bloquear una dirección IP, permitir acceso total a alguna dirección, etc.
En “Firewall Allow IPs” podemos ver las direcciones IP a las que se les proporciona acceso y en donde podremos encontrar la dirección IP desde la que hicimos la instalación de CSF si la hicimos a través de SSH.

Por último, si ya tenemos una cierta experiencia con IPTables y conocemos su funcionamiento, podremos revisar la configuración de IPTables generada en “View IPTables Rules”.

2 comentarios en “Configurar un cortafuegos en WHM

  1. Roberto

    Yo tengo un servidor dedicado y ya he creado varias webs ademas de otras cosas.

    Me gustaria poner un cortafuegos, solo me gustaria saber si despues de instalarlo puedo perder informacion o presentar algun problema con las webs que estan viviendo en mi server,

    Saludos!

  2. chuso

    Hola, Roberto.

    No, no deberías tener ningún problema de pérdida de información.

    En cuanto a otro tipo de problemas con las webs hospedadas, depende de como configures el firewall. Si alguna web realiza una conexión con un servidor por un puerto que está bloqueado en el firewall, por ejemplo. O si configuras el firewall para detener los scripts que envíen demasiados e-mails tendrás problemas para alojar páginas web que tengan listas de correo.
    Debes conocer las webs que tienes alojadas y configurar el firewall apropiadamente o avisar a tus usuarios con la antelación suficiente de los cambios que vas a hacer en el servidor para que puedan adaptar sus páginas si es necesario.

    En cualquier caso, es posible tener instalado CSF sin activarlo para poder examinar con calma todas sus opciones de configuración y analizar los posibles conflictos que se pueden presentar.

Los comentarios están cerrados.