Protección anti-malware en Linux (5+ tips básicos)


Todos sabemos que ningún sistema es invulnerable, pero GNU/Linux es lo más cercano que encontraremos a esto en cuanto a sistemas operativos se refiere. Sin embargo, hay maneras de hacer tu distribución aún más segura que como viene por defecto, veamos cómo:

1) Prevención de Buffer Overflow (Servidores)

Para contrarrestar ataques de desbordamiento de búfer, basta con aplicar los tunings del kernel de los que ya hemos hablado anteriormente por acá... En /etc/sysctl.conf:

VPS pequeño y equipos con memoria limitada (=< 512MB RAM)

# Swappiness & Memory Tunning
vm.swappiness=100
vm.overcommit_memory=2
vm.overcommit_ratio=50
vm.oom_kill_allocating_task=1
vm.dirty_ratio=10
vm.dirty_background_ratio=5

Servidor físico (>= 1GB RAM)

# Swappiness & Memory Tunning
vm.swappiness=60
vm.panic_on_oom=0
vm.oom_kill_allocating_task=1
vm.dirty_ratio=10
vm.dirty_background_ratio=5


2) Antivirus (Instalar y configurar ClamAV)


Tener un antivirus en un equipo GNU/Linux permite (entre otras cosas) analizar archivos/carpetas y dispositivos sospechosos en tu máquina sin poner en peligro otros equipos que puedas tener en una red como computadoras Windows/OS X ya que Linux es, (como ya dije al principio) prácticamente invulnerable al malware común. En un servidor de correo (citando otro ejemplo práctico), el tener un antivirus te permitirá analizar los archivos adjuntos antes de procesarlos. El antivirus más famoso que existe para cualquier distro Linux allá afuera es ClamAV que cuenta con escáneres bajo demanda, interfaz headless, interfaz gráfica e incluso un daemon que se integra perfectamente con servidores de correo.

Instalación

Para instalarlo en Fedora Linux por ejemplo haríamos lo siguiente:

# dnf -y install clamav clamav-update clamtk (GNOME/GTK)
# dnf -y install clamav clamav-update klamav (KDE/QT)
# dnf -y install clamav clamav-update (headless)

Configuración

Después, (independientemente de la distro) lo configuraremos de la siguiente manera:

# nano /etc/freshclam.conf

En el archivo que nos saldrá, comentaremos la línea Example:


Descomentaremos la línea DNSDatabaseInfo:


Nos aseguraremos de que las 2 líneas que referencian DatabaseMirror estén descomentadas y en la que tiene XY reemplazaremos dicho código por el código oficial de nuestro país, mismo que obtendremos de esta lista (En el caso de México por ejemplo el código correcto es mx):


Finalmente regresamos al principio y descomentamos las líneas DatabaseDirectory y UpdateLogFile:


Guardamos el archivo de configuración y corremos en consola:

# freshclam

Análisis por consola

NOTA: Antes de correr un análisis con ClamAV, es recomendable instalar todas las actualizaciones disponibles y limpiar tu sistema con programas como bleachbit/sweeper. Recuerda que bleachbit tiene un modo para root y uno para tu usuario normal, así que te tocará correrlo dos veces.

Una vez que la base de datos de virus se actualice, Si estás en un servidor headless (o no quieres usar la GUI), puedes ejecutar:

$ man clamscan

para aprender más sobre cómo usar clamav desde consola. Para hacer un escaneo estándar del sistema completo, se recomienda usar este comando por ejemplo:

#freshclam && echo "Time: $(date)" >> /var/log/clamscan.log && clamscan -r --bell -io / --log=/var/log/clamscan.log --enable-stats

Este comando actualizará la base de datos de virus, luego correrá un análisis que checará todo el sistema por virus/malware de manera recursiva y hará sonar una "campana" cada que detecte algo. Guardará todo en un archivo llamado clamscan.log dentro de /var/log adjuntando la fecha y hora del análisis al mismo. También, enviará las estadísticas de uso al motor de ClamAV y sus desarrolladores para mejorar la eficacia del antivirus. Cabe destacar que pueden reemplazar / por /home por ejemplo si sólo quieren buscar en sus carpetas personales (o cualquier otra ruta según lo amerite el caso).

Análisis vía GUI

NOTA: Antes de correr un análisis con ClamAV, es recomendable instalar todas las actualizaciones disponibles y limpiar tu sistema con programas como bleachbit/sweeper. Recuerda que bleachbit tiene un modo para root y uno para tu usuario normal, así que te tocará correrlo dos veces.

