Quão ruim é ter vários dispositivos com as mesmas keys do server SSH?

Estou trabalhando em um dispositivo embedded que executa FreeBSD e SSH.

Como você sabe, o sshd gosta de gerair aleatoriamente um conjunto de keys do server quando ele inicializa. O problema é que iremos enviair o produto com um sistema de files somente de cairtão de memory (não negociável).

Minhas duas opções, como as vejo, são:

  • Envia as mesmas keys do server sshd em todos os dispositivos
  • Monte um sistema de files de memory e gere as keys do server em cada boot (lento …)

É um grande problema de security enviair as mesmas keys do server em todos os dispositivos? Esses itens não estairão diretamente na internet. De vez em quando, haviewá vários dispositivos pertencentes à mesma pessoa e na mesma networking.

Na maioria das vezes, o dispositivo não será conectado à internet.

Efetuair login com o SSH não faz pairte da operação normal. É principalmente paira a conveniência dos programadores e técnicos. Os clientes não entrairão no dispositivo com SSH.

Quais são as ramificações de usair as mesmas keys do server em vários dispositivos de hairdwaire?

PS poderia alguém criair uma tag de internet-of-things?

EDIT : Estou falando sobre a installation das mesmas keys privadas do host em todos os serveres (dispositivos). No que diz respeito às keys públicas / privadas do user, atualmente não há planos paira usair o login baseado em key – seria login de senha. Novamente, a mesma senha em todos os serveres (dispositivos).

Eu sei que esta é provavelmente uma má idéia. Gostairia de saber por que precisamente é uma má idéia, então eu posso entender os tradeoffs.

6 Solutions collect form web for “Quão ruim é ter vários dispositivos com as mesmas keys do server SSH?”

Em vez de airmazenair dados específicos do host, como keys do host ssh no cairtão SD ou outra mídia de somente leitura, você pode airmazenair isso na NVRAM, que é o que é paira um sistema embedded. Você precisairá fazer algum script personalizado paira airmazenair e recuperair as keys no momento da boot, mas os scripts serão exatamente os mesmos paira cada dispositivo.

O impacto do envio do mesmo pair de keys com todos os seus dispositivos está diretamente relacionado à security dos clientes que se conectam a eles, pois significa que não há nenhuma maneira (de um cliente SSH) paira identificair de forma exclusiva o dispositivo ao qual ele pode estair se conectando. Se o seu pair de keys for vazado, ele poderia ser usado paira ataques MITM.

Por outro lado, regenerando as keys em cada boot, também ativairá um alerta nos clientes.

Paira reference, do man ssh(1) :

ssh mantém e viewifica automaticamente um database contendo identificação paira todos os hosts com os quais já foi usado. As keys de host são airmazenadas em ~/.ssh/known_hosts no diretório inicial do user. Além disso, o file /etc/ssh/ssh_known_hosts é automaticamente viewificado paira hosts conhecidos. Todos os novos hosts são automaticamente adicionados ao file do user. Se a identificação de um host nunca for alterada, o ssh avisa sobre isso e desabilita a authentication de senha paira evitair a falsificação do server ou ataques man-in-the-middle, o que poderia ser usado paira contornair a encryption. A opção StrictHostKeyChecking pode ser usada paira controlair logins em máquinas cuja key de host não é conhecida ou mudou.

Pairece que na primeira opção, as keys SSH estairão disponíveis no cairtão SD. Então, qualquer user pode pegair o cairtão e lê-los. Então, basicamente, suas keys privadas se tornairam (principalmente) públicas.

Isso permitirá ataques man-in-the-middle, como o seguinte:

  1. Um user configura um server SSH com as keys privadas obtidas do seu dispositivo e fornece esse endereço IP ao seu técnico.
  2. Seu técnico insere a senha de root sobre a connection SSH.
  3. O user agora conhece a senha de root que é válida paira todos os seus dispositivos.

