Comprobación de la seguridad de Linux con Lynis Utility

Descubrimos cómo usar una de las utilidades de software gratuito más potentes para auditar sistemas Linux.


¿Alguna vez te has preguntado qué tan seguro es tu sistema Linux? Hay muchas distribuciones de Linux (cada una con su propia configuración predeterminada) en las que ejecuta docenas de paquetes de software con diferentes números de versión. Además, en su sistema operativo en segundo plano hay muchos servicios que a veces no conoce ni piensa.

Para obtener información sobre el sistema, es decir, verifique el estado general del software, la red y los servicios que se ejecutan en su computadora con Linux instalado, solo ejecute algunos comandos. Pero ahora, ¿qué hacer con la información recibida? ¿Cómo entenderlo? Después de todo, la cantidad de datos que necesita analizar es enorme.

Sería mucho mejor si pudiera ejecutar una herramienta que genera un informe estructurado sobre el nivel de seguridad del sistema. Lynis es una popular herramienta de código abierto que audita sistemas basados ​​en Linux y Unix.

“Realiza un análisis exhaustivo de la configuración de seguridad y se ejecuta en el propio sistema. El objetivo principal es probar las características de seguridad y emitir recomendaciones para mejorar aún más el nivel de seguridad del sistema. También escanea información de todo el sistema, información sobre paquetes instalados y posibles errores de configuración. Lynis [generalmente] es utilizado por los administradores de sistemas y expertos en seguridad para evaluar el nivel de seguridad del sistema " , dice el sitio web del proyecto.

Instalar Lynis


Puede usar gestores de paquetes para instalar Lynis. Siempre que su sistema Linux con la relevancia de las versiones en el repositorio esté en orden, la utilidad se puede instalar así:

dnf install lynis

más o menos:

apt install lynis

Sin embargo, si la versión de la utilidad en su repositorio no es la última, es mejor instalar Lynis con GitHub (uso el sistema Red Hat Linux, pero comandos similares funcionan en cualquier distribución de Linux):

$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.8 (Maipo)
$
$ uname  -r
3.10.0-1127.el7.x86_64
$
$ git clone https://github.com/CISOfy/lynis.git
Cloning into 'lynis'...
remote: Enumerating objects: 30, done.
remote: Counting objects: 100% (30/30), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 12566 (delta 15), reused 8 (delta 0), pack-reused 12536
Receiving objects: 100% (12566/12566), 6.36 MiB | 911.00 KiB/s, done.
Resolving deltas: 100% (9264/9264), done.
$

Tan pronto como clone el repositorio, ingrese y vea lo que está disponible para usted, encuentre el archivo llamado lynis. Esto es en realidad un script de shell, por lo que puede abrirlo y leer lo que hace. De hecho, Lynis se implementa principalmente mediante scripts:

$ cd lynis/
$ ls
CHANGELOG.md        CONTRIBUTING.md  db           developer.prf  FAQ             include  LICENSE  lynis.8  README     SECURITY.md
CODE_OF_CONDUCT.md  CONTRIBUTORS.md  default.prf  extras         HAPPY_USERS.md  INSTALL  lynis    plugins  README.md
$
$ file lynis
lynis: POSIX shell script, ASCII text executable, with very long lines
$ 

Lanzar Lynis


Comencemos con Lynis ejecutando ayuda usando la bandera -h :

$ ./lynis -h

Para que pueda familiarizarse con los comandos principales de la utilidad. Por ejemplo, descubramos su versión:

$ ./lynis show version
3.0.0
$

Para obtener una lista completa de los comandos de Lynis, escriba:

$ ./lynis show commands

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

$

Ejecutar una auditoría de un sistema Linux


Todo comienza con el siguiente comando:

$ ./lynis audit system

Después de comenzar el equipo, recibiremos un informe detallado. No se alarme, lo resolveremos un poco más tarde. También se guardan otros resultados de trabajo en equipo, por lo que puede volver a ellos más tarde.

Aquí Lynis almacena los registros:

  Files:
  - Test and debug information      : /var/log/lynis.log
  - Report data                     : /var/log/lynis-report.dat

