Si sospechas que tu servidor web tiene malware, lo más probable es que tengas razón: los indicadores típicos son redirecciones inesperadas, páginas con contenido extraño, listas negras de Google o un servidor inusualmente lento. El proceso de detección y eliminación tiene pasos claros — este artículo te los da en orden.
Señales de que tu servidor web tiene malware
Antes del diagnóstico técnico, la mayoría de infecciones se manifiestan con alguna de estas señales:
- Google Search Console muestra advertencias de "sitio engañoso" o "contenido malicioso".
- Los visitantes son redirigidos a sitios de spam, farmacia o phishing.
- El proveedor de hosting suspende la cuenta por envío masivo de spam o actividad maliciosa.
- Aparecen archivos PHP desconocidos en directorios de subida o en la raíz del sitio.
- El servidor consume CPU o RAM de forma anómala sin tráfico que lo justifique.
- Cuentas de email del dominio aparecen en listas negras de spam (Spamhaus, MXToolbox).
Una sola señal puede tener otras causas, pero dos o más señales simultáneas apuntan casi con certeza a una infección activa.
Paso 1: Aislar antes de limpiar
El primer impulso suele ser eliminar los archivos maliciosos de inmediato. Error: si no entiendes primero cómo entró el malware, volverá a aparecer en horas.
Antes de limpiar:
- Activa el modo de mantenimiento o restringe el acceso público para evitar que el malware infecte a más usuarios mientras trabajas.
- Toma un snapshot o backup del estado actual. Puede parecer contraintuitivo guardar una copia "infectada", pero necesitarás los archivos para el análisis forense.
- Cambia todas las credenciales de inmediato: contraseñas de FTP/SSH, panel de control, base de datos y cuentas de administrador del CMS.
Paso 2: Detectar el malware con escáneres y comandos
Escáneres automáticos recomendados
Estas herramientas analizan el código fuente del servidor en busca de patrones maliciosos conocidos:
- Maldet (Linux Malware Detect): especializado en malware de hosting compartido y VPS. Detecta webshells, backdoors y archivos de spam.
- ClamAV: antivirus de código abierto con amplia base de firmas. Útil como segunda opinión.
- ImunifyAV (gratis): si tu proveedor usa Imunify360, la versión gratuita puede escanear desde el panel de control.
- Wordfence (WordPress): para sitios WordPress, el plugin Wordfence incluye un escáner de archivos del núcleo, plugins y temas.
Ejecutar Maldet desde la línea de comandos:
maldet --scan-all /var/www/html
maldet --report
Buscar archivos modificados recientemente
Los archivos del servidor que fueron alterados sin que tú lo hicieras son una señal directa de compromiso:
find /var/www/html -type f -name "*.php" -mtime -7
Este comando lista archivos PHP modificados en los últimos 7 días. Revisa cada resultado: si no recuerdas haber modificado ese archivo, léelo.
Detectar webshells y código ofuscado
grep -rl "base64_decode\|eval(base64\|gzinflate\|str_rot13" /var/www/html
Las funciones base64_decode y eval combinadas son el sello distintivo de la mayoría de webshells y backdoors PHP. Un resultado positivo no siempre es malware (algunos plugins legítimos usan base64), pero merece revisión inmediata.
Revisar conexiones de red salientes sospechosas
ss -tupn | grep ESTABLISHED
Si ves conexiones salientes a IPs o puertos desconocidos, anótalas y consúltalas en servicios como VirusTotal o AbuseIPDB.
Paso 3: Eliminar el malware de forma segura
Una vez identificados los archivos comprometidos, el proceso de limpieza sigue este orden:
- Elimina o restaura los archivos infectados. Para un CMS como WordPress o Joomla, lo más seguro es reemplazar los archivos del núcleo con una copia oficial limpia en lugar de intentar "limpiar" el código malicioso a mano.
- Borra archivos desconocidos en directorios de subidas (
uploads/,tmp/) que no reconozcas, especialmente archivos PHP — los directorios de subida nunca deberían ejecutar PHP. - Revisa y limpia la base de datos. El malware a veces inyecta código en la tabla de opciones de WordPress (
wp_options) o en el contenido de posts. Busca URLs externas sospechosas conSELECT * FROM wp_options WHERE option_value LIKE '%eval%'. - Elimina usuarios administradores no reconocidos tanto en el CMS como en el sistema operativo.
- Revisa los crons del sistema (
crontab -ly/etc/cron.d/) para detectar tareas programadas maliciosas que puedan reinstalar el malware.
Para una limpieza profesional y asegurarte de no dejar ninguna puerta trasera activa, puedes contar con el servicio de expertos en seguridad de servidores de elenlace.com, que incluye análisis forense y endurecimiento post-limpieza.
Paso 4: Cerrar la puerta de entrada y endurecer el servidor
Limpiar sin cerrar la vulnerabilidad original garantiza la reinfección. Las vías de entrada más comunes son:
- Software desactualizado: WordPress, plugins, temas, PHP, MySQL. Actualiza todo inmediatamente.
- Contraseñas débiles o reutilizadas: para FTP, SSH, panel de control y el CMS.
- Permisos de archivo incorrectos: los archivos PHP deben ser 644 y los directorios 755. Si un directorio de subidas tiene permiso 777, cualquier archivo subido puede ejecutarse como código.
- Plugins o temas anulados (nulled): el software pirateado es el vector número uno de infección en sitios WordPress.
- SSH con contraseña habilitado: usa autenticación por clave y deshabilita el acceso SSH con contraseña en
/etc/ssh/sshd_config.
Después de la limpieza, solicita la revisión de las listas negras donde apareció tu dominio: Google Search Console tiene un proceso de revisión que tarda entre 24 y 72 horas, y servicios como Spamhaus tienen formularios de deslistado.
Consulta más guías de seguridad y administración en nuestra sección de servidores VPS.
Conclusiones clave
- Aisla y haz backup antes de limpiar: necesitas entender cómo entró el malware para cerrar la puerta.
- Combina escáneres automáticos (Maldet, ClamAV) con búsqueda manual de archivos modificados recientemente.
- Los patrones
eval(base64_decode(y similares son señales de webshells o backdoors PHP. - Reemplaza los archivos del núcleo del CMS con copias oficiales en lugar de intentar limpiarlos manualmente.
- Sin cerrar la vulnerabilidad original, la reinfección es cuestión de horas.
- Tras la limpieza, actualiza software, corrige permisos y solicita deslistado de listas negras.
Si el alcance de la infección supera lo que puedes gestionar solo, el equipo de elenlace.com ofrece servicios de respuesta a incidentes y limpieza de servidores comprometidos.
Preguntas frecuentes
¿Puedo limpiar el malware sin reinstalar el servidor?
Sí, en la mayoría de los casos. Si el malware se limitó a archivos de la aplicación web y no comprometió el sistema operativo a nivel de kernel o rootkit, una limpieza exhaustiva de archivos y base de datos es suficiente. Si hay indicios de un rootkit (binarios del sistema modificados), la reinstalación es más segura.
¿Cómo sé si mi servidor sigue infectado después de la limpieza?
Ejecuta un segundo escáner (por ejemplo, ClamAV si usaste Maldet primero) y compara el hash MD5 de los archivos críticos con los de una instalación limpia oficial. Herramientas como Wordfence File Integrity Monitoring hacen esta comparación automáticamente para WordPress.
¿El malware en un servidor puede afectar a los visitantes del sitio?
Sí. Los tipos más comunes redirigen a los visitantes a sitios maliciosos, instalan malware en sus navegadores mediante drive-by downloads, o roban credenciales mediante páginas de phishing. Un servidor comprometido es una amenaza directa para tus usuarios.
¿Cuánto tiempo tarda Google en quitar la advertencia de sitio peligroso?
Una vez que limpies el sitio y solicites la revisión en Google Search Console, el proceso tarda entre 24 y 72 horas en condiciones normales. Si el sitio fue marcado varias veces, Google puede ser más cauteloso y tardar hasta una semana.
Compara proveedores
Otros proveedores y guías que vale la pena comparar: