Entrar ou criar conta

Laboratório: Orquestração de Servidores Linux para Logs e Conformidade com Ansible

Você vai automatizar a configuração de dois servidores Linux para coleta centralizada de logs e aplicação de regras de conformidade usando Ansible. Em cerca de 2 horas, terá um ambiente reproduzível, auditável e pronto para expandir.

Automação de infraestrutura governamental com Ansible
Ligado ao treinamento Automação de infraestrutura governamental com Ansible

Roteiro para estudo em ambiente de laboratório ou de teste. Execute apenas em equipamentos, redes e contas que você tenha autorização para usar, com backup e homologação próprios. Comandos podem causar indisponibilidade ou perda de dados. Software e marcas citados pertencem aos seus titulares. Termos de Uso.

ULC-LAB-GOVE-0002 · Status de validaçãoNão validado pela Upnetix: roteiro derivado da documentação oficial, para você executar e validar
Duração estimada
120 min
Passos
11
Validações
5
Versões da documentação consultada
Ansible a versão estável atual · OpenSSH a versão estável atual · Rsyslog a versão estável atual
Objetivo

O objetivo é demonstrar, de ponta a ponta, como usar Ansible para provisionar e configurar servidores Linux em uma rede privada, centralizando logs com Rsyslog e aplicando regras básicas de conformidade (como SSH seguro e timezone padronizado). O laboratório mostra como a automação reduz erros manuais, garante rastreabilidade e facilita auditoria em ambientes públicos, como os exigidos por órgãos governamentais.

Topologia

Você terá uma máquina de controle (Ansible) conectando-se via SSH a dois servidores Linux (alvos), todos em uma rede privada (por exemplo, 192.168.56.0/24). O servidor 1 atuará como coletor central de logs (Rsyslog server) e o servidor 2 enviará logs para ele. Ambos terão regras de conformidade aplicadas via Ansible.

           +-------------------+
           |  Ansible Control |
           |   192.168.56.10  |
           +--------+----------+
                    |
        -----------------------------
        |                           |
+---------------+           +---------------+
|  Servidor 1   |           |  Servidor 2   |
| 192.168.56.11 |           | 192.168.56.12 |
| (Rsyslog Srv) |           | (Rsyslog Clt) |
+---------------+           +---------------+

Equipamentos e software

ItemRequisito, licença ou versão
Máquina de controle (Ansible)1 vCPU, 1GB RAM, Ubuntu 22.04 ou superior
Servidor Linux 1 (Rsyslog server)1 vCPU, 512MB RAM, Ubuntu 22.04 ou superior
Servidor Linux 2 (Rsyslog client)1 vCPU, 512MB RAM, Ubuntu 22.04 ou superior
AnsibleGPL v3 · a versão estável atual
OpenSSHBSD · a versão estável atual
RsyslogGPL v3 · a versão estável atual