Puede verificar si todos los archivos necesarios fueron realmente creados:

$ ls -l /var/log/lynis.log
-rw-r-----. 1 root root 341489 Apr 30 05:52 /var/log/lynis.log
$
$ ls -l /var/log/lynis-report.dat
-rw-r-----. 1 root root 638 Apr 30 05:55 /var/log/lynis-report.dat
$ 

Estudiamos informes


Lynis proporciona informes bastante detallados, por lo que solo cubriré algunos temas importantes. Lo primero que hace Lynis durante la inicialización es encontrar información completa sobre el sistema operativo que se ejecuta en la computadora. Luego, la utilidad verifica qué herramientas y complementos del sistema ha instalado:

[+] Initializing program
------------------------------------
  - Detecting OS...                                           [ DONE ]
  - Checking profiles...                                      [ DONE ]

  ---------------------------------------------------
  Program version:           3.0.0
  Operating system:          Linux
  Operating system name:     Red Hat Enterprise Linux Server 7.8 (Maipo)
  Operating system version:  7.8
  Kernel version:            3.10.0
  Hardware platform:         x86_64
  Hostname:                  example
  ---------------------------------------------------
<<snip>>

[+] System Tools
------------------------------------
  - Scanning available tools...
  - Checking system binaries...

[+] Plugins (phase 1)
------------------------------------
 Note: plugins have more extensive tests and may take several minutes to complete
 
  - Plugin: pam
    [..]
  - Plugin: systemd
    [................]



El informe se divide en diferentes secciones, y cada sección comienza con [+] . Algunas de las secciones se pueden ver a continuación.

[+] Boot and services
[+] Kernel
[+] Memory and Processes
[+] Users, Groups and Authentication
[+] Shells
[+] File systems
[+] USB Devices
[+] Storage
[+] NFS
[+] Name services
[+] Ports and packages
[+] Networking
[+] Printers and Spools
[+] Software: e-mail and messaging
[+] Software: firewalls
[+] Software: webserver
[+] SSH Support
[+] SNMP Support
[+] Databases
[+] LDAP Services
[+] PHP
[+] Squid Support
[+] Logging and files
[+] Insecure services
[+] Banners and identification
[+] Scheduled tasks
[+] Accounting
[+] Time and Synchronization
[+] Cryptography
[+] Virtualization
[+] Containers
[+] Security frameworks
[+] Software: file integrity
[+] Software: System tooling
[+] Software: Malware
[+] File Permissions
[+] Home directories
[+] Kernel Hardening
[+] Hardening
[+] Custom tests

Para mayor claridad, Lynis usa convenciones de color:

  • verde: todo está bien
  • amarillo: no encontró todo lo necesario, o surgió una situación controvertida
  • rojo: esto es un problema, vale la pena tratarlo

En mi caso, la mayoría de los problemas (marcas rojas) se encontraron en la sección Kernel Hardening. El núcleo tiene varios parámetros configurables que determinan su funcionamiento, y algunos de estos parámetros son responsables de la seguridad. Es posible que la distribución no los instale de manera predeterminada por varios motivos, pero debe examinar cada uno de ellos y ver si necesita cambiar su valor en función de sus requisitos de seguridad:

