Verificando a segurança do Linux com o Lynis Utility

Nós descobrimos como usar um dos mais poderosos utilitários de freeware para auditar sistemas Linux.


Você já se perguntou como o seu sistema Linux é seguro? Existem muitas distribuições Linux (cada uma com suas próprias configurações padrão) nas quais você executa dezenas de pacotes de software com números de versão diferentes. Além disso, no seu sistema operacional em segundo plano, existem muitos serviços que você às vezes não conhece ou pensa.

Para obter informações sobre o sistema, ou seja, verifique o status geral do software, rede e serviços em execução no seu computador com o Linux instalado, basta executar alguns comandos. Mas agora o que fazer com as informações recebidas? Como entender isso? Afinal, a quantidade de dados que você precisa analisar é enorme.

Seria muito melhor se você pudesse executar uma ferramenta que gere um relatório estruturado sobre o nível de segurança do sistema. O Lynis é uma ferramenta popular de código aberto que audita sistemas baseados em Linux e Unix.

“Ele executa uma verificação abrangente das configurações de segurança e é executado no próprio sistema. O objetivo principal é testar os recursos de segurança e emitir recomendações para melhorar ainda mais o nível de segurança do sistema. Ele também verifica informações em todo o sistema, informações sobre pacotes instalados e possíveis erros de configuração. Lynis [geralmente] é usado por administradores de sistema e especialistas em segurança para avaliar o nível de segurança do sistema " , diz o site do projeto.

Instale o Lynis


Você pode usar gerenciadores de pacotes para instalar o Lynis. Desde que seu sistema Linux com a relevância das versões no repositório esteja em ordem, o utilitário pode ser instalado assim:

dnf install lynis

ou então:

apt install lynis

No entanto, se a versão do utilitário em seu repositório não for a mais recente, é melhor instalar o Lynis com o GitHub (eu uso o sistema Red Hat Linux, mas comandos semelhantes funcionam em qualquer distribuição 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.
$

Assim que você clonar o repositório, entre nele e veja o que está disponível para você, encontre um arquivo chamado lynis. Na verdade, este é um script de shell, para que você possa abri-lo e ler o que ele faz. De fato, o Lynis é implementado principalmente usando 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
$ 

Iniciar o Lynis


Vamos começar com o Lynis executando a ajuda usando o sinalizador -h :

$ ./lynis -h

Assim, você pode se familiarizar com os principais comandos do utilitário. Por exemplo, vamos descobrir sua versão:

$ ./lynis show version
3.0.0
$

Para obter uma lista completa dos comandos do Lynis, digite:

$ ./lynis show commands

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

$

Executando uma Auditoria de um Sistema Linux


Tudo começa com o seguinte comando:

$ ./lynis audit system

Depois de iniciar a equipe, receberemos um relatório detalhado. Não se assuste, vamos descobrir um pouco mais tarde. Outros resultados do trabalho em equipe também são salvos, para que você possa retornar posteriormente.

Aqui o Lynis armazena os logs:

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

Você pode verificar se todos os arquivos necessários foram realmente criados:

$ 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
$ 

Estudamos relatórios


O Lynis fornece relatórios bastante detalhados, portanto, abordarei apenas alguns tópicos importantes. A primeira coisa que o Lynis faz durante a inicialização é descobrir informações completas sobre o sistema operacional em execução no computador. Em seguida, o utilitário verifica quais ferramentas e plugins do sistema você instalou:

[+] 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
    [................]



O relatório é dividido em seções diferentes, e cada seção começa com [+] . Algumas das seções podem ser vistas abaixo.

[+] 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 maior clareza, o Lynis usa convenções de cores:

  • verde: está tudo bem
  • amarelo: não encontrou tudo o necessário ou surgiu uma situação controversa
  • vermelho: isso é um problema, vale a pena lidar com isso

No meu caso, a maioria dos problemas (marcas vermelhas) foram encontrados na seção Endurecimento do Kernel. O kernel possui vários parâmetros configuráveis ​​que determinam sua operação e alguns desses parâmetros são responsáveis ​​pela segurança. Uma distribuição pode não instalá-los por padrão por vários motivos, mas você deve examinar cada um deles e verificar se precisa alterar seu valor, dependendo de seus requisitos de segurança:

[+] 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 ]

Veja o SSH, por exemplo. Essa é uma parte importante do sistema e deve ser protegida. Nada está destacado em vermelho aqui, mas o Lynis tem muitas sugestões para melhorar a segurança do serviço 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 ]

Nem um único contêiner ou máquina virtual está em execução no meu sistema. Então, infelizmente, não haverá nada para ler aqui.

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

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

O Lynis verifica os privilégios de alguns arquivos, pois isso é importante do ponto de vista da segurança.

[+] 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 ]

No final do relatório, o Lynis faz correções com base nos resultados da auditoria. Cada sentença começa com uma descrição e o teste ( ID DE TESTE ) que a gerou é indicado entre parênteses ao lado . A próxima linha sugere uma solução para o problema, se existir:

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/

O Lynis torna possível encontrar informações adicionais sobre cada proposta de correção usando o comando show details , seguido pelo número do teste TEST-ID :

./lynis show details TEST-ID

Por exemplo, para descobrir mais informações sobre o teste SSH-7408, insiro $ ./lynis show details SSH-7408 e obtenho:

$ ./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:-]

Tente não torturar


Portanto, se você quiser saber mais sobre a segurança do seu sistema Linux, consulte o Lynis. E, se você quiser saber mais sobre como esse utilitário funciona, como ele coleta todas essas informações, analise seus scripts de shell. Como em outros utilitários, faz sentido experimentá-lo primeiro em uma máquina virtual.

Quais ferramentas você usa? Compartilhe nos comentários.



Como anúncio


O VDSina oferece servidores em qualquer sistema operacional - escolha um dos sistemas operacionais pré-instalados ou instale a partir da sua imagem. Servidores de pagamento diários ou uma oferta exclusiva no mercado - servidores eternos!


All Articles