Roteiro

  1. Preparar as VMs e rede privada

    Crie três VMs (Ansible, Servidor 1, Servidor 2) em uma rede privada (ex: VirtualBox NAT Network ou bridge). Isso isola o laboratório e simula um ambiente real.

    O que você deve ver: As três VMs se pingam mutuamente nos IPs privados.

  2. Instalar Ansible na máquina de controle

    Ansible é a ferramenta de automação. Instale-o na máquina de controle para gerenciar os servidores.

    sudo apt update && sudo apt install -y ansible

    O que você deve ver: Comando 'ansible --version' retorna a versão instalada.

  3. Configurar acesso SSH sem senha

    Ansible usa SSH para conectar aos alvos. Gere uma chave SSH e copie para os dois servidores.

    ssh-keygen -t ed25519 -C "ansible-lab"
    ssh-copy-id user@192.168.56.11
    ssh-copy-id user@192.168.56.12

    O que você deve ver: Consegue acessar ambos os servidores via 'ssh user@192.168.56.11' sem senha.

  4. Criar o arquivo de inventário do Ansible

    O inventário define quais hosts Ansible vai gerenciar. Crie um arquivo simples com os IPs dos servidores.

    echo -e "[servidores]
    192.168.56.11
    192.168.56.12" > hosts.ini

    O que você deve ver: Arquivo hosts.ini contém os IPs dos servidores.

  5. Testar conectividade Ansible com os alvos

    Antes de automatizar, valide se o Ansible consegue se conectar aos servidores.

    ansible -i hosts.ini servidores -m ping -u user

    O que você deve ver: Ambos os hosts retornam 'pong'.

  6. Criar playbook para instalar e configurar Rsyslog

    Rsyslog é padrão para logs em Linux. O playbook instala e configura o servidor e o cliente.

    cat > rsyslog.yml <<'EOF'
    - hosts: servidores
      become: yes
      tasks:
        - name: Instalar Rsyslog
          apt:
            name: rsyslog
            state: present
        - name: Configurar Rsyslog Server
          when: inventory_hostname == '192.168.56.11'
          copy:
            dest: /etc/rsyslog.d/60-central.conf
            content: |
              module(load="imudp")
              input(type="imudp" port="514")
              module(load="imtcp")
              input(type="imtcp" port="514")
        - name: Configurar Rsyslog Client
          when: inventory_hostname == '192.168.56.12'
          copy:
            dest: /etc/rsyslog.d/60-client.conf
            content: |
              *.* @@192.168.56.11:514
        - name: Reiniciar Rsyslog
          service:
            name: rsyslog
            state: restarted
    EOF

    O que você deve ver: Playbook criado com tarefas para instalar e configurar Rsyslog.

  7. Executar o playbook de Rsyslog

    Rode o playbook para aplicar as configurações de logs centralizados.

    ansible-playbook -i hosts.ini rsyslog.yml -u user

    O que você deve ver: Saída mostra tarefas 'ok' ou 'changed' para ambos os servidores.

  8. Criar playbook de conformidade básica (SSH e timezone)

    Padronizar configurações críticas é essencial em ambientes públicos. O playbook ajusta o timezone e aplica hardening básico no SSH.

    cat > compliance.yml <<'EOF'
    - hosts: servidores
      become: yes
      tasks:
        - name: Definir timezone para America/Manaus
          timezone:
            name: America/Manaus
        - name: Desabilitar SSH root login
          lineinfile:
            path: /etc/ssh/sshd_config
            regexp: '^PermitRootLogin'
            line: 'PermitRootLogin no'
        - name: Reiniciar SSH
          service:
            name: ssh
            state: restarted
    EOF

    O que você deve ver: Playbook compliance.yml criado com tarefas de timezone e SSH.

  9. Executar o playbook de conformidade

    Aplique as regras de conformidade nos dois servidores.

    ansible-playbook -i hosts.ini compliance.yml -u user

    O que você deve ver: Saída mostra tarefas 'ok' ou 'changed' para ambos os servidores.

  10. Validar centralização de logs

    Gere um log no cliente e verifique se ele chega ao servidor central.

    ssh user@192.168.56.12 'logger "Teste de log centralizado"'
    ssh user@192.168.56.11 'sudo grep "Teste de log centralizado" /var/log/syslog'

    O que você deve ver: A mensagem aparece no /var/log/syslog do servidor 1.

  11. Validar timezone e SSH hardening

    Confirme que o timezone está correto e que o root não pode logar via SSH.

    ansible -i hosts.ini servidores -a 'timedatectl' -u user
    ssh root@192.168.56.11

    O que você deve ver: Timezone é America/Manaus. Login root via SSH é negado.

Como saber que funcionou

TesteComandoCritério
Ping entre todas as VMsping -c 2 192.168.56.11Recebe respostas de ping.
Conectividade Ansibleansible -i hosts.ini servidores -m ping -u userAmbos retornam 'pong'.
Logs centralizadossudo grep "Teste de log centralizado" /var/log/syslogMensagem aparece no servidor central.
Timezone corretotimedatectlTimezone é America/Manaus.
SSH root login bloqueadossh root@192.168.56.11Acesso negado para root.

Troubleshooting

SintomaCausa provávelCorreção
Ansible retorna 'UNREACHABLE' para um hostChave SSH não copiada ou firewall bloqueando SSHVerifique 'ssh-copy-id' e regras de firewall
Logs não chegam ao servidor centralFirewall bloqueando porta 514 ou erro de configuração do RsyslogVerifique 'ufw' e arquivos em /etc/rsyslog.d/
Timezone não muda após playbookTimezone não suportado ou erro no módulo AnsibleConsulte a documentação do módulo timezone
SSH ainda permite root loginLinha duplicada ou mal formatada em sshd_configEdite /etc/ssh/sshd_config manualmente e reinicie o SSH

Segurança e hardening

  • Nunca use senha padrão em ambientes reais
  • Restrinja o acesso SSH por firewall e por IP
  • Aplique atualizações de segurança antes de expor servidores
  • Revise permissões dos arquivos de configuração do Ansible

Checklist final

Referências

  1. Ansible Documentation · Ansible (Red Hat) (docs.ansible.com)
  2. YAML Specification · Yaml (yaml.org)
Verificação editorial
Publicado
09/09/2026
Última revisão
09/09/2026
Versão do conteúdo
1.0
Referências
2 oficiais
Revisão técnica
redação e revisão por IA, URLs conferidas na publicação
Status
Atual
Encontrou um erro? Escreva para comercial@upnetix.com.br com o endereço da página. A revisão semestral por IA nunca altera comandos ou configurações sem passar pela fila de revisão.