Quando estamos criando máquinas virtuais, um dos maiores problemas que temos é manter os nossos sistemas operacionais atualizados e livres de bugs e falhas de segurança.
Na maioria dos casos, o SO já possui um sistema interno para atualização automática, porém, quando estamos usando um sistema operacional baseado em pacotes como, por exemplo, o Linux, digamos um Ubuntu 18.4 Server, temos que constantemente rodar comandos como apt update
e apt upgrade
para instalar as últimas versões dos pacotes do sistema e assim atualizar para a última versão e corrigir possíveis falhas de segurança.
O problema
O grande problema com estas abordagens é que precisamos constantemente entrar na máquina, rodar o comando e sair. Para solucionar isso, temos as famosas crontabs. Podemos por exemplo executar o seguinte comando:
crontab -e
Para editar a nossa crontab, e ai podemos cadastrar a seguinte linha:
0 3 */5 * * sudo apt update && sudo apt upgrade -y
Esta linha vai fazer com que executemos os comandos de atualização a cada 5 dias as 3 da manhã. É uma boa prática realizar a atualização sempre fora dos horários de utilização da máquina, então esta hora pode ser definida por você sem problemas.
Da mesma forma, a frequência de execução fica a critério de quem está configurando a máquina, eu costumo executar o processo a cada 5 dias porque geralmente não temos grandes atualizações diariamente.
Porém, se tivermos outras atualizações que necessitam de um reboot, por exemplo, atualizações de Kernel, então vamos ter que entrar e reiniciar a máquina manualmente... Deve haver um jeito mais simples de fazer isso, não?
Unattended Upgrades
O Ubuntu (e acredito que a maioria dos sistemas baseados no Debian), possuem um pacote chamado unattended-upgrades
, que pode ser combinado com alguns outros pacotes para prover uma funcionalidade sensacional em termos de segurança e atualização de SO.
Para começar, vamos remover a nossa crontab criada anteriormente e deixar o sistema limpo de novo. Depois, vamos instalar os seguintes pacotes:
sudo apt install -y unattended-upgrades apt-listchanges bsd-mailx
O bsd-mailx
irá pedir algumas configurações iniciais para setar o seu email, estas configurações são específicas de máquina para máquina, mas o ideal é que você escolha a opção Internet Site
para poder configurar o FQDN do seu próprio domínio. Se você precisar realizar alguma reconfiguração do pacote pois ele não está funcionando, use o comando a seguir:
sudo dpkg-reconfigure -plow postfix
Isto fará com que a janela de configuração seja aberta novamente, se você prefere reconfigurar utilizando o arquivo de configuração, basta editar o arquivo /etc/postfix/main.cf
, não se esqueça de executar um restart do postfix depois de salvar o arquivo com o comando:
sudo systemctl restart postfix
Agora, vamos ativar o pacote para as atualizações estáveis usando o seguinte comando:
sudo dpkg -plow unattended-upgrades
Então podemos abrir o arquivo de configuração, use o seu editor preferido para editar o arquivo /etc/apt/apt.conf.d/50unattended-upgrades
. Este arquivo contém todas as configurações necessárias para definirmos a funcionalidade de atualização do pacote, primeiro, vamos configurar nosso email para recebermos notificações de atualizações importantes, para isso vamos setar a chave Unattended-Upgrade::Mail
com o nosso email escolhido, ficando Unattended-Upgrade::Mail "hello@lsantos.dev";
.
Agora vamos configurar uma série de outras chaves para podermos obter o máximo do pacote:
Unattended-Upgrade::Automatic-Reboot "true"; # Para reiniciar o sistema após uma atualização de Kernel
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00"; # Que horas queremos que o sistema reinicie
Agora podemos rodar o comando sudo unattended-upgrades --dry-run
para poder testar se as nossas configurações estão corretas. Este comando não deve ter nenhuma saída, se este é o resultado então está tudo certo!
Conclusão
Com a instalação destes pacotes podemos ficar mais tranquilos em relação a atualizações de sistemas operacionais e também podemos manter as nossas VMs atualizadas de forma mais concisa.
Se você leu o último artigo sobre criar uma VPN própria, a aplicação desta técnica e também 2FA usando SSH podem ser uma boa pedida para deixar a sua VM rodando tranquilamente!
Até mais!