Aplicação de Linhas de Base de Segurança e Controles de Conformidade

CompTIABeginner
Pratique Agora

Introdução

Na administração de sistemas e na cibersegurança, uma linha de base de segurança (security baseline) é um nível padronizado de configuração mínima de segurança para um sistema ou rede. Estabelecer linhas de base é um passo fundamental para fortalecer sistemas, reduzir a superfície de ataque e garantir uma postura de segurança consistente em toda uma organização. Os controles de conformidade (compliance controls) são os mecanismos e procedimentos usados para verificar se essas linhas de base estão sendo atendidas e mantidas.

Neste laboratório, você terá experiência prática com esses conceitos em um sistema Linux. Você aprenderá a definir uma linha de base de segurança simples para novas contas de usuário, verificar se a linha de base está corretamente aplicada e configurar o Linux Audit Daemon (auditd) para monitorar arquivos de configuração críticos contra alterações não autorizadas. Este processo é crucial para manter a integridade do sistema e atender aos requisitos de conformidade regulatória.

Ao final deste laboratório, você será capaz de:

  • Modificar as configurações padrão de usuário em todo o sistema.
  • Criar novos usuários que sigam uma linha de base de segurança definida.
  • Verificar a conformidade usando comandos Linux padrão.
  • Configurar o auditd para monitorar alterações em arquivos críticos.
  • Pesquisar e revisar logs de auditoria para eventos de segurança.

Definir uma Linha de Base de Segurança Simples para Padrões de Usuário no Linux

Nesta etapa, você definirá uma linha de base de segurança simples, definindo políticas de senha padrão para todos os novos usuários criados no sistema. Editaremos o arquivo /etc/login.defs, que controla essas configurações padrão.

Primeiro, vamos abrir o arquivo de configuração usando nano com privilégios de sudo, pois este é um arquivo de nível de sistema.

sudo nano /etc/login.defs

Dentro do editor nano, role para baixo para encontrar os três parâmetros a seguir relacionados ao envelhecimento de senhas e modifique seus valores. Você pode usar Ctrl + W para pesquisar texto dentro do nano.

  • PASS_MAX_DAYS: O número máximo de dias que uma senha pode ser usada. Definiremos isso para 90.
  • PASS_MIN_DAYS: O número mínimo de dias permitidos entre as alterações de senha. Definiremos isso para 7.
  • PASS_WARN_AGE: O número de dias de aviso dado antes que uma senha expire. Definiremos isso para 14.

Encontre estas linhas e altere-as para que fiquem assim:

#
## Password aging controls:
#
## PASS_MAX_DAYS Maximum number of days a password may be used.
## PASS_MIN_DAYS Minimum number of days allowed between password changes.
## PASS_WARN_AGE Number of days warning is given before a password expires.
#
PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 14

Após fazer as alterações, salve o arquivo e saia do nano pressionando Ctrl + X, depois Y e, finalmente, Enter.

Você agora estabeleceu uma linha de base de segurança simples para políticas de senha em seu sistema. Qualquer novo usuário criado a partir deste ponto herdará essas configurações.

Verificar Conformidade da Linha de Base com Comandos do Sistema

Nesta etapa, você verificará se a linha de base que você definiu na etapa anterior está sendo aplicada corretamente. A maneira mais direta de fazer isso é criar um novo usuário e inspecionar as propriedades da conta dele.

Primeiro, vamos criar um novo usuário chamado compliance_user. O comando useradd aplicará automaticamente as configurações padrão de /etc/login.defs. O sinalizador -m garante que um diretório pessoal seja criado para o usuário.

sudo useradd -m compliance_user

Este comando não produzirá nenhuma saída se for bem-sucedido. Agora, podemos verificar as configurações de envelhecimento de senha para nosso novo usuário usando o comando chage (change age) com o sinalizador -l (list).

sudo chage -l compliance_user

Você deverá ver uma saída semelhante à seguinte. Observe como os valores para "Maximum number of days between password change" (Número máximo de dias entre a alteração da senha), "Minimum number of days between password change" (Número mínimo de dias entre a alteração da senha) e "Number of days of warning before password expires" (Número de dias de aviso antes que a senha expire) correspondem à linha de base que definimos em /etc/login.defs.

Last password change                                    : Aug 05, 2025
Password expires                                        : Nov 03, 2025
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 7
Maximum number of days between password change          : 90
Number of days of warning before password expires       : 14

Esta saída confirma que nossa linha de base é eficaz e que o sistema está em conformidade com nossa nova política para novos usuários.

Configurar Auditd para Monitoramento de Chamadas de Sistema