[+] Kernel Hardening
------------------------------------
  - Comparing sysctl key pairs with scan profile
    - fs.protected_hardlinks (exp: 1)                         [ OK ]
    - fs.protected_symlinks (exp: 1)                          [ OK ]
    - fs.suid_dumpable (exp: 0)                               [ OK ]
    - kernel.core_uses_pid (exp: 1)                           [ OK ]
    - kernel.ctrl-alt-del (exp: 0)                            [ OK ]
    - kernel.dmesg_restrict (exp: 1)                          [ DIFFERENT ]
    - kernel.kptr_restrict (exp: 2)                           [ DIFFERENT ]
    - kernel.randomize_va_space (exp: 2)                      [ OK ]
    - kernel.sysrq (exp: 0)                                   [ DIFFERENT ]
    - kernel.yama.ptrace_scope (exp: 1 2 3)                   [ DIFFERENT ]
    - net.ipv4.conf.all.accept_redirects (exp: 0)             [ DIFFERENT ]
    - net.ipv4.conf.all.accept_source_route (exp: 0)          [ OK ]
    - net.ipv4.conf.all.bootp_relay (exp: 0)                  [ OK ]
    - net.ipv4.conf.all.forwarding (exp: 0)                   [ OK ]
    - net.ipv4.conf.all.log_martians (exp: 1)                 [ DIFFERENT ]
    - net.ipv4.conf.all.mc_forwarding (exp: 0)                [ OK ]
    - net.ipv4.conf.all.proxy_arp (exp: 0)                    [ OK ]
    - net.ipv4.conf.all.rp_filter (exp: 1)                    [ OK ]
    - net.ipv4.conf.all.send_redirects (exp: 0)               [ DIFFERENT ]
    - net.ipv4.conf.default.accept_redirects (exp: 0)         [ DIFFERENT ]
    - net.ipv4.conf.default.accept_source_route (exp: 0)      [ OK ]
    - net.ipv4.conf.default.log_martians (exp: 1)             [ DIFFERENT ]
    - net.ipv4.icmp_echo_ignore_broadcasts (exp: 1)           [ OK ]
    - net.ipv4.icmp_ignore_bogus_error_responses (exp: 1)     [ OK ]
    - net.ipv4.tcp_syncookies (exp: 1)                        [ OK ]
    - net.ipv4.tcp_timestamps (exp: 0 1)                      [ OK ]
    - net.ipv6.conf.all.accept_redirects (exp: 0)             [ DIFFERENT ]
    - net.ipv6.conf.all.accept_source_route (exp: 0)          [ OK ]
    - net.ipv6.conf.default.accept_redirects (exp: 0)         [ DIFFERENT ]
    - net.ipv6.conf.default.accept_source_route (exp: 0)      [ OK ]

Mira SSH por ejemplo. Esta es una parte importante del sistema y debe protegerse. Aquí no se resalta nada en rojo, pero Lynis tiene muchas sugerencias para mejorar la seguridad del servicio SSH:

[+] SSH Support
------------------------------------
  - Checking running SSH daemon                               [ FOUND ]
    - Searching SSH configuration                             [ FOUND ]
    - OpenSSH option: AllowTcpForwarding                      [ SUGGESTION ]
    - OpenSSH option: ClientAliveCountMax                     [ SUGGESTION ]
    - OpenSSH option: ClientAliveInterval                     [ OK ]
    - OpenSSH option: Compression                             [ SUGGESTION ]
    - OpenSSH option: FingerprintHash                         [ OK ]
    - OpenSSH option: GatewayPorts                            [ OK ]
    - OpenSSH option: IgnoreRhosts                            [ OK ]
    - OpenSSH option: LoginGraceTime                          [ OK ]
    - OpenSSH option: LogLevel                                [ SUGGESTION ]
    - OpenSSH option: MaxAuthTries                            [ SUGGESTION ]
    - OpenSSH option: MaxSessions                             [ SUGGESTION ]
    - OpenSSH option: PermitRootLogin                         [ SUGGESTION ]
    - OpenSSH option: PermitUserEnvironment                   [ OK ]
    - OpenSSH option: PermitTunnel                            [ OK ]
    - OpenSSH option: Port                                    [ SUGGESTION ]
    - OpenSSH option: PrintLastLog                            [ OK ]
    - OpenSSH option: StrictModes                             [ OK ]
    - OpenSSH option: TCPKeepAlive                            [ SUGGESTION ]
    - OpenSSH option: UseDNS                                  [ SUGGESTION ]
    - OpenSSH option: X11Forwarding                           [ SUGGESTION ]
    - OpenSSH option: AllowAgentForwarding                    [ SUGGESTION ]
    - OpenSSH option: UsePrivilegeSeparation                  [ OK ]
    - OpenSSH option: AllowUsers                              [ NOT FOUND ]
    - OpenSSH option: AllowGroups                             [ NOT FOUND ]

