Antes de iniciar meu trabalho atual (em uma pequena empresa), meu escritório não tinha firewall na rede e, literalmente, nada estava sendo copiado. Agora que eu entrei como um administrador de sysadmin / one-man-IT-departamento, tenho feito o possível para mudar isso. Depois de explicar ao meu chefe como estávamos vulneráveis, ele me permitiu configurar alguns servidores de backup, um dos quais fica em sua casa.
No momento, estou tentando configurar tudo para automatizar os backups diários. Estou planejando usar o rsync através do ssh para fazer isso. Por questões de segurança e facilidade de automação, eu estava planejando desativar o login de senha ssh e usar apenas a validação de chave rsa. Bem, se eu tiver uma senha definida, então ainda precisaria digitar uma senha, e isso é um problema.
Ter uma senha de senha RSA torna as coisas significativamente menos seguras? Sou a única pessoa na empresa que tem alguma pista sobre esse tipo de coisa, por isso não estou muito preocupada com alguém ligar para um terminal na minha máquina (que está sempre bloqueado quando estou AFK, de qualquer maneira) ) e fazer o ssh em um dos servidores de backup e causar danos. Ainda sou muito, muito novo no mundo da administração de sistemas, e é a primeira vez que faço algo assim, e não quero deixar nenhum buraco na configuração de segurança.
Os computadores em questão aqui estão executando o Ubuntu 10.10, SME Server e OSX 10.6, se isso de alguma forma fizer alguma diferença.
Respostas:
Como você sabe, a vantagem que a senha oferece é que, se alguém puder ler sua chave privada, será "incapaz" de usá-la.
Se alguém puder acessar essa chave privada, você deve ter como garantido que eles têm acesso (comprometido) / comprometido a quaisquer máquinas configuradas com a chave pública. Coisas como .bash_history ou .ssh / config apenas facilitam isso, mesmo que seu .ssh / known_hosts esteja ofuscado.
Não ter uma senha na sua chave não é o fim do mundo. Aqui estão três idéias para tentar ajudá-lo a se proteger um pouco melhor, apesar disso. ( O biggie é o segundo, leia que, se nada mais )
Não use apenas a mesma chave em todas as máquinas e usuários. Gere cada usuário em cada máquina (que precisa fazer esse tipo de coisa) seu próprio par de chaves. Isso permitirá que você mantenha um controle refinado sobre o que é capaz de ssh onde.
Ao adicionar a chave ao seu arquivo allowed_keys, você pode bloqueá-la para poder executar apenas um comando específico ou usá-la apenas em um host específico.
Veja
man ssh
e procure pelo comando = e de =A sintaxe é algo como:
from="1.2.3.4",command="/path/to/executable argument" ssh-rsa key name
ou seja, pop 'rsync' lá dentro e apenas 'rsync' pode ser chamado por sua chave, e somente a partir do endereço IP 1.2.3.4. Vários IPs podem ser separados por
,
. Os nomes de host também são suportados.Outra coisa que vem à mente é a diretiva 'AllowUser' no seu sshd_config
Isso basicamente garante que o usuário possa efetuar login apenas de um determinado local. (embora também aceite curingas) Não resolverá todos os seus problemas, mas pelo menos dificultará os outros.
fonte
Você pode usar algo como chaveiro para tornar a frase secreta menos dolorosa. Isso é um pouco mais seguro do que usar um login sem senha e pode ser usado em combinação com as outras respostas aqui. A resposta da PriceChild foi muito boa.
fonte
Pessoalmente, uso o DSA e não o RSA, principalmente porque é o que eu sempre usei e sei que 'simplesmente funciona', mas acho que a teoria é a mesma. Você pode substituir
dsa
porrsa
no abaixo.Na fonte:
Em seguida, copie o conteúdo do
.ssh/id_dsa.pub
arquivo.ssh/authorized_keys
na conta do usuário no destino.Então você deve conseguir fazer o ssh entre a origem e o destino sem senhas.
fonte