Manter um servidor Linux sempre atualizado é muito importante para evitar brechas de segurança, especialmente em servidores VPS. Eu mantenho meu servidores na DigitalOcean sempre atualizado com auxílio do programa unattended-upgrades. No Ubuntu Server 18.04 ele já vem instalado, mas caso não esteja digite o comando abaixo:

Instalando o unattended-upgrades

sudo apt install unattended-upgrades -y

Depois disso, precisamos o habilitar programa:

sudo dpkg-reconfigure unattended-upgrades 

Irá aparecer uma tela perguntando se queremos “Fazer downloads automaticamente e instalar pacotes estáveis de atualização?” Pressione Enter para afirmar que sim.

  

Agora, configure como e quais as atualizações devem ser realizadas alterando os parâmetros do arquivo 50unattended-upgrades:

sudo vi /etc/apt/apt.conf.d/50unattended-upgrades

Toda linha que tiver "//" não é lida pelo programa. Então, compare o seu arquivo com esse exemplo e remova os "//" de acordo com os exemplo abaixo. Nesse primeiro trecho de configuração, definimos o que queremos que seja atualizado, que são: atualizções normais e de segurança.

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}ESMApps:${distro_codename}-apps-security";
        "${distro_id}ESM:${distro_codename}-infra-security";
        "${distro_id}:${distro_codename}-updates";
//      "${distro_id}:${distro_codename}-proposed";
//      "${distro_id}:${distro_codename}-backports";
};

Especifique um e-mail para receber notificações.

// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. A package that provides
// 'mailx' must be installed. E.g. "user@example.com"
Unattended-Upgrade::Mail "marcelo@bluehat.site";

Essa opção é para remover automaticamente pacotes de kernels não utlizados.

// Remove unused automatically installed kernel-related packages
// (kernel images, kernel headers and kernel version locked tools).
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";

Essa opção é para remover automaticamente pacotes de dependências não utlizadas.

// Do automatic removal of new unused dependencies after the upgrade
// (equivalent to apt-get autoremove)
Unattended-Upgrade::Remove-Unused-Dependencies "true";

Habilite a reinicialização automática

// Automatically reboot *WITHOUT CONFIRMATION*
//  if the file /var/run/reboot-required is found after the upgrade
Unattended-Upgrade::Automatic-Reboot "true";

Defina que horas o servidor deve ser reiniciado

// If automatic reboot is enabled and needed, reboot at the specific
// time instead of immediately
//  Default: "now"
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

Hablite o log

// Enable logging to syslog. Default is False
Unattended-Upgrade::SyslogEnable "true";

Observação: Apesar de termos configurado o e-mail dentro script para sermos avisados quando uma atualização ocorrer, você não receberá e-mails senão configurar o Postfix.

Testando a configuração

Sempre que editamos os parâmetros de um arquivo no Linux precisamos testar se tudo está correto, e nesse caso utilize o comando abaixo:

sudo unattended-upgrades --dry-run -v -d

Se quiser fazer com que o unattended-upgrades seja executado imediatamente, use a linha de comando abaixo:

sudo unattended-upgrades -v -d

Logs

Se quiser olhar detalhadamente os pacotes que foram atualizados, digite:

sudo tail -f /var/log/unattended-upgrades/unattended-upgrades.log

Aqui conseguimos ver tudo o precisamos, como pacotes atualizados, removidos, etc.

Verificando serviços que precisam reiniciados

Em alguns casos, depois que o unattended-upgrades atualiza o sistema ele não reinicia o sistema operacional por não se tratar de uma atualização crítica de segurança. Então é sempre bom durante a sua rotina de auditoria do servidor, verificar se algum serviço (como por exemplo o Apache) precisam ser reiniciado.
Para verificar isso precisamos instalar o pacote debian-goodies:

sudo apt install debian-goodies -y

E depois executamos o comando checkrestart:

sudo checkrestart

Um exemplo do que será exibido:

Found 10 processes using old versions of upgraded files
(8 distinct programs)
(2 distinct packages)

Of these, 2 seem to contain systemd service definitions or init scripts which can be used to restart them.
The following packages seem to have definitions that could be used
to restart their services:
networkd-dispatcher:
	837	/usr/bin/networkd-dispatcher
unattended-upgrades:
	919	/usr/share/unattended-upgrades/unattended-upgrade-shutdown

These are the systemd services:
systemctl restart networkd-dispatcher.service

These are the initd scripts:
service unattended-upgrades restart

Repare, que no exemplo acima o comando encontrou 10 processos que ainda estão usando arquivos de configurações antigos. Depois de algumas linhas, ele mostra que dois destes processos podem ser reiniciados manualmente, que são: networkd-dispatcher.service e o unattended-upgrades. Então, execute as linhas de comando conforme são exibidas, com o sudo no início.

systemctl restart networkd-dispatcher.service
service unattended-upgrades restart

Se você rodar o comando novamente:

sudo checkrestart

o resultado será:

Found 8 processes using old versions of upgraded files
(6 distinct programs)
(0 distinct packages)
No packages seem to need to be restarted.
(please read checkrestart(1))

Agora veja que só temos oito processos que ainda estão usando arquivos de configuração antigos.

Verificando a última vez que o servidor foi reiniciado ou desligado

Talvez você queira simplesmente ver se o unattended-upgrades reiniciou o servidor em algum momento. Para ver isso podemos utilizar o comando abaixo:

last -x reboot

E caso você queira ver a última vez que o servidor foi desligado:

last -x shutdown

Então, gostou desse tutorial? Deixe um comentário abaixo. E até próximo tutorial. :-)

Clique aqui para ver o vídeo deste tutorial.

Sobre

BlueHat Tech Blog é um blog voltado para assuntos técnicos de redes, segurança, Linux e programação criado por Marcelo Dos Santos. Aqui pretendo divulgar o meu conhecimento e fazer dessa plataforma uma ferramenta de backup de tudo o que tenho aprendido.

Últimas publicações

10
Maio2020

Configurando uma red...

Diagrama de topologia

14
Maio2020

Como fazer o editor...

Para fazer isso existem duas formas. Uma que é temporária, ou seja, enquanto você está com o vim ab...

Contribua com esse projeto

Consegui te ajudar de alguma forma? Então me pague um cafezinho e estamos quites. ;-)