csf_largeTal y como comentábamos en un tuit hace unos días, en Informática Coslada – Shopicardiacom consideramos que hay dos tipos de ataques a vuestros servidores o VPS: Los gratuitos y los pagados. Entre los gratuitos se encuentran todos aquellos que funcionan mediante scripts automáticos y con uso de diccionarios de nombres y contraseñas. Contra los ataques pagados se puede hacer poco salvo detectarlos a tiempo y desactivar servicios, cerrar puertos o desconectar el servidor durante un tiempo.

¿Cómo mejoro la seguridad de mi servidor?

Aparte de seguir los consejos publicados en el libro “Hardening de servidores” publicado por 0xWORD, de Carlos Álvarez Martín y Pablo González Pérez, tenéis la opción de instalar y utilizar un potente cortafuegos con GUI para cPanel, Webmin y DirectAdmin llamado ConfigServer Security & Firewall

Se trata de un software adicional muy interesante y sencillo de instalar y que os permitirá controlar cualquier intento de acceso por fuerza bruta además de servir como monitor, registro y detección de intrusos.

¿Qué protecciones añade ConfigServer?

La suite tiene estas características y protecciones adicionales:

  • Control de paquetes y estado de la red (Statefull Packet Inspection)
  • Instala un demonio (proceso en memoria) que comprueba fallos de autenticación en servicios:
    • Courier imap, Dovecot, uw-imap, Kerio
    • openSSH
    • cPanel, WHM, Webmail (sólo servidores cPanel)
    • Pure-ftpd, vsftpd, Proftpd
    • Web protegidas por contraseña (htpasswd)
    • Fallos en Mod_security (v1 y v2)
    • Fallos en módulo Suhosin
    • Exim SMTP AUTH
    • Fallos de acceso y errores de comprobación de expresiones regulares (REGEXP)
  • Rastreo de accesos y bloqueo POP3/IMAP
  • Notificación de acceso por SSH
  • Notificación de acceso de superusuarios, SU
  • Bloqueo ante detección de número elevado de conexiones.
  • Integración con la interface de usuario (UI) en cPanel, DirectAdmin y Webmin
  • Actualización sencilla en versiones con cPanel/WHM, DirectAdmin o Webmin
  • Actualización fácil vía shell
  • Pre-configurado para funcionar en un entorno de servidor con cPanel y todos los puertos cPanel estándar abiertos
  • Pre-configurado para funcionar en panel DirectAdmin con sus puertos específicos abiertos
  • Auto configura el puerto SSH incluso si no es el estándar
  • Bloquea el tráfico en direcciones IP del servidor que no se usan para ayudar a minimizar riesgos
  • Lanza alertas cuando un script de usuario envía un número excesivo de emails por hora. Identifica scripts que envían SPAM
  • Informa sobre procesos sospechosos. Identifica exploits pontencialmente peligrosos que se ejecuten en el servidor.
  • Informa de número excesivo de procesos de usuario
  • Informa del uso excesivo de recursos y permite eliminarlos automáticamente
  • Informa si hay ficheros sospechosos. Identifica archivos peligrosos en /tmp y directorios similares
  • Control de archivos y directorios. Informa si un directorio o fichero controlado ha cambiado.
  • Bloquea tráfico de sitios especificados en las listas de DShield Block List y Spamhaus DROP List
  • Protección de paquetes de direcciones IP falsas (BOGON)
  • Perfiles preconfigurados para protección de nivel Bajo, Medio y Alto (sólo cPanel)
  • Funciona también con configuración de varias ethernets
  • Server Security Check – Permite realizar una comprobación de seguridad básica controlando los puntos claves del servidor (vía cPanel/DirectAdmin/Webmin UI)
  • Admite direcciones IP dinámicas. Siempre permite el acceso de tu IP incluso si ésta cambia cada vez que conectas a internet.
  • Envía alertas si el servidor aumenta la media de carga o hay sobreAlert sent if server load average remains high for a specified length of time
  • Informe de errores del rgistro mod_security (si está instalado)
  • Rastreo de retardos de correo. Rastrea todos los correos enviados a través del servidor y envía alertas de uso excesivo (sólo cPanel)
  • IDS (Intrusion Detection System) – Informa si detecta cambios en archivos de sistema y binarios
  • Protección SYN Flood
  • Protección contra el “Ping de la muerte” (Ping of death). (A veces es hasta gracioso el nombre que le ponen a los ataques ;D)
  • Rastreo de escaneo de puertos (Port Scan tracking) y bloqueo de los mismos
  • Bloqueo de IPs permanente y temporal (con TTL)
  • Comprobación de exploits
  • Rastreo de modificaciones de cuentas. Envía alertas si se modifica una cuenta (cambio de claves o acceso vía shell, por ejemplo).
  • Shared syslog aware. En este punto me pierdo. ¿Archivos de registro de sistema compartidos?
  • Messenger Service – Permite redirigir peticiones de conexión de IPs bloqueadas a textos y páginas HTML preconfiguradas para avisar el visitante que el cortafuegos ha bloqueado su IP por seguridad. Ideal si tienes una cantidad elevada de usuarios ya que permite gestionar las incidencias con ellos de modo eficiente.
  • Permite bloquear países por código ISO (Country Code blocking)
  • Detección y mitigación de Port Flooding Detection – Por IP y por puerto para ayudar a bloquear ataques de denegación de servicio (DOS)
  • Integración con panel de control DirectAdmin
  • Integración con panel de control Webmin
  • Envío de aviso de acceso a panel WHM (sólo cPanel, lógicamente)
  • Clúster lfd – permite propagar la información de IPs bloqueadas a través del pool o grupo de servidores que ejecutan lfd. Ideal para cambios globales en la configuración sin necesidad de configurar por separado cada servidor.
  • Inicio rápido del csf – Arranque en diferido para servidores con gran cantidad de listas de bloqueo o admisión
  • Detección de Distributed Login Failure Attack. Se trata de un tipo de ataque smtpauth desde diferentes ubicaciones que puede provocar la caída del sistema o su sobrecarga.
  • Admisión temporal de IPs configuradas (vía TTL)
  • Soporta protocolo IPv6 con ip6tables
  • Interface de usuario integrada. No requiere un panel de control adicional para configurar y usar csf.
  • Soporte integrado para ConfigServer Explorer dentro de la interface de usuario.
  • Opciones de configuración de cuentas de revendedor para desbloquear, denegar, permitir y buscar direcciones IPs
  • Estadísticas de sistema. Visualización de gráficas de rendimiento del servidor: Cargas medias, uso de CPU, uso de memoria… etc.
  • Soporte para listas de IPs grandes ipset
  • Y muchas más opciones

