Preciso ter uma senha para minha chave SSH RSA?

71

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.

eckza
fonte
5
Realmente não deve haver perda de segurança por não ter uma senha na sua chave. Manter a integridade de segurança da chave nesse momento se torna essencial, pois se alguém puder copiá-la, não haverá uma chave secreta que os impediria de usá-la.
22611 Chris Marisic
11
Talvez seja só eu, mas não tenho idéia do que o comentário acima está tentando dizer.
underscore_d
3
@underscore_d Ele está basicamente dizendo: Não há impacto na segurança do SSH para ter ou não senhas para suas chaves, MAS você precisa manter suas chaves localmente seguras.
Hartator

Respostas:

89

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 )


  1. 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.

  2. 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 sshe 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.

  3. Outra coisa que vem à mente é a diretiva 'AllowUser' no seu sshd_config

    AllowUsers

    Essa palavra-chave pode ser seguida por uma lista de padrões de nome de usuário, separados por espaços. Se especificado, o login é permitido apenas para nomes de usuários que correspondem a um dos padrões. '*' e '?' pode ser usado como curingas nos padrões. Somente nomes de usuário são válidos; um ID numérico do usuário não é reconhecido. Por padrão, o login é permitido para todos os usuários. Se o padrão assumir o formato USER @ HOST, USER e HOST serão verificados separadamente, restringindo logins a usuários específicos de hosts específicos.

    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.

PriceChild
fonte
11
Linda - é exatamente isso que eu precisava saber. Muito obrigado!
eckza
3
Não tem problema, apenas não tome isso como uma lista exaustiva! :-) Coisas como revisar regularmente auth.log / secure etc. vêm à mente.
precisa saber é o seguinte
3
Então, auditar, em vez de se preocupar com o roubo da sua senha?
Ehtesh Choudhury
3
@shurane Faça as duas coisas!
PriceChild
4

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.

Faheem Mitha
fonte
-4

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 dsapor rsano abaixo.

Na fonte:

$ ssh-keygen -t dsa

Em seguida, copie o conteúdo do .ssh/id_dsa.pubarquivo .ssh/authorized_keysna conta do usuário no destino.

Então você deve conseguir fazer o ssh entre a origem e o destino sem senhas.

Majenko
fonte
11
Existe alguma razão para você defender dsa sobre rsa? Eu já vi o contrário recomendado com mais frequência.
PriceChild
@PriceChild: AFAIK, sua segurança é mais ou menos equivalente (assumindo tamanho de chave suficiente). Não sendo um criptógrafo, confio na decisão do OpenSSH e do GnuPG de usar o RSA como algoritmo de chave padrão. Veja também esta questão .
grawity
Nenhuma razão real - principalmente a escolha pessoal - isso e o fato de o RSA ter sido hackeado recentemente e o código sensível ter sido roubado - como isso se relaciona às chaves RSA Eu não tenho ideia (quem faz?), Mas sempre usei o DSA, pois parecia mais seguro .
Majenko 23/03
9
Receio que o hack na "empresa RSA" não tenha efeito na segurança do "algoritmo RSA". Verifique também secure.wikimedia.org/wikipedia/en/wiki/RSA_Security - "O RSA foi nomeado após o algoritmo de criptografia de chave pública RSA, que por sua vez recebeu o nome das iniciais de seus co-inventores: Ron Rivest, Adi Shamir e Len Adleman. "
PriceChild
6
@ Matt: A única coisa que eles têm em comum é o nome. O algoritmo criptográfico assimétrico RSA é pura matemática, não há como ele ser enfraquecido por uma invasão nos sistemas de algumas empresas.
grawity