# Runbook de hardening do servidor

Status: checklist operacional para executar no servidor de producao antes da divulgacao ampla.

## Usuario da aplicacao

- Rodar a aplicacao, PM2 e runner com usuario dedicado sem privilegios de root.
- Restringir permissao de escrita ao diretorio da aplicacao, uploads, logs e backups.
- Manter `.env` com permissao `600` e dono do usuario da aplicacao.

## SSH

- Permitir login somente por chave.
- Desativar login root quando o provedor permitir.
- Desativar autenticacao por senha depois de confirmar acesso por chave em outra sessao.
- Restringir acesso administrativo por IP ou VPN quando viavel.

## Sistema operacional

- Ativar atualizacoes automaticas de seguranca.
- Manter firewall permitindo apenas HTTP/HTTPS e SSH administrativo.
- Registrar versao do SO, pacotes alterados e janela de restart.
- Executar backup antes de mudancas sensiveis.

## Validacao

- Login SSH por chave funciona para usuario autorizado.
- Login root e senha falham quando a politica for ativada.
- PM2 reinicia a aplicacao apos reboot.
- `/api/health`, landing, `/login` e `/demo` respondem apos hardening.
- `npm run security:readiness` nao mostra falhas criticas depois de secrets, 2FA e banco estarem configurados.
- Definir `TIKAH_SERVER_HARDENED=true` somente depois de validar usuario nao-root, SSH por chave, firewall, permissoes e restart.
- Resultado fica documentado em `docs/SECURITY_MAINTENANCE_LOG.md` ou sistema equivalente.