Se trata de un paquete “must-have”, es decir, imprescindible en cualquier servidor virtual o real que te ayudará a minimizar las posibilidades de rotura o acceso a tu sistema monitorizando prácticamente todos los movimientos del aparato y avisando de cualquier cambio o elemento sospechoso.

Hemos de decir que, una vez instalado y configurado este paquete, hemos reducido a cero los registros de CPHulk de los cPanel que administramos.

Instalar ConfigServer

El paquete es compatible con los sistemas operativos que se muestran en las tablas adjuntas, así como sobre sistemas virtualizados.

Supported and Tested Operating Systems
RedHat Enterprise v3 to v7 *openSUSE v10, v11, v12
CentOS v3 to v7 *Debian v3.1 – v8
CloudLinux v5 to v7 *Ubuntu v6 to v15
Fedora v1 to v22 *Slackware v12
Supported and Tested Virtual Servers
**Virtuozzo **OpenVZ
VMware UML
Xen MS Virtual Server
VirtualBox KVM

El requisito básico para poder instalar ConfigServer es disponer de acceso root al sistema operativo de la máquina. Deberemos usar SSH o webshell (ojo con ésto) del modo habitual y seguir las siguientes instrucciones:


rm -fv csf.tgz
wget http://www.configserver.com/free/csf.tgz
tar -xzf csf.tgz
cd csf
sh install.sh

