Aqui está um artigo que já aborda o grupo 0 parte da sua pergunta .
Prática Comum
Bem, eu não tenho certeza, mas isso é o que eu fiz, e agradeço comentários / melhorias / sugestões.
Recentemente, configurei um backup remoto para um site drupal de clientes, meu servidor de backup centralizado acessava um servidor remoto e o puxava. Eu segui este princípio.
- Criado um usuário (no controle remoto) que eu queria usar como administrador, esse usuário tinha permissão para fazer login via ssh, mas não usando uma senha, somente por meio de uma chave pública / privada. (o que você precisa manter em segurança e backup em seu local de administração).
- Login raiz desativado via ssh, no controle remoto.
- Permitiu que meu usuário administrador se tornasse root por meio do sudo.
Observe que o usuário que usaria isso é eu e não estou no servidor de backup. Então usei isso para configurar o backup abaixo.
Agora, posso admin remote, root não consigo fazer login apenas no meu usuário admin especial e somente através de certificados de chave.
-
Criado um usuário de backup (o usuário que executará os backups) no local remoto e local, não era o mesmo nome de usuário, chamei-a de algo um pouco incomum (no controle remoto), portanto, mesmo que a chave foi obtido, eles precisariam adivinhar o nome do usuário remoto também. O usuário não é privilegiado e não pôde acessar os diretórios (ou despejar o banco de dados sem senha) no controle remoto.
-
Eu permiti que este usuário no controle remoto executasse um comando em / etc / sudoers
myobscurebackupuser ALL = NOPASSWD: / usr / bin / rsync
-
No meu servidor de backup central, sob o usuário (que novamente não é privilegiado), eu armazeno a chave pública / privada e o script de backup que desejo executar. Somente esse usuário pode obter acesso a scripts / chaves para leitura (bem além do root).
- meu backup foi duas etapas
-
Etapa 1
%código%
_Nota A primeira metade é executada no remoto (até o gzip), e a segunda metade é executada localmente.
-
Etapa 2: estrutura de diretórios remotos do rsync
A senha e o despejo do banco de dados não são armazenados no remoto, eles são passados pela conexão ssh. O db_dump é canalizado diretamente para o gzip, que o envia de volta ao stdout. Eu canalizo isso através do gunzip e direciono o stdout para o arquivo db dump local.