LinuxParty

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

Durante muchos años ha circulado una idea que, aunque contiene parte de verdad, puede llevar a una peligrosa sensación de seguridad:

"En Linux no existen los virus."

La realidad es bastante diferente.

Los equipos Linux de escritorio siguen siendo un objetivo poco atractivo para la mayoría del malware tradicional, pero los servidores Linux que alojan sitios web son uno de los principales objetivos de los ciberdelincuentes.

WordPress, Joomla, PrestaShop, Drupal, Moodle, Dolibarr o cualquier otra aplicación web expuesta a Internet puede verse comprometida si aparece una vulnerabilidad, una contraseña es robada o un complemento desactualizado permite la ejecución de código.

Cuando eso ocurre, el atacante rara vez instala un "virus" clásico.

Lo habitual es encontrar:

  • Webshells PHP.
  • Puertas traseras (backdoors).
  • Scripts para enviar spam.
  • Mineros de criptomonedas.
  • Redirecciones ocultas.
  • Código JavaScript inyectado.
  • Archivos modificados para mantener el acceso al servidor.

Aquí es donde entra en juego Linux Malware Detect (LMD), una de las herramientas más conocidas y utilizadas para detectar malware específico en servidores Linux.


¿Qué es Linux Malware Detect?

Linux Malware Detect, conocido habitualmente como LMD o Maldet, es un escáner antimalware desarrollado por R-fx Networks especialmente pensado para servidores Linux que alojan aplicaciones web.

A diferencia de un antivirus tradicional orientado al escritorio, LMD está especializado en detectar amenazas habituales en entornos de hosting:

  • Malware PHP.
  • Webshells.
  • Código ofuscado.
  • Backdoors.
  • Scripts utilizados por botnets.
  • Malware dirigido a CMS.

Su base de firmas se alimenta continuamente de muestras reales obtenidas en servidores comprometidos, lo que convierte a LMD en una herramienta especialmente eficaz para administradores de sistemas.


¿Qué novedades incorpora LMD 2.x?

Desde la publicación de nuestro artículo original hace más de una década, Linux Malware Detect ha evolucionado enormemente.

Las versiones actuales incorporan importantes mejoras, entre ellas:

  • Nuevo motor de análisis mucho más rápido.
  • Procesamiento paralelo para aprovechar varios núcleos del procesador.
  • Hashes SHA-256 acelerados por hardware.
  • Integración con reglas YARA para detectar malware complejo.
  • Motor de búsqueda basado en algoritmos Aho-Corasick, mucho más eficiente para analizar grandes cantidades de firmas.
  • Compatibilidad mejorada con ClamAV.
  • Monitorización en tiempo real mediante inotify.
  • Informes HTML más completos.
  • Integración con sistemas de notificación como correo electrónico, Slack, Telegram o Discord.

Todo ello permite analizar miles de archivos con mucha mayor rapidez que las primeras versiones de LMD.


Sistemas compatibles

Actualmente LMD funciona perfectamente en:

  • RHEL 8, 9 y 10
  • AlmaLinux
  • Rocky Linux
  • Fedora
  • Debian
  • Ubuntu
  • Otras distribuciones compatibles con GNU/Linux

En este artículo utilizaremos ejemplos basados en RHEL y sus derivados.


Instalación de Linux Malware Detect

Lo primero será instalar las herramientas necesarias.

En sistemas basados en RHEL:

sudo dnf install git wget tar curl -y

Descargamos el proyecto oficial:

git clone https://github.com/rfxn/linux-malware-detect.git

Entramos en el directorio:

cd linux-malware-detect

Ejecutamos el instalador:

sudo ./install.sh

Una vez finalizado veremos un mensaje indicando la ruta de instalación y la versión instalada.

Normalmente LMD queda instalado en:

/usr/local/maldetect

y el comando disponible será:

maldet

Actualizar las firmas

Como cualquier antivirus, la eficacia de LMD depende de mantener sus firmas actualizadas.

Actualizar es tan sencillo como ejecutar:

sudo maldet -u

Es recomendable automatizar esta tarea mediante cron.


Primer análisis del servidor

Para realizar un análisis completo de un directorio:

sudo maldet -a /var/www

También podemos analizar únicamente un sitio concreto:

