Tutorial de Linux / Configure um novo servidor Linux com segurança
Prepare um servidor novo estabelecendo acesso de recuperação, validando uma conta administrativa comum e uma chave SSH e verificando atualizações, horário, portas necessárias e reinicialização. A configuração está pronta quando o acesso e os serviços necessários continuam funcionando em uma nova sessão e após um reboot planejado.
Depois de criar ou confirmar a conta, abra uma nova sessão com chave SSH e verifique os privilégios antes de aplicar a proteção de firewall e contas. Mantenha o console e a sessão original disponíveis durante as verificações.
As referências do exercício são VMs com instalações convencionais do Ubuntu 26.04 LTS ou Rocky Linux 9. Contêineres, WSL e outras versões podem ter serviços e pacotes diferentes. Prepare a recuperação pelo console e registre as versões seguindo a aula de preparação da máquina virtual, em inglês.
Confirme o servidor e o canal de recuperação
Use uma VM nova ou servidor de teste, com Ubuntu ou Rocky Linux. Garanta acesso administrativo, console e procedimento de backup ou reconstrução. Snapshots ajudam a desfazer alterações, mas não resolvem automaticamente falhas do armazenamento compartilhado nem garantem consistência de aplicações em execução.
cat /etc/os-release
hostnamectl
ip -brief address
ip route
timedatectl
lsblk -f
Registre distribuição, nome do host, endereços, fuso horário e armazenamento para confirmar que está na máquina correta. Não copie cegamente nomes de dispositivos, serviços ou endereços de outro laboratório. Em imagens de nuvem, confira a conta inicial e configurações gerenciadas pelo cloud-init.
Crie ou confirme uma conta administrativa comum
Reutilize uma conta administrativa existente adequada. Se precisar criar courseadmin, confirme antes com getent passwd courseadmin que ela ainda não existe. Use apenas o bloco correspondente à distribuição; digite a senha no prompt, sem colocá-la na linha de comando.
sudo adduser courseadmin
sudo usermod -aG sudo courseadmin
sudo useradd -m courseadmin
sudo passwd courseadmin
sudo usermod -aG wheel courseadmin
Entre pela nova conta em outro terminal e confira id e sudo -v. Grupos suplementares podem não aparecer em uma sessão antiga. Se precisar alterar sudoers, use a validação de visudo e mantenha a sessão administrativa atual. Não conceda acesso administrativo irrestrito sem senha apenas por conveniência.
Valide as chaves SSH em uma segunda conexão
No cliente, escolha uma chave aprovada ou crie uma nova e confirme a impressão digital da chave de host do servidor por um console confiável. Instale somente a chave pública e teste uma conexão separada com a conta e o endereço reais, por exemplo ssh -i CAMINHO_DA_CHAVE courseadmin@ENDERECO. Confirme sudo nessa conexão antes de restringir o firewall ou a autenticação.
Verifique a porta SSH realmente em escuta e as regras de acesso da nuvem. Restrinja senhas somente após validar a autenticação por chave e a recuperação; confira a sintaxe com sshd -t e teste um novo login. Uma conexão existente permanecer aberta não comprova que uma nova seja permitida.
Aplique atualizações planejadas e verifique horário e identidade
sudo apt update
sudo apt upgrade
sudo dnf upgrade
Execute apenas o bloco aplicável e examine a transação proposta antes de aprová-la. Confira reinícios de serviços, alterações de kernel e necessidade de reboot; depois teste novamente as funções utilizadas. Verifique fuso e sincronização com timedatectl e escolha um nome de fuso IANA real conforme a política operacional se for necessário alterar.
Se mudar o nome com sudo hostnamectl set-hostname NOME_REAL, examine DNS, entradas hosts, certificados e integrações de gerenciamento. Confira se cloud-init ou outro provisionamento não sobrescreverá o valor. Habilitar sincronização de horário não prova que o relógio está sincronizado quando o acesso ao servidor de tempo está bloqueado.
Limite a exposição e salve uma linha de base
Verifique o firewall realmente utilizado, normalmente UFW no Ubuntu ou firewalld no Rocky Linux. Permita a porta de administração confirmada e teste uma nova conexão antes de acrescentar somente os serviços necessários. Revise IPv4 e IPv6, firewall do host e política da nuvem; não desative o SELinux sem diagnosticar o problema.
Antes do bloco, confira se $HOME/server-baseline ou seus arquivos já existem. Os redirecionamentos sobrescrevem os arquivos de mesmo nome e chmod altera permissões da pasta; em caso de conflito, escolha uma pasta nova e ajuste todos os caminhos. Não use um link simbólico ou diretório de terceiros para guardar esses dados.
mkdir -p "$HOME/server-baseline"
chmod 700 "$HOME/server-baseline"
cat /etc/os-release > "$HOME/server-baseline/os-release.txt"
ip -brief address > "$HOME/server-baseline/addresses.txt"
lsblk -f > "$HOME/server-baseline/storage.txt"
systemctl --failed > "$HOME/server-baseline/failed-units.txt"
Os arquivos formam uma base de comparação sem senhas, chaves privadas ou tokens. Endereços e topologia de armazenamento ainda são dados operacionais, por isso restrinja o acesso. Guarde backups de configuração separadamente e documente como a equipe autorizada pode recuperá-los.
Verifique a preparação após um reboot planejado
- Escolha uma janela de interrupção, confirme o acesso ao console e salve os dados necessários.
- Execute
sudo rebootde forma planejada e acompanhe a inicialização pelo console. - Teste uma nova sessão SSH, sudo, rede, sincronização de horário, serviços necessários e montagens.
- Compare as unidades falhas e os logs da inicialização atual com a linha de base.
Se a reconexão falhar, use o console para verificar endereço, serviço SSH, porta em escuta e firewall nessa ordem. Restaure conforme a última alteração em vez de fazer várias mudanças especulativas. Só prossiga à instalação da aplicação quando o acesso administrativo estiver validado.




