Como Evitar Reinicializações de Servidor com Ubuntu Livepatch

Se você administra seu(s) próprio(s) servidor(es), mais cedo ou mais tarde você enfrenta este problema: você precisa reiniciar o sistema operacional, mas a máquina fornece um serviço importante que você não pode interromper.
Mas por que reiniciar em primeiro lugar? Tudo parece estar funcionando bem após um comando apt-get upgrade. No entanto, as coisas nem sempre são como parecem. Mesmo que o sistema continue funcionando feliz após cada atualização, sem forçar uma reinicialização como o Windows faz, ele ainda pode precisar de uma.
Por exemplo, quando uma vulnerabilidade no núcleo do sistema (kernel) é descoberta, ela é corrigida e enviada para o seu servidor como um novo pacote. Após instalar o kernel corrigido, alguns arquivos são gravados no disco, mas ainda é o antigo kernel que está rodando, já que é ele que está carregado na memória (RAM).
Isso significa que seu servidor ainda está vulnerável às falhas de segurança previamente descobertas. Outros processos, daemons e serviços podem ser recarregados sem reiniciar o sistema operacional. No entanto, o kernel está no coração do sistema e só pode ser recarregado na próxima inicialização.
Leia também: Como Adicionar Usuários no Ubuntu Server
O Ubuntu Livepatch resolve isso permitindo que você feche buracos de segurança do kernel sem reiniciar. Dessa forma, você pode evitar ou adiar reinicializações por semanas ou meses sem comprometer a segurança.
A ideia central por trás do patching ao vivo é simples: quando uma função é vulnerável, reescreva-a, elimine a falha e carregue a nova função em algum lugar na memória. Quando a função é chamada, em vez de executar o código no kernel, redirecione a chamada para usar o código reescrito.

Mas, como na maioria das coisas que parecem funcionar de forma simples, a implementação e os detalhes técnicos não são tão simples.
Como Configurar Livepatch no Ubuntu
Vá para esta página e crie sua conta Ubuntu One. (Ou apenas faça login se você já a tiver.) Verifique seu e-mail e clique no link de confirmação da conta em seguida. Em seguida, visite a página do Serviço Canonical Livepatch. Selecione que você é um “usuário do Ubuntu” e clique no botão para gerar seu token. A próxima página mostrará os comandos exatos que você deve inserir em seu servidor. Após o primeiro comando, insira
sudo snap install canonical-livepatchAguarde alguns segundos até que o pacote snap esteja totalmente instalado. Quando terminar, você receberá um resultado semelhante ao que pode ver na imagem a seguir.

Finalmente, com o último comando da página da Canonical,
sudo canonical-livepatch enable#PASTE_YOUR_TOKEN_HEREo serviço se torna ativo e aplicará automaticamente patches de segurança ao seu kernel, sempre que necessário, sem necessidade de sua intervenção.
Instale o Daemon Snap se Necessário
Em algumas raras ocasiões, o primeiro comando na seção anterior pode falhar, com a seguinte mensagem de erro: -bash: /usr/bin/snap: No such file or directory. Nesse caso, significa que seu provedor de servidor tem uma imagem do sistema operacional Ubuntu que não inclui o serviço daemon snap por padrão. Instale-o com:
sudo apt update &&sudo apt install snapdAgora execute os dois comandos da seção anterior novamente.
Leia também: 5 Patches Úteis para Melhorar Sua Experiência com dwm
Mantendo Seu Servidor Atualizado
O Livepatch aplicará todas as atualizações de segurança necessárias ao seu kernel. No entanto, você ainda deve atualizar o restante do seu sistema regularmente com um comando como:
sudo apt update &&sudo apt upgradeVocê deve fazer isso semanalmente, ou até mais frequentemente, se puder. Pacotes de sistema importantes podem solicitar que sejam reiniciados para aplicar as últimas correções de segurança.

Esses geralmente são reinícios suaves, o que significa que não interrompem nenhum serviço no processo. Por exemplo, neste caso, o daemon SSH foi reiniciado sem interromper a sessão SSH ativa.
Em outras situações, você pode reiniciar serviços você mesmo para garantir que o novo código corrigido seja recarregado e as correções de segurança sejam aplicadas. Por exemplo, se você notar que o pacote nginx foi atualizado, pode executar
systemctl restart nginx.servicepara recarregar o daemon nginx na memória. Caso contrário, mesmo que um pacote seja atualizado, ele pode ainda estar rodando com o código antigo e vulnerável, colocando seu servidor em risco de ataques conhecidos. Algumas atualizações de pacotes fazem isso por você, mas outras não. É por isso que é um bom hábito prestar atenção ao que “apt upgrade” faz e reiniciar alguns serviços, se necessário. Você também pode olhar os logs para ver se isso foi feito automaticamente.
Conclusão
Como você pode ver, a Canonical facilitou bastante a implementação disso em um servidor. No que diz respeito ao kernel, não há trabalho de manutenção necessário da sua parte. A única coisa que você pode fazer é executar
canonical-livepatch statusde tempos em tempos para verificar como as coisas estão.