ULC Lab · implementação reproduzível
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.

- 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
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
| Item | Requisito, 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 |
| Ansible | GPL v3 · a versão estável atual |
| OpenSSH | BSD · a versão estável atual |
| Rsyslog | GPL v3 · a versão estável atual |
Roteiro
- 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.
- 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 ansibleO que você deve ver: Comando 'ansible --version' retorna a versão instalada.
- 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.12O que você deve ver: Consegue acessar ambos os servidores via 'ssh user@192.168.56.11' sem senha.
- 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.iniO que você deve ver: Arquivo hosts.ini contém os IPs dos servidores.
- 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 userO que você deve ver: Ambos os hosts retornam 'pong'.
- 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 EOFO que você deve ver: Playbook criado com tarefas para instalar e configurar Rsyslog.
- Executar o playbook de Rsyslog
Rode o playbook para aplicar as configurações de logs centralizados.
ansible-playbook -i hosts.ini rsyslog.yml -u userO que você deve ver: Saída mostra tarefas 'ok' ou 'changed' para ambos os servidores.
- 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 EOFO que você deve ver: Playbook compliance.yml criado com tarefas de timezone e SSH.
- Executar o playbook de conformidade
Aplique as regras de conformidade nos dois servidores.
ansible-playbook -i hosts.ini compliance.yml -u userO que você deve ver: Saída mostra tarefas 'ok' ou 'changed' para ambos os servidores.
- 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.
- 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.11O que você deve ver: Timezone é America/Manaus. Login root via SSH é negado.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Ping entre todas as VMs | ping -c 2 192.168.56.11 | Recebe respostas de ping. |
| Conectividade Ansible | ansible -i hosts.ini servidores -m ping -u user | Ambos retornam 'pong'. |
| Logs centralizados | sudo grep "Teste de log centralizado" /var/log/syslog | Mensagem aparece no servidor central. |
| Timezone correto | timedatectl | Timezone é America/Manaus. |
| SSH root login bloqueado | ssh root@192.168.56.11 | Acesso negado para root. |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Ansible retorna 'UNREACHABLE' para um host | Chave SSH não copiada ou firewall bloqueando SSH | Verifique 'ssh-copy-id' e regras de firewall |
| Logs não chegam ao servidor central | Firewall bloqueando porta 514 ou erro de configuração do Rsyslog | Verifique 'ufw' e arquivos em /etc/rsyslog.d/ |
| Timezone não muda após playbook | Timezone não suportado ou erro no módulo Ansible | Consulte a documentação do módulo timezone |
| SSH ainda permite root login | Linha duplicada ou mal formatada em sshd_config | Edite /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
- Ansible Documentation · Ansible (Red Hat) (docs.ansible.com)
- YAML Specification · Yaml (yaml.org)
- 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
