Seguridad en la Raspberry - Episodio VIII: Auditoría con Lynis

Lupa analizando código con checklist de seguridad
4 min. Lectura
0 Vistas
0 Valoración

Y con este artículo, daré por terminada, por el momento, esta serie dedicada a la seguridad en nuestra Raspberry. Vamos a evaluar las defensas de seguridad del sistema y para ello utilizaré la herramienta de auditoría Lynis. Esta herramienta ofrece sugerencias para instalar, configurar o corregir cualquier medida de seguridad.

Instalación de Lynis

En primer lugar, instalamos la aplicación:

sudo pacman -S lynis

Una vez finalizada, podremos realizar un escáner completo, sin necesidad de que el usuario intervenga en ningún momento (quiet mode), ejecutando el siguiente comando:

sudo lynis audit system

Análisis de resultados

Una vez terminado el escaneo, podemos acceder al informe de la auditoría de Lynis en el fichero /var/log/lynis.log. En él podemos encontrar tanto las advertencias más graves, como las sugerencias de menor importancia:

sudo nano /var/log/lynis.log

Una opción mejor sería utilizar el comando grep, para filtrar únicamente los problemas a resolver cuanto antes:

sudo grep Warning /var/log/lynis.log

Por ejemplo:

2018-03-29 19:50:11 Warning: No password set for single mode [test:AUTH-9308] [details:-] [solution:-]

Y a continuación, filtrar sólo las sugerencias:

sudo grep Suggestion /var/log/lynis.log
...
2018-03-29 19:50:38 Suggestion: Disable drivers like firewire storage when not used, to prevent unauthorized storage or data theft [test:STRG-1846] [details:-] [solution:-]
2018-03-29 19:50:39 Suggestion: Check DNS configuration for the dns domain name [test:NAME-4028] [details:-] [solution:-]
2018-03-29 19:50:40 Suggestion: Add the IP name and FQDN to /etc/hosts for proper name resolving [test:NAME-4404] [details:-] [solution:-]
2018-03-29 19:50:47 Suggestion: Consider installing arch-audit to determine vulnerable packages [test:PKGS-7320] [details:arch-audit] [solution:text:Install arch-audit]
...

Podemos listar todos los comandos posibles con:

sudo lynis show commands

Obteniendo el siguiente resultado:

Commands:
lynis audit
lynis configure
lynis show
lynis update
lynis upload-only

Automatizando la auditoría

Para automatizar la auditoría, añadiremos un temporizador que se ejecutará semanalmente, por ejemplo los lunes a mediodía. Empezamos editando el fichero lynis.service:

sudo nano /etc/systemd/system/lynis.service
[Unit]
Description=Lynis security audit and vulnerability scan

[Service]
Nice=19
IOSchedulingClass=best-effort
IOSchedulingPriority=7
Type=simple
ExecStart=/usr/bin/lynis audit system --cronjob

y continuamos con el lynis.timer:

sudo nano /etc/systemd/system/lynis.timer
[Unit]
Description=Daily run for Lynis security audit and vulnerability scan

[Timer]
OnCalendar=Mon *-*-* 12:00:00
Persistent=true

[Install]
WantedBy=timers.target

Añadimos el servicio recién creado al inicio:

sudo systemctl enable lynis.timer

y arrancamos:

sudo systemctl start lynis.timer

Comprobamos con:

systemctl list-timers --all

Enviar correo electrónico al terminar

Lynis no tiene una opción para poder enviar el informe por correo electrónico, y tampoco tenemos el equivalente de MAILTO de cron al utilizar los temporizadores de systemd. Para solventar estas carencias, escribiremos un script y lo ejecutaremos al finalizar la auditoría.

El script, al que llamaré lynis-email, puede ser algo parecido a esto:

sudo nano /usr/local/bin/lynis-email
#!/bin/bash

body="$(sudo grep Warning /var/log/lynis.log)" && echo "$body" | mailx -s "[Lynis] Audit webserver" usuario@jaumeferre.net

Lo convertimos en ejecutable:

sudo chmod +x /usr/local/bin/lynis-email

En el servicio lynis.service añadimos otro parámetro ExecStart y modificamos type para que se ejecuten ambos en serie:

sudo nano /etc/systemd/system/lynis.service

Y debería quedar así:

Type=oneshot
ExecStart=/usr/bin/lynis -c --cronjob
ExecStart=/usr/local/bin/lynis-email

Recargamos las unidades con:

sudo systemctl daemon-reload

Arch-audit

Una de las sugerencias aportadas en la primera auditoría realizada, es la de instalar arch-audit, una utilidad que se encarga de identificar si alguno de los paquetes instalados ofrecen alguna vulnerabilidad detectada por el equipo de seguridad de Arch, y se refieren únicamente al software incluido en el repositorio oficial. La instalamos:

sudo pacman -S arch-audit

Vamos a crear un servicio y un temporizador nuevo que ejecute arch-audit inmediatamente después de la actualización diaria:

sudo nano /etc/systemd/system/arch-audit.service
[Unit]
Description=Execute arch-audit
After=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/bin/arch-audit -uq
User=nobody
Group=nobody
PrivateTmp=yes
ProtectSystem=full
ProtectHome=true
PrivateDevices=true

y continuamos con la creación del temporizador:

sudo nano /etc/systemd/system/arch-audit.timer
[Unit]
Description=Run arch-audit once a day

[Timer]
OnCalendar=*-*-* 02:15:00
Persistent=true

[Install]
WantedBy=timers.target

Añadimos el servicio:

sudo systemctl enable arch-audit.timer

y arrancamos:

sudo systemctl start arch-audit.timer

Comprobamos con:

systemctl list-timers --all

Con esto concluye la serie de seguridad en Raspberry Pi. Hemos cubierto desde la actualización del firmware hasta la auditoría completa del sistema, pasando por SSH, cortafuegos, detección de rootkits, Fail2ban y copias de seguridad. Tu Raspberry ahora está mucho más protegida.

¿Te ha sido útil?

Ayúdame a mejorar con tu puntuación y comentarios.

0.0 (0 votos)
Jaume Ferré

Jaume Ferré

Soy un entusiasta de las nuevas tecnologías, apasionado por explorar su potencial innovador. Colecciono CDs en formato físico y disfruto creando mezclas musicales. Además, la fotografía es otra de mis pasiones, capturando momentos y expresiones con cada disparo. ¡Gracias por leerme!

💬 Comentarios

Los comentarios están gestionados por GitHub Discussions. Necesitas una cuenta de GitHub para participar. ¡Es gratis y rápido!