sudo maldet -a /var/www/html

O un usuario específico de hosting:

sudo maldet -a /home/usuario/public_html

Analizar únicamente archivos recientes

Una característica muy útil para servidores en producción consiste en analizar únicamente los archivos modificados recientemente.

Por ejemplo, para revisar los cambios de las últimas 48 horas:

sudo maldet -r /var/www 2

Esto reduce enormemente el tiempo necesario para detectar una posible intrusión reciente.


Monitorización en tiempo real

LMD también puede vigilar directorios continuamente mediante inotify.

Por ejemplo:

sudo maldet --monitor /home

Cada vez que aparezca un archivo sospechoso será analizado automáticamente.

Esta opción resulta especialmente interesante en servidores compartidos.


Integración con ClamAV

Una duda muy habitual es:

¿LMD sustituye a ClamAV?

La respuesta es no.

Ambos programas se complementan perfectamente.

ClamAV dispone de una enorme base de firmas generalista.

LMD aporta firmas especializadas en amenazas propias de servidores web.

Cuando ambos trabajan conjuntamente, LMD puede aprovechar el motor de análisis de ClamAV para acelerar considerablemente los escaneos.

Es una de las configuraciones más recomendables para servidores de producción.


YARA: detectando malware moderno

Una de las mejoras más importantes incorporadas por las versiones recientes es la integración con YARA.

Las reglas YARA permiten identificar malware mediante patrones complejos, incluso cuando los atacantes modifican parcialmente el código para intentar evadir las firmas tradicionales.

Activar esta característica mejora notablemente la capacidad de detección frente a amenazas actuales.


Revisar los resultados

Una vez finalizado el análisis, LMD asigna un identificador al informe.

Podemos consultarlo mediante:

maldet --report ID

Sustituyendo ID por el número mostrado al finalizar el escaneo.

El informe indica:

  • Archivos sospechosos.
  • Tipo de amenaza.
  • Ruta completa.
  • Acción recomendada.

Antes de eliminar cualquier archivo conviene revisarlo cuidadosamente para evitar falsos positivos.


Cuarentena

LMD permite mover automáticamente los archivos sospechosos a una zona de cuarentena.

Aunque resulta muy útil, nuestra recomendación es sencilla:

Nunca elimines automáticamente un archivo sin revisarlo previamente.

Especialmente en servidores de producción.

En muchas ocasiones un desarrollador puede utilizar funciones PHP avanzadas que, aunque perfectamente legítimas, se parecen a determinados patrones utilizados por malware.


Automatizar los análisis

Una buena práctica consiste en programar un análisis diario mediante cron.

Por ejemplo:

30 3 * * * /usr/local/sbin/maldet -r /var/www 1

Cada madrugada se analizarán únicamente los archivos modificados durante el último día.

De esta forma el impacto sobre el servidor será mínimo.


Buenas prácticas en servidores web

Linux Malware Detect es una excelente herramienta, pero no debe considerarse la única medida de seguridad.

Un servidor correctamente protegido debería combinar:

  • Actualizaciones periódicas del sistema.
  • PHP actualizado.
  • CMS y plugins siempre al día.
  • Contraseñas robustas.
  • Autenticación multifactor siempre que sea posible.
  • Copias de seguridad verificadas.
  • Firewall correctamente configurado.
  • Fail2ban.
  • ModSecurity o un WAF equivalente.
  • Escaneos periódicos mediante LMD.

La seguridad nunca depende de una única herramienta.

Depende de una estrategia completa.


Conclusión

Linux continúa siendo uno de los sistemas operativos más seguros del mercado.

Sin embargo, los servidores Linux que alojan aplicaciones web están sometidos diariamente a miles de intentos de intrusión automatizados.

Pensar que "Linux no necesita antivirus" puede llevar a una falsa sensación de seguridad.

Linux Malware Detect no pretende sustituir las buenas prácticas de administración, sino convertirse en una capa adicional de protección capaz de detectar rápidamente puertas traseras, webshells, scripts maliciosos o código inyectado antes de que provoquen daños mayores.

Más de veinte años después de su aparición, LMD sigue siendo una herramienta imprescindible en el arsenal de cualquier administrador de sistemas Linux.

