Como configuro o sshd para exigir uma chave privada e uma senha?

7

Como faço para configurar o sshd para exigir uma chave privada e uma senha?

Em / etc / ssh / sshd_config, tenho atualmente:

RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication yes

Mas aparentemente isso permite que um usuário faça o login usando uma chave privada ou senha.

    
por ryanprayogo 13.12.2009 / 02:50

3 respostas

4

Você precisa configurar um gatekeeper SSH. Isso permite que o openssh permita a autenticação multifatorial.

Aqui está um ótimo link: link

Essencialmente, você usa a diretiva ForceCommand para executar um script quando o usuário faz logon. Esse script solicita ao usuário a senha. Atualmente estou procurando um método para verificar uma senha dada contra a senha do sistema, mas estou chegando (compreensivelmente) em branco.

Se a conta do usuário estiver armazenada em um diretório LDAP, você poderá tentar vincular-se ao diretório usando essas credenciais, mas o problema será que o programa em execução será executado como usuário, não como raiz. Não conheço as implicações de segurança de escrever o código compilado e defini-lo como SUID.

Espero que alguém lhe dê uma resposta melhor.

mas desde que eu digitei tudo isso, você está em um site ultra-seguro? Porque essa é realmente a única razão para isso. Chaves públicas normais com senhas devem ser mais do que suficientes para 99% dos casos.

    
por 13.12.2009 / 03:14
4

Versões recentes do OpenSSH tornaram isso muito mais fácil de realizar!

Em /etc/ssh/sshd_config , basta adicionar o seguinte:

AuthenticationMethods "publickey,password" "publickey,keyboard-interactive"

Se você quiser permitir que um endereço IP específico (por exemplo, 192.168.10.10) possa efetuar login com os métodos padrão do OpenSSH, mas exigir que todos os outros endereços IP usem uma senha e uma chave, você pode adicionar o seguinte Match block em vez disso:

Match Address "*,!192.168.10.10"
    AuthenticationMethods "publickey,password" "publickey,keyboard-interactive"

Apesar de não estar bem documentado, o asterisco principal é necessário na linha de partida; Match Address "!192.168.10.10" na verdade nunca corresponderá. Isso pode mudar em versões futuras do OpenSSH .

    
por 04.05.2016 / 16:33
-3

Autenticação de dois fatores? Não é bem assim. O certificado é um método de autenticação mais strong que uma senha.

Se você tem medo de que o certificado possa ser comprometido, configure as chaves privadas para serem protegidas por senha. Isso garante que o usuário seja solicitado a fornecer uma senha antes que o certificado possa ser usado. Isso lhe dá autenticação de dois fatores. Você saberá que a conexão vem de alguém que possui a chave privada e e também a senha para desbloqueá-la.

E desabilite a autenticação de senha no seu servidor ssh. Isso impede que as pessoas usem ataques de dicionário / força bruta.

    
por 13.12.2009 / 03:59