Ni un solo contenedor o máquina virtual se está ejecutando en mi sistema. Entonces, por desgracia, no habrá nada que leer aquí.

[+] Virtualization
------------------------------------

[+] Containers
------------------------------------

Lynis verifica los privilegios de algunos archivos, ya que esto es importante desde el punto de vista de la seguridad.

[+] File Permissions
------------------------------------
  - Starting file permissions check
    File: /boot/grub2/grub.cfg                                [ SUGGESTION ]
    File: /etc/cron.deny                                      [ OK ]
    File: /etc/crontab                                        [ SUGGESTION ]
    File: /etc/group                                          [ OK ]
    File: /etc/group-                                         [ OK ]
    File: /etc/hosts.allow                                    [ OK ]
    File: /etc/hosts.deny                                     [ OK ]
    File: /etc/issue                                          [ OK ]
    File: /etc/issue.net                                      [ OK ]
    File: /etc/motd                                           [ OK ]
    File: /etc/passwd                                         [ OK ]
    File: /etc/passwd-                                        [ OK ]
    File: /etc/ssh/sshd_config                                [ OK ]
    Directory: /root/.ssh                                     [ SUGGESTION ]
    Directory: /etc/cron.d                                    [ SUGGESTION ]
    Directory: /etc/cron.daily                                [ SUGGESTION ]
    Directory: /etc/cron.hourly                               [ SUGGESTION ]
    Directory: /etc/cron.weekly                               [ SUGGESTION ]
    Directory: /etc/cron.monthly                              [ SUGGESTION ]

Al final del informe, Lynis realiza correcciones basadas en los resultados de la auditoría. Cada oración comienza con una descripción, y la prueba ( TEST-ID ) que la generó se indica entre paréntesis junto a ella. La siguiente línea sugiere una solución al problema, si existe:

Suggestions (47):
  ----------------------------
  * If not required, consider explicit disabling of core dump in /etc/security/limits.conf file [KRNL-5820]
      https://cisofy.com/lynis/controls/KRNL-5820/

  * Check PAM configuration, add rounds if applicable and expire passwords to encrypt with new values [AUTH-9229]
      https://cisofy.com/lynis/controls/AUTH-9229/

Lynis ofrece la capacidad de encontrar información adicional sobre cada propuesta de corrección utilizando el comando show details , seguido del número de prueba TEST-ID :

./lynis show details TEST-ID

Por ejemplo, para obtener más información para la prueba SSH-7408, ingreso $ ./lynis mostrar detalles SSH-7408 y obtengo:

$ ./lynis show details SSH-7408
2020-04-30 05:52:23 Performing test ID SSH-7408 (Check SSH specific defined options)
2020-04-30 05:52:23 Test: Checking specific defined options in /tmp/lynis.k8JwazmKc6
2020-04-30 05:52:23 Result: added additional options for OpenSSH < 7.5
2020-04-30 05:52:23 Test: Checking AllowTcpForwarding in /tmp/lynis.k8JwazmKc6
2020-04-30 05:52:23 Result: Option AllowTcpForwarding found
2020-04-30 05:52:23 Result: Option AllowTcpForwarding value is YES
2020-04-30 05:52:23 Result: OpenSSH option AllowTcpForwarding is in a weak configuration state and should be fixed
2020-04-30 05:52:23 Suggestion: Consider hardening SSH configuration [test:SSH-7408] [details:AllowTcpForwarding (set YES to NO)] [solution:-]

Intenta no torturar


Entonces, si desea saber más sobre la seguridad de su sistema Linux, consulte Lynis. Y, si desea obtener más información sobre cómo funciona esta utilidad, cómo recopila toda esta información, busque en sus scripts de shell. Al igual que con otras utilidades, tiene sentido probarlo primero en una máquina virtual.

¿Qué herramientas usas? Comparte en los comentarios.



Como un anuncio


VDSina ofrece servidores en cualquier sistema operativo: elija uno de los sistemas operativos preinstalados o instálelo desde su imagen. Servidores de pago diario o una oferta única en el mercado: ¡servidores eternos!


All Articles