Si instalaste un GUI, abrimos dicha interfaz nuestro menú de aplicaciones y en Configuración marcamos todas las opciones disponibles:



Después abrimos el Asistente de actualización y activamos las actualizaciones automáticas:



Falsos positivos

Antes de hacer nada con los archivos infectados, recuerda que muchos de estos archivos pueden ser falsos positivos, ya que por ejemplo los archivos chainstate de la blockchain de bitcoin pueden contener firmas de virus que la gente pone ahí para probar las capacidades de la blockchain para guardar cualquier cosa, pero esto no quiere decir que dichos archivos sean malware... En este ejemplo específico estos archivos no son ejecutables y sólo contienen "la descripción" del virus más no el virus en sí. Otro caso interesante son los archivos que contienen malware pero en sí no están infectando nada (como algún keygen que tengas guardado en algún respaldo de Windows o qué se yo); Éstos se pueden tratar como amenazas potenciales o mantener ahí mientras no los ejecutes ni con wine.

Es muy importante entonces que revises uno a uno los archivos infectados (y la amenaza que supuestamente presentan) para asegurarte de si realmente son una amenaza o te encuentras delante de un falso positivo. En este paso tu buscador favorito es la mejor herramienta que podrías tener a la mano.

Tratamiento de amenazas

Para lidiar con los archivos realmente infectados tienes 2 opciones: Eliminarlos o Moverlos a Cuarentena. En caso de que estés usando la GUI ésta debería darte opciones para ambas cosas pero como personalmente a mi no me gustó explicaré el procedimiento vía consola:

Elminarlos es sencillo:

# rm -rf ruta/al/archivo

Para moverlos "a cuarentena" lo ideal es crear un usuario especial para mantener dicha carpeta y después mover los archivos a la misma para aplicarles los siguientes permisos (supongamos que tu usuario se llama antivirus y tu carpeta se llama cuarentena):

# cd /home/antivirus/cuarentena
# find -type d -exec chmod 000 {} \;
# find -type f -exec chmod 000 {} \;

Esto dejará la carpeta y los archivos sellados a lectura/escritura y ejecución, que es lo que queremos cuando sospechamos que algo contiene algún malware.

3) Anti-rootkits

Éstos son los programas chkrootkit y rkhunter. Para instalarlos por ejemplo en Fedora Linux, corremos en una terminal:

# dnf -y install chkrootkit rkhunter

Cada uno de estos se usan como root de la siguiente manera:

# chkrootkit -q
# rkhunter --update && rkhunter --propupd && echo "Time: $(date)" >> /var/log/rkhunter.log && rkhunter --cronjob --rwo --novl -q --summary --logfile /var/log/rkhunter.log

4) Adblock Plus y HTTPS Everywhere

La mayoría del malware actual llega a través del navegador web, esto no es una sorpresa para nadie. La mayoría de navegadores web incluyen protección contra phishing (robo de identidad) y te advierten sobre sitios sospechosos, pero nunca está demás un poco más de seguridad... Instalando estas 2 extensiones (disponibles para Chrome/Firefox y otros) podrás protegerte de bastantes amenazas allá afuera, ABP cuenta con protección anti-malware y DoNotTrack por ejemplo:



Mientras que HTTPS Everywhere se encargará de forzar la utilización de cifrado en tus peticiones a los sitios web que visites, previniendo ataques de phishing/hijacking y similares mediante su programa de SSL Observatory:





5) Firewall


Asegúrate de que el cortafuegos de tu sistema esté activo y bien configurado. Bloquea todos aquellos puertos y servicios que no tengan motivo para estar abiertos. Si usas IPTables, asegúrate de que tienes reglas establecidas tanto para IPv4 como para IPv6.

Extra: Aprende a usar SELinux

Hay distros que vienen por defecto con esta excelente herramienta de seguridad pero mucha gente a veces la desactiva en sus equipos ¡gran error! así es como se usa SELinux:

TUTORIAL: ¿Cómo c*rajo se usa SELinux?

Finalizando...

Estos fueron 5+ tips básicos para la protección anti-malware en GNU/Linux... Obviamente dependiendo del caso específico, otras reglas de seguridad importantes como la autenticación SSH-RSA o el no permitir sudo son relevantes, pero en cuanto a malware se refiere estos flancos son lo más importante. Sin importar la plataforma, no olvides las actualizaciones de rutina, el mantenerte lejos de sitios sospechosos y el no abrir correos que ciertamente parecen una trampa. Aplicar una cultura de la prevención es siempre el paso más importante en cuestiones de seguridad informática.

¿Alguna otra cosa que consideres se nos haya escapado en el artículo?