Módulo 10 · 10.4
Verificação final: o seu servidor posto à prova
Módulo 10: Manter a segurança · Tempo de leitura: 10 minutos
Objetivo de aprendizagem: No final desta lição, conseguirá avaliar o seu próprio servidor com uma lista de verificação e um controlo automático a partir do exterior. Saberá também que pontos têm prioridade e terá um ritmo de manutenção fixo e um breve dossiê do servidor.
Conceitos-chave: lista de verificação, prioridade, controlo a partir do exterior, dossiê do servidor, ritmo de manutenção (semanal, mensal, trimestral, anual), data de fim de suporte da versão, teste de reposição
De lições separadas a um todo
Neste curso configurou um servidor passo a passo: início de sessão seguro, permissões, atualizações, firewall, serviços, um site com https, cópias de segurança, monitorização e contentores. Nesta última lição reúne tudo numa única lista. Verifica o seu servidor, deixa o programa do curso observá-lo a partir do exterior e define a forma como vai manter o servidor nos próximos anos.
Um servidor nunca está "concluído". O software fica desatualizado, os certificados expiram, os discos enchem e as versões chegam ao fim de vida (end of life). Por isso, um ritmo fixo é tão importante como a configuração inicial.
A lista de verificação, por ordem de importância
Nem tudo é igualmente urgente. Percorra a lista de cima para baixo: os primeiros blocos evitam a maior parte dos problemas.
Bloco 1: ninguém entra sem mais nem menos (módulo 2, 3, 5)
- Início de sessão apenas com chaves;
PasswordAuthentication noeKbdInteractiveAuthentication no, verificado comsudo sshd -T. - O root não inicia sessão com palavra-passe; trabalha como utilizador normal com sudo.
- As bases de dados, caches e clusters de pesquisa escutam em
127.0.0.1; as portas 3306, 5432, 6379, 9200 e 27017 estão fechadas ao exterior, tanto em IPv4 como em IPv6. - Uma firewall que, por predefinição, bloqueia todo o tráfego de entrada; apenas as portas de que precisa estão abertas.
- O fail2ban está em execução para o SSH (
fail2ban-client status sshd).
Bloco 2: as falhas são corrigidas (módulo 4)
- Atualizações de segurança automáticas ativadas e verificadas (registo,
apt list --upgradable). - Um plano para reinícios;
/var/run/reboot-requirednão fica lá durante semanas. - A versão continua a ser suportada; a data de fim de suporte está na sua agenda.
Bloco 3: consegue voltar atrás (módulo 8)
- Cópias de segurança encriptadas fora do servidor, automáticas e monitorizadas.
- Um teste de reposição realizado, e sabe quanto tempo demora uma reposição.
- Sabe como criar um snapshot e abrir a consola.
Bloco 4: o exterior está correto (módulo 7)
- Os registos A e AAAA apontam para o seu servidor; o DNS reverso (PTR) aponta de volta para o mesmo nome.
- https com um certificado válido que é renovado automaticamente; o http redireciona para https.
- HSTS e alguns cabeçalhos de segurança; um
security.txtcom um endereço de contacto funcional e uma data de expiração.
Bloco 5: vê o que está a acontecer (módulo 6, 8)
- O journal é persistente; consegue ler registos de antes de um reinício.
- Monitorização a partir do exterior (disponibilidade, certificado) e do interior (disco, serviços), com alertas que chegam efetivamente.
systemctl --failedestá vazio.
Bloco 6: contentores sob controlo (módulo 9, se utilizar Docker)
- Portas dos contentores em
127.0.0.1ou atrás do proxy reverso; nada dedocker.sockem contentores que não precisem mesmo disso. - Os volumes estão incluídos na cópia de segurança; as imagens são atualizadas regularmente.
- Os segredos estão em ficheiros
.envcom permissões restritas, não no Git.
O controlo a partir do exterior
Parte desta lista pode ser verificada pelo programa do curso a partir do exterior, exatamente como qualquer pessoa na internet vê o seu servidor. O exercício final (Z10.4) combina os controlos de exercícios anteriores:
| Componente | O que o programa faz | Da lição |
|---|---|---|
| SSH | Lê o banner de versão e pergunta que métodos de início de sessão o seu servidor oferece para o seu nome de utilizador; não inicia sessão | 2.2 |
| Portas de bases de dados | Tenta apenas estabelecer uma ligação às portas 3306, 5432, 6379, 9200 e 27017; não envia nada | 5.1 |
| https | Verifica o certificado (válido, fidedigno, nome correto) | 7.3 |
| Cabeçalhos | Lê o HSTS e os outros cabeçalhos de segurança | 7.4 |
| security.txt | Obtém /.well-known/security.txt e verifica Contact e Expires | 7.4 |
| Contentor | Procura o cabeçalho com o seu código, definido pelo seu proxy reverso | 9.4 |
O programa não executa nada no seu servidor, não experimenta palavras-passe e não analisa outras portas. Cada endereço só pode ser verificado algumas vezes por hora. Um resultado verde significa: vistos do exterior, os erros mais conhecidos estão ausentes. Não diz nada sobre o que acontece dentro do seu servidor; isso corresponde ao resto da lista de verificação, que tem de verificar por si.
O dossiê do servidor
Escreva para cada servidor um documento breve, guardado fora do servidor (por exemplo, no seu gestor de palavras-passe ou numa pasta partilhada):
- nome, endereços IP, fornecedor, versão e data de fim de suporte;
- o que está em execução (serviços, contentores, sites) e porquê;
- que portas estão abertas e para quê;
- onde estão as cópias de segurança, como se faz a reposição e quando foi o último teste;
- que segredos existem no servidor (não os segredos em si, mas quais são e onde são substituídos);
- o que fez conscientemente de forma diferente da predefinição (por exemplo, uma sugestão do Lynis que ignorou, lição 10.1);
- quem tem acesso (que chaves estão em
authorized_keys).
Este dossiê vale ouro num incidente (lição 10.3), numa atualização de versão (lição 4.3) e quando outra pessoa assume a gestão.
Um ritmo de manutenção
Sem ritmo, o cuidado diminui. Segue-se um exemplo para um servidor pequeno; adapte-o à sua situação.
| Quando | O quê |
|---|---|
| Todas as semanas | Rever a monitorização e os alertas; systemctl --failed; reiniciar se existir /var/run/reboot-required (ou verificar se o reinício automático funcionou) |
| Todos os meses | apt list --upgradable (há algo pendente?); docker compose pull e up -d para os seus contentores, com as notas de versão; espaço em disco; fail2ban-client status; registo à procura de erros invulgares (journalctl -p err --since "1 month ago") |
| Todos os trimestres | Teste de reposição de uma cópia de segurança; rever authorized_keys e os utilizadores (remover quem já não deve ter acesso); voltar a executar o Lynis; repetir o controlo final a partir do exterior (exercício Z10.4) |
| Todos os anos | Atualizar security.txt (Expires); consultar a data de fim de suporte da versão e planear uma atualização; atualizar o dossiê do servidor e o plano de emergência |
Marque estes momentos na sua agenda. Grande parte pode também ser automatizada com a monitorização da lição 8.3, mas continua a ser necessário verificar.
Na prática
Quer o seu servidor esteja na WebOké, quer noutro fornecedor: o fornecedor trata do hardware, da rede e da possibilidade de criar snapshots e cópias de segurança; o utilizador trata de tudo o que está dentro do servidor. Este curso é de autoaprendizagem: ninguém acompanha o seu servidor por si. Com esta lista de verificação, o dossiê e o ritmo, tem, no entanto, tudo o que precisa para fazer essa gestão de forma autónoma e correta.
Resumo
- Verifique o seu servidor por blocos: ninguém entra sem mais nem menos, as falhas são corrigidas, consegue voltar atrás, o exterior está correto, vê o que está a acontecer, contentores sob controlo.
- O controlo a partir do exterior analisa os métodos de início de sessão SSH, as portas de bases de dados, o https, os cabeçalhos, o security.txt e o cabeçalho do seu contentor; o resto verifica por si.
- Mantenha um dossiê do servidor, guardado fora do servidor.
- Trabalhe com um ritmo fixo: semanal, mensal, trimestral e anual.
Questionário
Exercício
Exercício Z10.4: Exercício final: o seu servidor visto do exterior. Deixe o programa do curso verificar o seu servidor de uma só vez a partir do exterior: os métodos de início de sessão SSH para o seu nome de utilizador, as cinco portas de bases de dados, o https e os cabeçalhos do seu site, o seu security.txt e o cabeçalho X-Weboke-Cursus com o seu código no nome onde o seu contentor está em execução. Preencha também a lista de verificação dos blocos 1 a 6 para aquilo que o programa não consegue ver.
Exercício O10.4: O seu ritmo de manutenção. Crie o seu próprio dossiê do servidor e ritmo de manutenção: o que faz semanalmente, mensalmente, trimestralmente e anualmente, e marque esses momentos na sua agenda.
Exercício O10.4: O seu ritmo de manutenção
Este exercício faz você mesmo; ninguém o verifica. Assinale o que já fez e marque o exercício como concluído.
Semanalmente, rever atualizações e alertas; mensalmente, fazer um pequeno restauro e rever os acessos (authorized_keys, utilizadores); trimestralmente, uma verificação final completa; anualmente, uma reconstrução completa a partir da cópia de segurança e renovar o security.txt.
As suas marcações e notas ficam apenas neste navegador; não as enviamos para lado nenhum. Se tiver sessão iniciada, guardamos em Os meus cursos apenas que concluiu o exercício.
Para saber mais
- Proteger o seu VPS: os primeiros cinco minutos
- HSTS e cabeçalhos de segurança para o seu website
- Estratégia de cópias de segurança: a regra 3-2-1 para a sua própria empresa
- securitytxt.org (explicação e gerador para security.txt): https://securitytxt.org/
- NCSC neerlandês, Elaborar uma estratégia de cópias de segurança (fonte neerlandesa, em neerlandês): https://www.ncsc.nl/back-up/een-back-up-strategie-opstellen
- Colocar um security.txt no seu website
- Manter o seu VPS seguro: hardening, Lynis e uma rotina de manutenção
- Curso gratuito Seguro online para empresários 9.3: A sua verificação de segurança e plano
