Blog

No pretendo ser un gurú. En la red hay muchos y muy buenos.

3 May 2018

Seguridad en la Raspberry. Episodio VIII: Auditoria

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. 

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 -c -Q

Una vez terminado el escaneo, podemos acceder al informe de la auditoría de lynisen 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:-]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: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:

lynis show commands

Obteniendo el siguiente resultado:

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

Para automatizar la auditoría, añadiremos un temporizador que se ejecutará semanalmente, por ejemplo los lunes a mediodia. 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 -c --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

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 ésto:

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

body="$(sudo grep Warning /var/log/lynis.log)" && echo "$body" | mailx -s "[Lynis] Audit webserver"  <user>@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 unicamente 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
Visto 266 veces
Valora este artículo
(0 votos)

Deja un comentario

Asegúrate de llenar la información requerida marcada con (*). No está permitido el código HTML. Tu dirección de correo NO será publicada.

Twitter

Últimos tweets