No entanto, você não deve usair passwords de root em primeiro lugair, use as keys ssh paira authentication em vez disso. Em seguida, o impacto das keys do server compairtilhado é bastante pequeno se você fizer logon apenas a pairtir de uma LAN.

O SSH também fornece segredo paira a frente, então um invasor deve ser capaz de configurair um server falso paira se beneficiair das keys; cheirair passivamente o tráfego não permitirá decodificá-lo.

Eu leio isso com horror! Eu, que fiz várias máquinas no mesmo cluster com a mesma key host do ssh, nunca ousairia fazer isso. Não permite, em nenhuma circunstância, máquinas com diferentes conjuntos de administradores compairtilhair keys do host ssh. Dessa forma, é loucura e horror gritando quando você é informado por sua falta de security.

Eis que eu digo a viewdade, aquele que compromete um dispositivo compromete todos eles. Uma vez obtido um, espere que as pessoas más saltem de um paira outro à vontade e a security recuou como se fosse um papel fino.

Uma vez que você menciona que o access SSH não é usado pelo user / cliente final, você pode desativair o access SSH por padrão e apenas ativá-lo temporairiamente quando o dispositivo é colocado no modo "depurair".

Em seguida, você pode enviair todos os dispositivos com a mesma key, assumindo que você protegeu o modo "debug" paira que ele não possa ser acionado remotamente por alguém tentando pirateair o dispositivo.

Ou você tem uma nova key gerada quando o dispositivo entra no modo "debugging" – paira que você não precise perder o tempo de boot gerando as keys sempre que o dispositivo for ligado.

Aqui está um exemplo de cenário de ataque baseado nas restrições que você possui:

Se os seus dispositivos estiviewem, diga um Raspberry Pi, por exemplo. Se eu subir e pegair o cairtão SD de um, eu posso colair o cairtão SD em meu próprio computador, find a key sshd e copie isso paira todos os lugaires que eu quero. Talvez eu pegue meu próprio raspberry pi e uma placa USB ethernet. Agora eu posso colair isso entre um dispositivo alvo e onde quer que eles estejam e monitore paira conexões ssh. Quando vejo que o dispositivo alvo está tentando fazer uma connection ssh, faço isso:

 (tairget) <---> (my evil sshd <--> decrypted traffic <--> ssh) <---> (real serview) | V log file 

Oh, o que é isso? Sua senha é "Eu gosto de gatos"? Boy, este é um e-mail interessante que você enviou paira sua esposa. Eu aposto que seria ainda mais interessante se ela leu este e-mail que você enviou paira a esposa do vizinho vizinho.

As possibilidades são infinitas . E o alvo nunca saberia, porque a key sshd é idêntica à que se encontra no server real. Dependendo da security física das instalações que estão recebendo seu dispositivo, isso pode ser incrivelmente trivial. Não faça isso.

Em vez disso, faça o que você já propõe, mas conserte . Antes de escreview sua image, execute algo como isto:

 ssh-keygen -f some-new-serview cp some-new-serview /path/to/the/mounted/image/sshd/key cp some-new-serview.pub /path/to/the/mounted/image/sshd/key.pub 

E agora cada server tem uma nova key. Porque você realmente, realmente não quer distribuir cópias de uma key. Quero dizer, honestamente, é pelo less tão ruim quanto tirair uma foto das keys da sua casa e enviá-las paira a Internet com seu endereço residencial.

  • Como pairair o SSH de voltair a senha?
  • A authentication SSH Kerberos crash com "O principal incorreto na solicitação / Não obteve cnetworkingnciais do cliente" no aperto Debian
  • Autossh não está funcionando paira dois ou mais túneis - ou existe uma alternativa?
  • Permitir access de senha paira todos os users, exceto root?
  • Não é possível obter uma canvas sepairada paira continuair
  • Como você configura o X11 encaminhamento paira SSH no AIX?
  • Grupo DH GEX fora do alcance
  • Como eu digo ao Git for Windows onde encontrair minha key RSA privada?
  • Conexão fechada por <ip>