Hardening de segurança do Elasticsearch (security, TLS, roles, audit)
ElasticsearchNível: AvançadoDuração: 10 min (auditoria) – 2 horas (hardening completo)Não é um guia de instalação nem de operação diária: é um runbook por cenários para fazer o hardening de um cluster Elasticsearch em execução. Auditoria de segurança somente leitura, habilitação da security desativada junto com o TLS de transport (restart completo do cluster), migração rolling para TLS no HTTP, roles de DBA/aplicação, API keys com expiração, usuário de emergência no file realm, retirada do elastic do uso diário, desativação do acesso anonymous, network.host e filtragem de IP, audit logging (com verificação de licença), acesso ao repositório de snapshot e token de service account do Kibana; no final a auditoria é repetida para mostrar que os riscos foram fechados. Em instalações RPM/DEB 8.x/9.x a security e o TLS já vêm habilitados: comece pela auditoria e aplique apenas os cenários que apontarem RISCO ou AVISO. Tarefas de shard, disco e node estão no guia de operação; backup, no guia de snapshot.
Topologia: Cluster Elasticsearch com 1–12 nodes (+ Kibana)
Cenários
- Auditoria do estado de segurança (somente leitura) — Não altera nada. Se a security está habilitada, acesso sem autenticação, TLS de HTTP/transport, acesso anonymous, usuários e uso do elastic, API keys sem expiração, audit logging, filtragem de IP, endereços em escuta e situação da licença são reportados como OK / AVISO / RISCO. Escolha esta opção se não souber por onde começar.
- Hardening completo (tudo em sequência) — Auditoria → security + TLS de transport/HTTP (se desativada; restart completo do cluster) → usuários/roles/API keys, desativação do anonymous, retirada do elastic do uso diário → rede e filtragem de IP → audit logging (se a licença permitir) → acesso ao repositório de snapshot → conexão do Kibana → auditoria final.
- Security desativada: habilitar a security e o TLS de transport — Cluster com xpack.security.enabled: false, ou atualizado a partir do 7.x, acessado sem autenticação. Os certificados são gerados e a security é habilitada com TLS de transport (e, opcionalmente, de HTTP). É necessário um restart completo do cluster (indisponibilidade): conexões com e sem TLS entre os nodes não funcionam ao mesmo tempo.
- Migrar o tráfego HTTP (REST) para TLS — A security está habilitada, mas a porta 9200 usa HTTP sem criptografia: as senhas podem ser lidas na rede. Os certificados HTTP são distribuídos e os nodes são reiniciados um a um; os clientes passam a usar https://.
- Usuários, roles, API keys; acesso do elastic e anonymous — As aplicações se conectam com o superusuário elastic, o acesso anonymous está habilitado ou existem API keys sem expiração. Roles/usuários separados para DBA e aplicação, API key com expiração para a aplicação, usuário de emergência (file realm); a senha do elastic é trocada e ele é retirado do uso diário.
- Habilitar o audit logging — Quem acessou qual índice, tentativas de login malsucedidas, negações de autorização e alterações de configurações de segurança precisam ser registradas. xpack.security.audit.enabled (estático, restart rolling) — exige licença (o passo verifica a licença).
- Acesso de rede e filtragem de IP — 9200/9300 escutam em todas as interfaces ou estão abertas para qualquer um. O network.host é restrito ao IP interno e, com o firewall e a filtragem de IP do Elasticsearch, apenas os nodes, o Kibana e a rede da aplicação ficam liberados.
- Proteger o acesso ao repositório de snapshot — O diretório de snapshot pode ser lido por todos, o privilégio de gerenciar o repositório é amplo ou as chaves de acesso à nuvem estão no elasticsearch.yml. Permissões do diretório, role de operador de snapshot, keystore e registro do repositório como somente leitura no segundo cluster.
- Proteger a conexão do Kibana — O Kibana se conecta com o usuário elastic ou sem criptografia, e a senha está em texto puro no kibana.yml. Token de service account, verificação da CA, keystore e chaves de criptografia.
Antes de começar
- root/sudo em todos os nodes; SSH do primeiro node para os demais (distribuição de certificados).
- Cluster green; operações rolling não são feitas em cluster com problema.
- python3 (parsing de JSON), openssl e unzip instalados.
- Habilitar a security (TLS de transport) exige um restart completo do cluster: janela de manutenção e snapshot feito previamente.
- Inventário de clientes (Kibana, Logstash, Beats, aplicações): quando o TLS de HTTP e a autenticação forem habilitados, cada um deles terá de ser atualizado com https + CA + usuário/API key.
- Audit logging e filtragem de IP são recursos de licença paga (Gold ou superior: Gold, Platinum, Enterprise ou trial de 30 dias; nas novas assinaturas self-managed, Platinum/Enterprise). Nenhum dos dois funciona com licença Basic: a configuração é aceita, mas nenhum registro de auditoria é gerado e o filtro de IP não bloqueia nenhuma conexão. Licença: GET _license.
Fases do guia
- Preparação: rede de segurança e ferramentas auxiliares — Backup da configuração, do keystore e dos certificados: … · Fazer um snapshot (recomendado) · PyYAML e ferramentas: … · Permissões dos arquivos de configuração: … · Gravar as credenciais de administrador no arquivo netrc
- Auditoria do estado (somente leitura) — Relatório de segurança: … · Associar os achados aos cenários
- Habilitar a security: diagnóstico e certificados — Diagnóstico: a security está mesmo desativada? · Gerar a CA e os certificados dos nodes · Distribuir os certificados para os nodes · Permissões dos certificados: … · elasticsearch.yml: configurações de security e TLS: … · Parar a alocação de shards e fazer flush
- Habilitar a security: restart completo do cluster — Parar: … · Iniciar: … · Definir a senha do elastic · Gravar as credenciais de administrador no arquivo netrc (elastic) · Reabilitar a alocação de shards e aguardar a saúde do cluster · Senha do kibana_system …
- TLS de HTTP: certificados — Estado atual · Gerar os certificados HTTP · Distribuir e ajustar permissões: …
- Usuários, roles e API keys — Usuários, roles e API keys existentes · Usuário administrador DBA (…) · Usuário de emergência (file realm): … · Role e usuário da aplicação (…) · API key com expiração para a aplicação · Verificar o menor privilégio (…) …
- Acesso de rede e filtragem de IP — Firewall: … · O network.host está no IP interno: … · Filtragem de IP do Elasticsearch
- Audit logging: licença e configurações — A licença permite o audit logging?
- Audit logging: seleção de eventos e verificação — Quais eventos registrar · Os registros de auditoria estão sendo gerados: …
- Acesso ao repositório de snapshot — Permissões do diretório de snapshot: … · Lista de repositórios, chaves de nuvem e role de operador de snapshot
- Conexão do Kibana — Token de service account do Kibana · kibana.yml e keystore · Verificar a conexão do Kibana
- Auditoria final (após o hardening) — Relatório de segurança: … (estado final)
- Limpeza e próximos passos — Apagar os arquivos temporários de credenciais: … · Próximos passos