Nesta etapa, você configurará o Linux Audit Daemon (auditd) para monitorar nosso arquivo de configuração base, /etc/login.defs, em busca de quaisquer alterações. Este é um controle de conformidade crítico, pois fornece um registro de quem alterou o arquivo e quando.

O serviço auditd usa um conjunto de regras para determinar quais eventos registrar. Adicionaremos uma nova regra para monitorar quaisquer operações de gravação ou alteração de atributos em nosso arquivo.

Adicionaremos nossa regra ao arquivo /etc/audit/rules.d/audit.rules. Usar echo e tee é uma maneira segura de anexar uma linha a um arquivo do sistema.

Execute o seguinte comando para adicionar a regra de auditoria:

sudo echo "-w /etc/login.defs -p wa -k login_defs_changes" | sudo tee -a /etc/audit/rules.d/audit.rules

Vamos detalhar esta regra:

  • -w /etc/login.defs: Especifica o caminho do arquivo a ser monitorado.
  • -p wa: Define as permissões a serem auditadas. w é para acesso de gravação (write), e a é para alterações de atributos (attribute changes).
  • -k login_defs_changes: Atribui uma chave personalizada login_defs_changes a esses eventos de auditoria, facilitando a busca por eles posteriormente.

Para que a nova regra entre em vigor, você deve reiniciar o serviço auditd.

sudo systemctl restart auditd

Agora, o auditd está monitorando ativamente /etc/login.defs para quaisquer modificações.

Gerar e Revisar Logs de Auditoria para Aplicação de Política

Nesta etapa, você testará a regra de auditoria acionando um evento e, em seguida, revisando os logs gerados. Isso demonstra que seu controle de conformidade está funcionando como esperado.

Para acionar a regra de auditoria, precisamos modificar o arquivo /etc/login.defs. Uma maneira simples de fazer isso sem alterar o conteúdo é usar o comando touch, que atualiza os carimbos de data/hora de acesso e modificação do arquivo. Essa ação será detectada pelo auditd como uma alteração de atributo.

sudo touch /etc/login.defs

Esta ação deve ter criado um evento no log de auditoria. Os logs são armazenados em /var/log/audit/audit.log, mas podem ser extensos. Uma maneira melhor de encontrar eventos específicos é usar o comando ausearch com a chave que definimos na etapa anterior.

Vamos procurar por todos os eventos marcados com nossa chave, login_defs_changes:

sudo ausearch -k login_defs_changes

A saída conterá um ou mais registros relacionados ao comando touch. Ela se parecerá com algo assim (carimbos de data/hora e IDs variarão):

----
time->Tue Dec 12 08:35:15 2023
type=PROCTITLE msg=audit(1702370115.321:101): proctitle=746F756368002F6574632F6C6F67696E2E64656673
type=PATH msg=audit(1702370115.321:101): item=0 name="/etc/login.defs" inode=131409 dev=00:1e mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(1702370115.321:101): cwd="/home/labex/project"
type=SYSCALL msg=audit(1702370115.321:101): arch=c000003e syscall=257 success=yes exit=3 a0=ffffff9c a1=7ffc62e212d0 a2=90800 a3=0 items=1 ppid=1102 pid=1125 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=3 comm="touch" exe="/usr/bin/touch" key="login_defs_changes"

Procure por key="login_defs_changes" no final do registro SYSCALL. Isso confirma que o auditd registrou com sucesso o evento de modificação em nosso arquivo de configuração crítico, provando que nosso controle de monitoramento está ativo e eficaz.

Resumo

Parabéns por completar este laboratório! Você percorreu com sucesso o processo fundamental de aplicação de uma linha de base de segurança e implementação de um controle de conformidade em um sistema Linux.

Neste laboratório, você aprendeu a:

  • Definir uma linha de base de segurança para políticas de senha de usuário modificando /etc/login.defs.
  • Verificar se a linha de base está sendo aplicada corretamente para novos usuários com o comando chage.
  • Configurar o Linux Audit Daemon (auditd) para monitorar um arquivo de configuração crítico em busca de alterações.
  • Acionar e revisar logs de auditoria usando ausearch para confirmar que seu controle de monitoramento está funcionando.

Essas habilidades são fundamentais para qualquer administrador de sistema ou profissional de segurança responsável por fortalecer sistemas, manter a postura de segurança e atender a padrões de conformidade como os CIS Benchmarks ou as diretrizes NIST. Ao estabelecer linhas de base claras e monitorar continuamente desvios, você pode melhorar significativamente a segurança e a integridade de sua infraestrutura de TI.