Todo servidor accesible por internet independientemente del sistema operativo es susceptible de que en algún momento pueda infectarse por malware o por algún programa malicioso. En este artículo, te mostraremos como escanear tu servidor en búsqueda de malware y cómo realizar una auditoría del servidor, para poder estar más tranquilo de que tu servidor Linux está limpio. Entre las opciones detallaremos los pasos de ClamAV, Lynis, LMD, Rkhunter, Chkrootkit y PHP-Antimalware-Scanner.
ClamAV
Una de las herramientas más populares para detectar malware, virus, troyanos, etc, es ClamAV. Esta solución esta muy integrada en servidores de correo, pero también funciona muy bien para escanear directorios bajo demanda. Además, esta solución es Open Source.
Para instalar ClamAV en Debian/Ubuntu ejecuta:
# apt install clamav clamav-freshclam clamav-daemon clamdscan
Para instalar ClamAV en CentOS/Alma Linux ejecuta:
# yum install epel-release
# yum -y install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd
Una vez instalado ClamAV lo primero que tendrás que hacer es actualizar las firmas de la base de datos de virus con el siguiente comando:
# freshclam
Ahora ya puedes ejecutar un análisis de un directorio. Para provocar un positivo y comprobar que funciona correctamente ejecutaremos:
# vi /var/virustest.txt
Añadimos el siguiente contenido:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Luego ejecuta el siguiente comando:
# clamscan -r -i /var/
Al finalizar podrás ver que ha encontrado un fichero infectado:
var/virustest.txt: Eicar-Signature FOUND
----------- SCAN SUMMARY -----------
Known viruses: 8577355
Engine version: 0.103.2
Scanned directories: 310
Scanned files: 3204
Infected files: 1
Data scanned: 214.73 MB
Data read: 516.17 MB (ratio 0.42:1)
Time: 37.451 sec (0 m 37 s)
Start Date: 2021:11:15 16:53:15
End Date: 2021:11:15 16:53:53
Con esto ya puedes analizar directorios e incluso configurar una tarea cron para que lo haga de forma automática y enviar un mail con el resultado.
Chkrootkit
Si quieres realizar un escaneado de tu servidor en búsqueda de rootkits una de las opciones más populares es Chkrootkit. Entre las diferentes tareas que puede realizar se encuentra el escaneado de los binarios del sistema, si la interfaz está en modo promiscuo, las eliminaciones de lastlog, si hay eliminaciones de wtmp, comprueba si hay signos de troyanos LKM, reemplazo de cadenas y comprueba si hay eliminaciones de utmp.
¿Qué Rootkits, troyanos y LKM puede detectar?
Existe una extensa lista que puedes consultar en la página oficial haciendo clic en este enlace
Para instalar Chkrootkit en Debian/Ubuntu ejecuta los siguientes comandos:
# apt update
# apt install chkrootkit
Para instalar Chkrootkit en CentOS/Alma Linux ejecuta los siguientes comandos:
# dnf config-manager --enable powertools
# dnf install glibc-static
# yum install tar wget gcc-c++ gcc
# cd /usr/local/src
# wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
# tar -zxvf chkrootkit.tar.gz
# mkdir /usr/local/chkrootkit
# mv /usr/local/src/chkrootkit*/* /usr/local/chkrootkit
# cd /usr/local/chkrootkit
# make sense
Para realizar un análisis en Debian/Ubuntu ejecuta el siguiente comando:
# chkrootkit
Para realizar un análisis en Centos/Alma Linux ejecuta el siguiente comando:
# /usr/local/chkrootkit/chkrootkit
Este comando ejecuta todas las opciones que puede realizar por defecto.
Al finalizar el proceso tendrás un resultado similar al siguiente:
ROOTDIR is `/'
Checking `amd'... not found
Checking `basename'... not infected
Checking `biff'... not found
Checking `chfn'... not infected
Checking `chsh'... not infected
Checking `cron'... not infected
Checking `sniffer'... lo: not promisc and no packet sniffer sockets
eth0: PACKET SNIFFER(/usr/lib/systemd/systemd-networkd[30273])
Checking `w55808'... not infected
Checking `wted'... chkwtmp: nothing deleted
Checking `scalper'... not infected
Checking `slapper'... not infected
Checking `z2'... chklastlog: nothing deleted
Checking `chkutmp'... chkutmp: nothing deleted
Checking `OSX_RSPLUG'... not tested
En negrita tienes un ejemplo de posible infección. En este caso se trataría de un falso positivo ya que la interfaz de red está configurada por dhcp.
Rkhunter
Esta herramienta es muy similar a chkrootkit ya que también realiza escaneados del sistema para detectar rootkits y otras vulnerabilidades. Tener ambas instaladas es una buena idea debido a que algunas veces se producen falsos positivos y así poder constatar el problema con dos herramientas.
Para instalar Rkhunter en Debian/Ubuntu ejecuta los siguientes comandos:
# apt update
# apt install rkhunter
Para instalar Rkhunter en CentOS/Alma Linux ejecuta los siguientes comandos:
# yum install epel-release
# yum update
# yum install rkhunter
Posteriormente, edita la configuración de rkhunter ejecutando el siguiente comando:
# vi /etc/rkhunter.conf
Edita las siguientes variables para que tengan estos valores:
MIRRORS_MODE=0
UPDATE_MIRRORS=1
WEB_CMD=""
El siguiente paso es actualizar las firmas:
# rkhunter --update
Para realizar un análisis ejecuta el siguiente comando:
# rkhunter -c
Al finalizar el proceso tendrás un resultado similar al siguiente:
System checks summary
=====================
File properties checks...
Files checked: 142
Suspect files: 0
Rootkit checks...
Rootkits checked : 498
Possible rootkits: 0
Applications checks...
All checks skipped
The system checks took: 1 minute and 50 seconds
All results have been written to the log file: /var/log/rkhunter.log
One or more warnings have been found while checking the system.
Please check the log file (/var/log/rkhunter.log)
Con esta herramienta junto a Chkrootkit tendrás un buen indicio de si tu sistema está infectado por rootkits.
LMD – Linux Malware Detect
LMD es una herramienta de código abierto que analiza el sistema en busca de Malware. Además, puede integrarse con ClamAV para un mayor rendimiento. Por defecto la integración viene habilitada.
Para instalar LMD ejecuta los siguientes comandos:
# cd /tmp
# wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
# tar -zxvf maldetect-current.tar.gz
# cd maldetect-1.6.4
# bash install.sh
Para ejecutar un análisis de un directorio ejecuta el siguiente comando:
# maldet -a /home
Si no encuentra ningún malware obtendrás la siguiente respuesta:
Linux Malware Detect v1.6.4
(C) 2002-2019, R-fx Networks <proj@rfxn.com>
(C) 2019, Ryan MacDonald <ryan@rfxn.com>
This program may be freely redistributed under the terms of the GNU GPL v2
maldet(3714): {scan} signatures loaded: 17258 (14436 MD5 | 2039 HEX | 783 YARA | 0 USER)
maldet(3714): {scan} building file list for /home/, this might take awhile...
maldet(3714): {scan} setting nice scheduler priorities for all operations: cpunice 19 , ionice 6
maldet(3714): {scan} file list completed in 0s, found 4 files...
maldet(3714): {scan} found clamav binary at /usr/bin/clamdscan, using clamav scanner engine...
maldet(3714): {scan} scan of /home/ (4 files) in progress...
maldet(3714): {scan} scan completed on /home/: files 4, malware hits 0, cleaned hits 0, time 0s
maldet(3714): {scan} scan report saved, to view run: maldet --report 211118-1512.3714
Cómo has instalado anteriormente ClamAv ha utilizado el binario para ejecutar el análisis.
Lynis
Uno de los puntos más importantes para no tener que enfrentarnos a una infección del sistema es la prevención y segurizar previamente el servidor de forma correcta. La función principal de esta herramienta es realizar una auditoría de nuestro servidor en base a configuraciones del sistema operativo, kernel, software instalado, red, criptografía y análisis de malware, para finalmente presentar un reporte con mejoras que se pueden adoptar para mejorar la seguridad de nuestro servidor.
Para instalar lynis en Debian/Ubuntu ejecuta los siguientes comandos:
# apt install lynis
Para instalar lynis en CentOS/Alma Linux ejecuta los siguientes comandos:
# yum install epel-release -y
# yum install lynis -y
Para realizar un análisis ejecuta:
# lynis audit system
El resultado nos dará avisos de que hay que mejorar en nuestro sistema y además nos proporciona enlaces web con información de como solucionar el posible problema:
-[ Lynis 2.6.2 Results ]-
Warnings (5):
----------------------------
! Version of Lynis is very old and should be updated [LYNIS]
https://cisofy.com/controls/LYNIS/
! No password set for single mode [AUTH-9308]
https://cisofy.com/controls/AUTH-9308/
! Found one or more vulnerable packages. [PKGS-7392]
https://cisofy.com/controls/PKGS-7392/
! Found some information disclosure in SMTP banner (OS or software name) [MAIL-8818]
https://cisofy.com/controls/MAIL-8818/
! iptables module(s) loaded, but no rules active [FIRE-4512]
https://cisofy.com/controls/FIRE-4512/
Suggestions (50):
----------------------------
* Install libpam-tmpdir to set $TMP and $TMPDIR for PAM sessions [CUST-0280]
https://your-domain.example.org/controls/CUST-0280/
* Install libpam-usb to enable multi-factor authentication for PAM sessions [CUST-0285]
https://your-domain.example.org/controls/CUST-0285/
* Install apt-listbugs to display a list of critical bugs prior to each APT installation. [CUST-0810]
https://your-domain.example.org/controls/CUST-0810/
* Install apt-listchanges to display any significant changes prior to any upgrade via APT. [CUST-0811]
https://your-domain.example.org/controls/CUST-0811/
* Install debian-goodies so that you can run checkrestart after upgrades to determine which services are using old versions of libraries and need restarting. [CUST-0830]
https://your-domain.example.org/controls/CUST-0830/
Plugins
Si se posee una subscripción a la versión Enterprise es posible ampliar las características de Lynis a partir de plugins. Puedes encontrarlos en este enlace
PHP-Antimalware-Scanner
PHP-Antimalware-Scanner es una herramienta de seguridad para sitios web desarrollados en PHP que busca detectar malware y otros tipos de amenazas. Esta herramienta funciona escaneando los archivos de código fuente de un sitio web en busca de patrones de código sospechosos que puedan ser indicativos de malware.
Para utilizarlo, puedes simplemente descargarlo:
# wget https://raw.githubusercontent.com/marcocesarato/PHP-Antimalware-Scanner/master/dist/scanner
Y ejecutarlo con un CLI de PHP:
# php scanner /ruta/directorio/web/ --auto-skip --all
Realizará un escaneo de la ruta indicada y al encontrar un archivo infectado, preguntará que opción deseas aplicar. Aunque es importante tener en cuenta que PHP-Antimalware-Scanner no es una solución completa de seguridad para su sitio web.
Esperamos haberte ayudado con este tutorial 🙂. Recuerda, si tienes consultas sobre esta u otra cuestión relacionada con tus servidores en Clouding, no dudes en escribir a soporte@clouding.io ¡Estamos a tu lado para lo que necesites!