Como posso aumentar a segurança do ssh? Posso exigir uma chave e senha?

16

Eu tenho uma pequena rede de servidores e gostaria de aumentar a segurança geral. Não tenho tempo / dinheiro / paranóia suficientes para configurar uma VPN - qual é a maneira básica de aumentar a segurança do meu sistema?

Uma coisa pode ser exigir que os usuários enviem suas chaves e insiram uma senha. Isso é meio difícil de pesquisar no google porque tudo sobre "senha da chave ssh" é sobre sshing sem senha. :-)

Um esquema com o qual eu sempre quis brincar é exigir que as conexões recebidas venham apenas de uma lista de permissões de endereços IP de endereços dinâmicos. Eu sei que alguns chefes de segurança vomitariam com o pensamento da idéia, mas o fato é que isso acrescentaria complexidade muito significativa para explorar uma caixa.

O que você acha? O que mais há por aí?

John Bachir
fonte
Você também pode restringir a lista de usuários que têm permissão para se conectar usando as diretivas AllowUsers ou DenyUsers. Mais detalhes sobre este post .
Fred

Respostas:

8

O login com senha e chave é o mesmo que "apenas com chave". Durante a criação da chave, você é solicitado a digitar a senha. Se você deixar em branco, não será solicitada uma senha. Se você preencher uma senha, será solicitada sempre que quiser fazer login.

Se você está preocupado com a segurança, considere alguns desses conselhos mencionados trilhões de vezes neste fórum:

  • Desativar login ssh para root
  • Permitir acesso ssh apenas a partir de endereços IP definidos (iptables, hosts.allow, ...)
  • Mova a porta ssh para outra porta (mais obscuridade do que segurança, mas funciona)
  • Monitore tentativas de login estrangeiras e reaja de acordo
  • Mantenha seu sistema atualizado

Etc etc.

Atualização: Consulte a resposta aqui para saber como exigir uma chave pública e senha do sistema local com um servidor OpenSSH.

mkudlacek
fonte
Obrigado por todas as suas dicas, vai olhar para eles. se chave e senha forem necessárias, se um explorador descobrir uma senha (como se o usuário a usar em outro local inseguro), ele não poderá entrar sem a chave e se o explorador roubar a chave da máquina do usuário , eles não conseguem entrar sem saber a senha ... certo?
John Bachir
12
Não é o mesmo. Se você precisar apenas da chave, o servidor não poderá aplicar nenhuma política de força de senha à chave. Um usuário descuidado pode ter uma chave privada não criptografada no cliente que deixa seu servidor vulnerável se a chave for roubada.
200_success
mkudlacek - eu não sabia sobre hosts.a seguir - pesquisando, parece que minha ideia de lista branca de dyndns não é tão boba, afinal, acho que vou tentar isso.
John Bachir
11
200_success - é possível exigir uma chave e uma senha?
John Bachir
Eu também uso o aplicativo DenyHosts para ajudar a bloquear as pessoas que continuam tentando entrar e falham. Caminho Um pouco agradável pró-ativa automatizada de lista negra pessoas ..
James T Snell
6

Uma ideia que achei interessante é a porta batendo - basicamente, para estabelecer a conexão ssh, primeiro é necessário investigar uma sequência de outras portas, antes que o servidor ssh reconheça uma solicitação de conexão. Se a sequência correta de portas não for usada, não haverá resposta; portanto, parece que não há servidor ssh em execução. A sequência de portas é personalizável e pode ser compartilhada com os usuários pretendidos; todo mundo seria efetivamente incapaz de se conectar.

Eu não tentei isso sozinho, mas pelo que ouvi (o que na verdade não é muito) a sobrecarga é insignificante e reduz tremendamente o seu perfil de visibilidade.

weiji
fonte
Eu aceitaria isso se você quiser "aumentar a segurança geral", mas provavelmente tentar resolver problemas de segurança específicos.
Stefan Thyberg
Eu uso isso em todos os sites nos quais ssh, e é muito eficaz.
Sirex
Não é a mesma coisa que ter uma senha com mais quatro caracteres?
John Bachir
Na verdade não. Existem 65536 portas e 26 letras. Além disso, você tem a sequência de batidas de qualquer tamanho e pode limitar as novas tentativas usando técnicas de firewall padrão. Não é segurança em si, mas é bom ter.
Sirex
bem, então 8 ou 12 caracteres mais :-D
John Bachir
3

Patches relacionados à ativação diretamente no SSH e muita discussão relevante:

Isso também pode ser feito sem modificação, tendo um script de verificação de senha combinado com o uso da ForceCommandopção de configuração.

Por fim, embora não exista nenhum módulo para ele, se você moveu a autenticação de chave pública para o PAM, seria necessário exigir que ambas as etapas passassem antes que o PAM considerasse a autenticação bem-sucedida.

Jeff Ferland
fonte
2

Apenas use

RequiredAuthentications publickey, password

em sshd_configse você estiver usando sshd de ssh.com. Este recurso não está disponível no OpenSSH.

Flávio Botelho
fonte
RequiredAuthenticationsé a extensão definitivamente não padrão para OpenSSH
Hubert Kario
Você sabe quais implementações sshd suportam isso?
John Bachir
O servidor Tectia SSH suporta. BTW: uso @nameOfUser ao responder essas observações, desta forma eles serão notificados sobre a resposta
Hubert Kario
Funcionalidade semelhante é suportada no OpenSSH a partir da versão 6.2: serverfault.com/a/562899
Søren Løvborg
1

Você também pode usar senhas únicas para aumentar a segurança. Isso permitiria que os usuários fizessem login a partir de um terminal não seguro, que pode ter um keylogger, se eles tivessem gerado a próxima senha anteriormente. Além disso, existem geradores de senha que podem ser instalados mesmo em telefones Java MIDP antigos, que você carrega com você o tempo todo.

Moriarty
fonte
Sim, no meu servidor pessoal eu uso um token Yubikey além da minha senha. O token gera uma senha descartável. Ambos são necessários para autenticar. Como alternativa, permito ignorar o par senha / otp se você se autenticar com uma chave SSH. O Yubikey é barato e há muitos softwares para integrá-lo ao Pam, o sistema de autenticação extensível do Linux.
Martijn Heemels
1

Eu recomendaria que você nunca execute um sshd, rdp ou esses serviços de gerenciamento sem restrição de IP. De fato, eu sugeriria limitar o acesso a esses serviços aos administradores conectados via VPN.

3molo
fonte
1

Com relação à sua pergunta original sobre exigir uma chave e uma senha, se você estiver executando o RHEL ou o CentOS 6.3, isso agora é possível. As notas de versão do RHEL 6.3 descrevem, é uma questão de adicionar isso ao seu sshd_config

RequiredAuthentications2 publickey,password
Mark McKinstry
fonte
0

Concordo plenamente com a 3molo. OpenSSH é o servidor SSH padrão do Linux e Unix. Não há razão para alterá-lo, principalmente por segurança. A VPN deve ser a melhor solução, que pode criptografar nosso tráfego e fornecer a autorização de senha em duas etapas.

mcsrainbow
fonte
0

Não sei por que ninguém o mencionou, mas - certifique-se de gerar as chaves mais do que 1024 bits padrão, que não são mais considerados seguros.

mnmnc
fonte