Estou tentando configurar um servidor de backup. Desejo fazer chroot de cada usuário (cliente) em seu diretório pessoal e permitir apenas que ele use sftp e rsync .
Descobri rapidamente que não era o único a tentar fazer algo assim, encontrei este guia e o segui. Então agora eu tenho usuários chroot'd apenas com sftp.
Então eu descobri que o rsync precisa do ssh para aparecer na outra máquina, e que o sftp não é suficiente. Dar a cada usuário um login ssh é algo que eu queria evitar em primeiro lugar.
Alguém pode pensar em algumas soluções possíveis?
Obrigado,
Marca
Respostas:
Uma solução sftp também exigiria um login ssh para todos, para que você realmente não tenha perdido nada aqui. A concessão de acesso ssh não implica necessariamente acesso total ao shell; por exemplo, isso mostra como usar o
authorized_keys
arquivo ssh para permitir backup via rsync, limitando os comandos disponíveis apenas ao receptor rsync.De fato, se você optar pela autenticação baseada em chave, em vez da autenticação por senha (o que você deve), poderá executar tudo em uma conta de usuário em vez de exigir várias contas. Você usaria chaves para identificar usuários remotos e direcionar o receptor rsync para um diretório específico.
Algo assim, no seu
authorized_keys
arquivo:Alguém usando a
user1
chave privada fará backup/tmp/user1
e alguém usando auser2
chave privada fará backup/tmp/user2
. E assim por diante...fonte
Execute o habitual
rsync
do cliente para o servidor remoto, mas adicione uma opção detalhada adicional:,SSH -v
e depois grep forSending command
. Você verá o comando exato que o cliente está enviando para o servidor remoto:No meu caso, foi
Adicione isso
command="..."
ao/home/USER/.ssh/authorized_keys
arquivo do servidor remoto como @larsks mencionado. Adicione configurações adicionais de segurança, se necessário:no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2..CPhIJ+LVULWz arnis@server
Todos juntos:
(Extraído do muito bom tutorial http://en.positon.org/post/Rsync-command-restriction-over-SSH )
fonte
Você precisará fornecer alguma forma de acesso ao shell para poder usar o rsync, a menos que esteja se conectando diretamente ao servidor rsync - a porta padrão é 873 (TCP).
Na página do manual rysnc :
Para fornecer acesso limitado ao shell, considere o seguinte guia . (Nota: o link original está inoperante)
Ou dê uma olhada no rssh (há um guia para configurar o rssh aqui ):
fonte
rrsync
vez do rssh, incluído no pacote oficial do rsync. Veja derek.simkowiak.net/backing-up-multiple-servers-with-rsnapshotvocê pode escrever um shell que envolve o rsync.
veja a ideia geral aqui: https://sixohthree.com/1458/locking-down-rsync-using-ssh
no seu invólucro, você pode fazer o que quiser e talvez chroot o usuário.
No meu caso, eu precisava ativar a conta virtual usando o mesmo usuário * nix. Consigo fazer isso usando esse tipo de shell, além de muitas linhas no arquivo allowed_keys. Eu não fiz o chroot do usuário, mas adicionei um nível de pasta do usuário no comando rsync server.
veja o usuário do processo de maneira diferente usando a tecla ssh
fonte
SFTP com recursos Rsync, sem shell
Você pode usar LFTP + SFTP em um ambiente chroot e obter os mesmos resultados que o rsync, sem fornecer ao usuário um shell ou fazer personalizações pesadas no ssh com wrappers.
Isso é mais seguro e pode ser substancialmente mais rápido.
fonte
O rsync no chroot é complicado :) Você precisará configurar o ambiente mínimo para / bin / sh e / usr / bin / rsync no diretório chroot (lado do destino) para que ele funcione.
Consulte o artigo completo aqui, a configuração do ambiente rsync é no final
https://medium.com/@deltazero/linux-remote-backup-rsync-chroot-d797ba6babe5
fonte