Si administras servidores con WordPress, Joomla, PrestaShop, Drupal, Moodle, Dolibarr o cualquier otra aplicación web expuesta a Internet, dedicar unos minutos a instalar y configurar Linux Malware Detect es una inversión muy pequeña comparada con el tiempo y el coste que supone recuperarse de un servidor comprometido.

Porque la mejor infección siempre será aquella que consigamos detectar antes de que llegue a convertirse en un problema.



Abrir el archivo /usr/local/maldetect/conf.maldet y hacer cambios de acuerdo a tus necesidades.

Ejemplo de configuración

Aquí está el archivo de configuración de mi servidor.

# [ EMAIL ALERTS ]
##
# The default email alert toggle
# [0 = disabled, 1 = enabled]
email_alert=1

# The subject line for email alerts
email_subj="maldet alert from $(hostname)"

# The destination addresses for email alerts
# [ values are comma (,) spaced ]
email_addr="Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo."

# Ignore e-mail alerts for reports in which all hits have been cleaned.
# This is ideal on very busy servers where cleaned hits can drown out
# other more actionable reports.
email_ignore_clean=0

##
# [ QUARANTINE OPTIONS ]
##
# The default quarantine action for malware hits
# [0 = alert only, 1 = move to quarantine & alert]
quar_hits=1

# Try to clean string based malware injections
# [NOTE: quar_hits=1 required]
# [0 = disabled, 1 = clean]
quar_clean=1

# The default suspend action for users wih hits
# Cpanel suspend or set shell /bin/false on non-Cpanel
# [NOTE: quar_hits=1 required]
# [0 = disabled, 1 = suspend account]
quar_susp=0
# minimum userid that can be suspended
quar_susp_minuid=5


Paso 4: las exploraciones manuales y el uso

4.a: Actualizar:

# maldet -d (antes -update-ver)

Salida:

Linux Malware Detect v1.4.2
            (C) 2002-2013, R-fx Networks < Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.>;
            (C) 2013, Ryan MacDonald < Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.>;
inotifywait (C) 2007, Rohan McGovern < Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.>;
This program may be freely redistributed under the terms of the GNU GPL v2
maldet(5904): {update} checking for available updates...
maldet(5904): {update} hashing install files and checking against server...
maldet(5904): {update} latest version already installed.
# maldet -u (antes -update)

Salida:

Linux Malware Detect v1.4.2
            (C) 2002-2013, R-fx Networks < Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.>;
            (C) 2013, Ryan MacDonald < Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.>;
inotifywait (C) 2007, Rohan McGovern < Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.>;
This program may be freely redistributed under the terms of the GNU GPL v2
maldet(5781): {sigup} performing signature update check...
maldet(5781): {sigup} local signature set is version 2013041816820
maldet(5781): {sigup} latest signature set already installed

4.b: Escanear:

Si deseas escanear el directorio principal (/home), simplemente ejecuta el siguiente comando:

# maldet --scan-all /home

Si hay muchos usuarios el escaneo pueden llevar su tiempo.

Si se realizó una exploración, pero no se pudo activar la opción de cuarentena, no te preocupes sólo tienes que utilizar el siguiente comando para encender y poner en cuarentena todos los resultados previos del análisis de malware.

# maldet --quarantine SCANID
OR
# maldet --clean SCANID

Paso 5: Exploraciones diarias

La instalación predeterminada del escaner LMD está en /etc/cron.daily/maldet y se utiliza para llevar a cabo un análisis diario, actualización de firmas, cuarentena, etc., y envía un mensaje con un informe diario de escaneado de malware a tu correo electrónico especificado. Si es necesario agregar rutas adicionales a escanear, debes editar el archivo de acuerdo a sus necesidades:

# vi /etc/cron.daily/maldet

Ejemplo de email:

