ZFS envia / recebe por ssh no linux sem permitir login root

6

Desejo replicar o sistema de arquivos storage/photos de source para destination sem ativar o login ssh como root. Eu tentei várias combinações diferentes, como:

sudo zfs send -R storage/photos@frequent_2015-02-12_18:15 | ssh example.com sudo zfs recieve storage/photos
sudo zfs send -R storage/photos@frequent_2015-02-12_18:15 | ssh example.com su -c zfs recieve storage/photos
sudo zfs send -R storage/photos@frequent_2015-02-12_18:15 | ssh example.com 'sudo -S zfs recieve storage/photos <~/topsecret'

Eu não posso usar o sudo -S para passar a senha, pois o fluxo do zfs já está conectado à entrada padrão. E os dois exemplos acima que esperam um terminal interativo e não stdin.

Talvez seja tolice não querer ativar o login root em um servidor. Mas deixa mais uma coisa para um atacante de força bruta adivinhar o que é bom.

    
por Rovanion 12.02.2015 / 19:00

3 respostas

4

Isso não remove completamente o login raiz, mas protege as coisas além de um login completo.

Configure uma confiança SSH copiando a chave pública do usuário local (geralmente ~/.ssh/id_rsa.pub ) para o arquivo authorized_keys ( ~/.ssh/authorized_keys ) para o usuário remoto. Isso elimina os prompts de senha e melhora a segurança, pois as chaves SSH são mais difíceis de usar. Você provavelmente também quer ter certeza de que sshd_config tem PermitRootLogin without-password - isso restringe os logons raiz remotos apenas às chaves SSH (até a senha correta falhará).

Você pode então adicionar segurança usando a diretiva ForceCommand no arquivo authorized_keys para permitir que apenas o comando zfs seja executado.

    
por 12.02.2015 / 20:00
6

Eu me deparei com o mesmo problema hoje cedo. Descobri que você pode autorizar usuários regulares a realizar determinadas operações com o comando "zfs allow":

como root, faça o seguinte no servidor: zfs permitem que seu_usuário receba, crie, monte armazenamento / fotos

Posteriormente, você poderá usar ssh no servidor usando your_username e terá privilégios zfs para receber. Veja aqui: link

    
por 20.05.2015 / 00:46
1

Para aqueles que ainda não foram atualizados para a 0.7.0, aqui está uma solução que eu criei. SSH no servidor remoto e execute:

mkfifo zfs-pipe

# It doesn't ask for your password until the pipe starts to receive 
# data. So check back here when you start the local command
sudo zfs receive storage/photos < zfs-pipe  

Em seguida, localmente:

sudo zfs send -R storage/photos@frequent_2015-02-12_18:15 | \
       pv | ssh example.com "cat - > zfs-pipe"

pv é opcional, é claro. É bom ter algo para assistir ao progresso

Por fim, limpe o tubo:

rm zfs-pipe
    
por 30.08.2017 / 07:45

Tags