É seguro para o meu usuário ssh receber o sudo sem senha para 'apt-get update' e 'apt-get upgrade'?

7

Eu tenho uma conta de usuário padrão do SSH no meu servidor pessoal e ela tem acesso ao sudo (por meio de sua senha).

Eu ssh usando uma chave pública, então eu não tenho que digitar a senha da conta para entrar. É seguro para mim permitir que este usuário sudo acesso sem senha execute somente o apt-get update e apt-get upgrade (ou apt-get dist-upgrade ) comandos? Eu estou perguntando do ponto de vista de segurança, não de um ponto de vista de 'atualização quebrada / com bugs'. Eu sou o único a entrar, e se eu quebrar alguma coisa com uma atualização, eu sempre posso sudo (com uma senha) para consertar as coisas.

O ponto principal é poder executar atualizações em tempo hábil no meu servidor sem digitar uma senha desnecessariamente. Mas, se alguém tiver acesso a essa conta, não quero que eles consigam instalar nada, e não sei se há outras preocupações que devo ter com esses dois comandos.

Aqui está a linha exata no meu arquivo sudoers :

stephen ALL=(root) NOPASSWD: /usr/bin/apt-get update, /usr/bin/apt-get upgrade, /usr/bin/apt-get dist-upgrade

    
por Stephen Schrauger 24.05.2015 / 20:26

1 resposta

8

Permitir que um usuário menos confiável execute apt-get update está ok. O pior que podem fazer é consumir muita largura de banda e preencher algum espaço em disco, e eles têm muitos outros meios para fazer isso, a menos que você tenha tomado medidas rigorosas para evitar isso.

É possível que um usuário execute apt-get upgrade para fornecer acesso root. Alguns pacotes consultam o usuário e podem permitir um escape de shell; por exemplo, o usuário que tem acesso ao terminal em que o apt-get upgrade (ou qualquer dpkg -i call) está sendo executado pode ser solicitado a saber o que fazer se um arquivo de configuração tiver sido atualizado e uma das opções é executar um shell para examinar a situação.

Você precisa restringir o comando um pouco mais:

#!/bin/sh
set -ex
exec </dev/null >"/var/log/automatic-apt-upgrade-$(date +%Y%m%d-%H%M%S)-$SUDO_USER.log" 2>&1
apt-get --assume-no upgrade

Isso não deve dar ao usuário uma maneira de se tornar root, já que eles não podem interagir com o gerenciador de pacotes. Como as atualizações às vezes podem quebrar um sistema, e um usuário com apenas essas permissões não conseguiria consertar nada, isso só deveria ser feito com uma versão estável, com apenas atualizações de segurança pendentes. Se for uma atualização do kernel, deixe um usuário com acesso root completo decidir quando acionar uma reinicialização.

A propósito, o usuário não seria capaz de injetar conteúdo do pacote - para isso, eles precisariam estar no controle do servidor que está distribuindo o pacote e, além disso, o servidor assinaria o pacote se o pacote é assinado (o que é o caso de todas as fontes oficiais). É irrelevante para esse vetor de ataque quem está no comando da máquina no momento da atualização.

Tudo isso dito ... use atualizações autônomas , se é isso que você quer.

    
por 24.05.2015 / 23:52