malware detect scan report for server.myhost.es:
SCAN ID: 040613-0402.9813
TIME: Apr 6 06:02:44 +0200
PATH: /home*/*/public_html
RANGE: 2 days
TOTAL FILES: 8406
TOTAL HITS: 1
TOTAL CLEANED: 0
NOTE: quarantine is disabled! set quar_hits=1 in conf.maldet or to quarantine results run: maldet -q 040613-0402.9813
FILE HIT LIST:
{HEX}php.cmdshell.unclassed.344 : /home/user1/public_html/dire2/images/upload/files/asphoto.php.pjpg
{HEX}php.nested.base64.513 : /home/user2/public_html/formulario.php

En "FILE HIT LIST:" está el listado de 2 malwares encontrados. En caso de tenerlo configurado para enviarlo directamente a la cuarentena pero luego vemos que se trató de un error, se puede restaurar inmediatamente así:

Restaurar un sólo archivo:

# maldet –restore /home/user2/public_html/formulario.php

Restaurar aplicando el propietario del archivo:

#maldet --user user2 –restore /home/user2/public_html/formulario.php

Esto restaura todo el listado de malware del último escaneado usando el "SCAN ID" que viene en el email:

# maldet --restore 040613-0402.9813

Monitoreo en tiempo real:

La función de supervisión inotify está diseñada para supervisar las rutas/usuarios en tiempo real para las operaciones de creación/ modificar/mover archivos. Esta opción requiere un kernel que soporte inotify_watch (CONFIG_INOTIFY) que se encuentra por defecto en los kernels 2.6.13 + y CentOS/RHEL 5. Si está ejecutando CentOS 4 se debe considerar una actualización con:

https://www.rfxn.com/upgrade-centos-4-8-to-5-3/

Hay tres modos en que el monitor se puede ejecutar o relacionarse con lo que será objeto de seguimiento, son USERS|PATHS|FILES.

ejem: maldet --monitor users
 ejem: maldet --monitor /root/monitor_paths
 ejem: maldet --monitor /home/mike,/home/ashton

Las opciones se desglosan de la siguiente manera:

USERS: La opción USERS tomará las Homedirs de todos los usuarios del sistema que están por encima de inotify_minuid y los supervisa. Si inotify_webdir se establece entonces el usuario WebDir, si existe, sólo será monitoreado.
PATHS: Una lista separada por comas de los PATHS para vigilar
FILES: Una lista de archivos separados por espacio de PATHS para vigilar

Una vez que comience maldet en modo monitor, se preprocesaa los PATHS basados en la opción especificada seguida de iniciar el proceso de inotify. La partida del proceso de inotify puede ser una tarea que consume tiempo, ya que necesita configurar un gancho de monitor para cada archivo bajo los caminos supervisados. Aunque el proceso de inicio puede afectar la carga temporalmente, una vez que el proceso ha comenzado mantiene todos los recursos dentro de la memoria del núcleo y tiene una huella muy pequeña de espacio de usuario en la memoria o uso de la CPU.

Pero el modo monitor no está por defecto. Lo que LMD hace por defecto es ejecutar el cron diario en donde se analizan los 2 últimos días de cambios en los archivos. En cambio en el modo monitor, se miran las notificaciones de Inotify cada 30 segundos, se aplican cuarentenas, etc.. y luego se envía un email diario. El tiempo de inotify se controla por la variable "inotify_stime=30" que viene por defecto

Para monitorear en tiempo real, creamos un archivo "maldet_mon.sh" con los directorios que queramos monitorear:

# nano /scripts/maldet_mon.sh
/home
/tmp
/var/www/htdocs/
(etc...)

y guardamos (Ctrl+X) + Y

aplicamos permisos:

#chmod 0755 /scripts/maldet_mon.sh

y luego ejecutamos:

# maldet --monitor /scripts/maldet_mon.sh

...y ya está monitoreando.

El modo monitor se ejecutaría así para un solo usuario o directorio:

# maldet --monitor /home/usuario2

y para acabar el monitoreo:

# maldet --kill

No se reciben emails

* hay que tener en cuenta que por defecto si LMD no encuentra nada, no envía emails de alerta.

* ejecutar "sh /etc/cron.daily/maldet" y luego mirar el fichero /usr/local/maldetect/event_log y los tiempos para ver si hace su trabajo.

* poner un script p.ej: "soyunmalwaremumalo.php" en algún usuario y con este contenido:

Tal vez, también te interese saber:

Cómo descubrimos que APF vaciaba las reglas de iptables cada cinco minutos

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

 

Tutorial de Linux

Top 15 artículos por Fecha

Viendo artículos de: Julio de 2026

Filtro por Categorías