Atualizações automáticas de segurança no Ubuntu 16.04

O que faremos
- Instalar unattended-upgrades no Ubuntu 16.04
- Configurar o arquivo 50unattended-upgrades
- Ativar atualizações automáticas via 20auto-upgrades
- Verificar pacotes atualizados e logs
Principais benefícios
- Reduz janela de exposição a vulnerabilidades (aplicar atualizações dentro de 30 dias).
- Automação confiável para servidores sem intervenção manual diária.
- Notificações por e‑mail e reinício automático para minimizar tempo de inatividade manual.
Pré-requisitos
- Servidor com Ubuntu 16.04
- Acesso root ou sudo
- Conexão à Internet para baixar pacotes
Modelo mental rápido
Unattended-upgrades é um serviço que resolve duas perguntas: quais pacotes atualizar e quando fazê-lo. Ele consulta as origens permitidas, baixa pacotes em segundo plano e executa dpkg/apt para instalar, registrando todas as ações em /var/log/unattended-upgrades.
Passo 1 - Instalar unattended-upgrades no Ubuntu 16.04
Conecte-se via SSH como root ou um usuário com sudo:
ssh root@hakase-labs
Atualize a lista de pacotes e instale o pacote:
sudo apt update
sudo apt install unattended-upgrades
Após instalado, os arquivos de configuração ficam em /etc/apt/apt.conf.d/. Vamos editar esses arquivos nos próximos passos.
Passo 2 - Configurar unattended-upgrades
Edite o arquivo principal de configuração 50unattended-upgrades:
cd /etc/apt/apt.conf.d/
vim 50unattended-upgrades
Definir origem de upgrades
O bloco Allowed-Origins controla de onde as atualizações podem ser instaladas. Para limitar a apenas atualizações de segurança em Ubuntu 16.04, comente todas as linhas exceto a relativa a “-security”:
Unattended-Upgrade::Allowed-Origins {
// "${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
// Extended Security Maintenance; doesn't necessarily exist for
// every release and this system may not have it installed, but if
// available, the policy for updates is such that unattended-upgrades
// should also install from here by default.
// "${distro_id}ESM:${distro_codename}";
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};
Alt text: Tela com configuração do arquivo 50unattended-upgrades mostrando Allowed-Origins configurado para -security.
Explicação curta: escolher apenas atualizações “-security” reduz risco de mudanças inesperadas oriundas de updates gerais ou backports.
Blacklist de pacotes (Package-Blacklist)
Use esta seção para impedir atualizações de pacotes específicos que você considere sensíveis (por compatibilidade, drivers proprietários, etc.). Exemplo:
Unattended-Upgrade::Package-Blacklist {
"vim";
"mysql-server";
"mysql-client";
// "libc6";
// "libc6-dev";
// "libc6-i686";
};
Nota: bloquear pacotes centrais como libc6 pode deixar o sistema vulnerável; use essa lista com cautela.
Configurações adicionais úteis
- Notificação por e‑mail: informe quem receberá o resumo das ações.
Unattended-Upgrade::Mail "root";
Certifique-se de ter uma MTA instalada (mailx, sendmail ou postfix). Exemplo de instalação de sendmail:
sudo apt install -y sendmail
- Remover dependências não usadas automaticamente:
Unattended-Upgrade::Remove-Unused-Dependencies "true";
- Reinicialização automática caso necessária (útil para atualizações de kernel):
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "00:00";
A configuração Automatic-Reboot-Time permite agendar a hora do reinício automático (formato HH:MM).
Salve e feche o arquivo.
Importante: o reinício automático pode interromper serviços dependentes. Em ambientes de produção, preferir janelas de manutenção ou usar notificações para aprovar reinícios.
Passo 3 - Ativar atualizações automáticas
Edite o arquivo 20auto-upgrades para habilitar a execução periódica:
cd /etc/apt/apt.conf.d/
vim 20auto-upgrades
Defina as chaves como abaixo para executar diariamente:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "3";
APT::Periodic::Unattended-Upgrade "1";
Significado rápido:
- Update-Package-Lists: 1 ativa atualização da lista de pacotes.
- Download-Upgradeable-Packages: 1 ativa o download automático de pacotes atualizáveis.
- AutocleanInterval: remove pacotes antigos a cada X dias (aqui, 3).
- Unattended-Upgrade: 1 ativa o processo de upgrade automático.
Depois de salvar, o sistema passará a baixar e aplicar atualizações de segurança automaticamente de acordo com a janela agendada pelo APT Periodic (geralmente via systemd timer ou cron segundo a configuração do sistema).
Passo 4 - Verificar pacotes atualizados
Logs do unattended-upgrades
Registros ficam em /var/log/unattended-upgrades. Use:
cd /var/log/unattended-upgrades
ls -lah
Alt text: Listagem de arquivos de log em /var/log/unattended-upgrades mostrando arquivos dpkg e shutdown.
Arquivos principais:
- unattended-upgrades-dpkg.log — ações dpkg de instalar/atualizar/remover.
- unattended-upgrades.log — resumo das atualizações, pacotes bloqueados e erros.
- unattended-upgrades-shutdown.log — ações executadas durante desligamento/ reboot se relevante.
Notificações no login SSH
Após atualizações (especialmente quando requer reinício), a mensagem de login SSH exibirá um aviso sobre pacotes atualizados ou necessidade de reboot.
Alt text: Tela de login SSH mostrando notificação de atualizações pendentes antes da aplicação.
Alt text: Notificação exibida no login SSH informando que pacotes de segurança foram instalados.
Notificações por e‑mail
Se configurado Unattended-Upgrade::Mail, verifique /var/mail para o usuário root:
cd /var/mail/
cat root
Os e‑mails contêm o resumo das operações, pacotes atualizados, pacotes bloqueados e erros, quando existentes.
Verificar reinícios
Para ver registros de reinicializações recentes:
last reboot
Isso ajuda a confirmar se um reinício automático aconteceu após atualizações de kernel ou serviços críticos.
Alt text: Saída do comando last mostrando registros de reinicializações antes e depois do processo de atualização.
Checklist para administradores
- Confirmar backup recente antes de habilitar reinício automático.
- Verificar compatibilidade de aplicações (bloquear pacotes se necessário).
- Instalar e testar MTA para notificações por e‑mail.
- Validar logs em /var/log/unattended-upgrades semanalmente.
- Planejar janelas de manutenção para reinícios críticos.
Soluções alternativas e quando usá-las
- Cron-apt: útil em sistemas legados sem unattended-upgrades; menos granular e com menos suporte a políticas.
- Landscape (Canonical): solução paga com gerenciamento centralizado; escolha em ambientes com muitos hosts e necessidade de controle empresarial.
- Gerenciamento via Ansible/Chef/Puppet: preferível quando você precisa testar e aprovar updates antes de aplicar automaticamente.
Quando não usar unattended-upgrades:
- Aplicações que não toleram reinício automático ou atualizações fora de janelas controladas.
- Ambientes que exigem revisão humana para cada change (compliance/regulatório).
Diagnóstico rápido e resolução de problemas
Problema: não chegam e‑mails de notificação
- Verifique se sendmail/postfix está instalado e ativo.
- Confira /var/log/mail.log para erros de entrega.
Problema: atualizações não aplicadas
- Verifique se APT::Periodic::Unattended-Upgrade está definido para “1” em 20auto-upgrades.
- Rode manualmente para testar:
sudo unattended-upgrade -v
Isso executa em modo verboso e mostra o que seria atualizado.
Problema: reinício não ocorreu
- Confirme Unattended-Upgrade::Automatic-Reboot está “true”.
- Verifique se existe bloqueio via systemd-sleep inhibitor ou se um processo impediu reinício.
Comandos úteis
- Ver logs detalhados:
sudo tail -n 200 /var/log/unattended-upgrades/unattended-upgrades.log
- Executar manualmente (teste):
sudo unattended-upgrade -d
O parâmetro -d roda no modo debug.
Fluxo de decisão (Mermaid)
flowchart TD
A[Detectar atualizações de segurança] --> B{Origem permitida?}
B -- Sim --> C[Baixar pacotes]
C --> D{Pacotes em blacklist?}
D -- Não --> E[Instalar pacotes]
E --> F{Reboot necessário?}
F -- Sim --> G{Automatic-Reboot=true?}
G -- Sim --> H[Agendar e executar reinício]
G -- Não --> I[Notificar administrador]
D -- Sim --> I
B -- Não --> I
I --> J[Fim: registrar em /var/log/unattended-upgrades]
Critérios de aceitação
- unattended-upgrades instalado e serviço habilitado.
- Apenas origens -security listadas em Allowed-Origins (quando desejado).
- APT::Periodic::Unattended-Upgrade configurado com “1”.
- Logs gerados em /var/log/unattended-upgrades após execução.
- Notificações por e‑mail recebidas (se configuradas).
- Reinício automático executado quando necessário (se habilitado).
Boas práticas e recomendações
- Teste em um ambiente de staging antes de habilitar em produção.
- Evite bloquear pacotes essenciais sem entender dependências.
- Mantenha backups e snapshots (se suportado) antes de atualizar sistemas críticos.
- Combine unattended-upgrades com monitoramento (SLI/SLO) para detectar regressões.
Resumo
Você instalou e configurou unattended-upgrades no Ubuntu 16.04 para aplicar automaticamente atualizações de segurança, configurou notificações por e‑mail, remoção de dependências não usadas e reinício automático. Verifique os logs regularmente, mantenha backups e ajuste a blacklist quando necessário.
Referências
Materiais semelhantes

Baixar imagens do Google Docs — 6 métodos

Chrome não abre no Windows — 7 soluções rápidas

Ícone de Configurações ausente no menu Iniciar — correções

Barras de rolagem largas no Windows 10 e 11

Atualizações automáticas de segurança Ubuntu 16.04