Lo ideal es que uséis un directorio temporal para la descarga, descompresión y ejecución del proceso de instalación y luego borrar estos archivos (por ejemplo, en /tmp o /home/usuario/tmp).

El archivo de configuración está en:

/etc/csf/csf.conf

Uso de ConfigServer

configserver-pluginEl programa es muy intuitivo y, para empezar, propone el uso de cualquiera de los tres perfiles de seguridad preconfigurados: Bajo, medio y alto. Si, después de activar un perfil concreto, os encontráis con un elevado número de avisos, podéis ir probando con los demás hasta dar con el apropiado.

Envío de alertas

La instalación por defecto no permite enviar emails con alertas. Para poder activarlas necesitáis editar el archivo “csf.conf” y añadir allí la dirección de correo del destinatario que recibirá esos mensajes. La sección es “Reporting Settings”. Si editáis con “nano”, pulsad “CTRL+W” para buscar la opción:

LF_ALERT_TO ="email@destino.com"
LF_ALERT_FROM ="email@destino.com"

Activar cambios desde la línea de comandos

El comando que se debe ejecutar cada vez que se cambia la configuración es:

csf -r

También se puede hacer desde la interface con cPanel.

Ejemplo de alerta

Este es un ejemplo de email enviado por el servidor alertando del bloqueo de una IP (123.30.37.42) que ha sido bloqueada automáticamente tras 20 intentos de acceso con diferentes usuarios y claves. El sistema indica de dónde viene el ataque, la fecha y hora, el tipo de servicio atacado (en este caso ssh) y el tipo de bloqueo generado.

Como podéis comprobar, se trata de un típico ataque automático usando diccionarios. CSF primero comprueba si la IP del atacante se encuentra listada en Spamhaus y luego le permite hasta 20 reintentos. El número máximo de intentos se puede configurar editando el archivo “csf.conf”.

Time:     Thu Jun 23 10:49:15 2016 +0200
IP:       123.30.37.42 (VN/Vietnam/static.vdc.vn)
Failures: 20 (sshd)
Interval: 3600 seconds
Blocked:  Permanent Block

Log entries:

Jun 23 10:48:10 vps sshd[29933]: Did not receive identification string from 123.30.37.42
Jun 23 10:48:14 vps sshd[29935]: Invalid user support from 123.30.37.42
Jun 23 10:48:20 vps sshd[29939]: Invalid user admin from 123.30.37.42
Jun 23 10:48:25 vps sshd[29946]: Invalid user user from 123.30.37.42
Jun 23 10:48:27 vps sshd[29948]: Invalid user ubnt from 123.30.37.42
Jun 23 10:48:30 vps sshd[29950]: Invalid user admin from 123.30.37.42
Jun 23 10:48:35 vps sshd[29958]: Invalid user upport from 123.30.37.42
Jun 23 10:48:38 vps sshd[29960]: Invalid user test from 123.30.37.42
Jun 23 10:48:40 vps sshd[29962]: Invalid user guest from 123.30.37.42
Jun 23 10:48:43 vps sshd[29964]: Invalid user admin from 123.30.37.42
Jun 23 10:48:45 vps sshd[29966]: Invalid user admin from 123.30.37.42
Jun 23 10:48:47 vps sshd[29969]: Invalid user admin from 123.30.37.42
Jun 23 10:48:50 vps sshd[29972]: Invalid user admin from 123.30.37.42
Jun 23 10:48:53 vps sshd[29974]: Invalid user cisco from 123.30.37.42
Jun 23 10:48:56 vps sshd[29976]: Invalid user pi from 123.30.37.42
Jun 23 10:48:59 vps sshd[29979]: Invalid user admin from 123.30.37.42
Jun 23 10:49:01 vps sshd[29983]: Invalid user anonymous from 123.30.37.42
Jun 23 10:49:06 vps sshd[29997]: Invalid user user from 123.30.37.42
Jun 23 10:49:09 vps sshd[29999]: Invalid user admin from 123.30.37.42
Jun 23 10:49:11 vps sshd[30002]: Invalid user ftpuser from 123.30.37.42

Referencias: