SSHD - bloqueando a autenticação de senha

4

Em vários sistemas eu tenho este sshd_config

Port 22
Protocol 2
PermitRootLogin no
StrictModes yes
PasswordAuthentication no
ChallengeResponseAuthentication no
MaxStartups 2
AllowUsers john joe

Alguém pode explicar a diferença entre autenticação por teclado e senha? Como posso testar meu servidor sshd para isso?

Estes sistemas são acessíveis usando o SSH através da Internet (encaminhamento de porta no firewall). Apesar de desativar a autenticação de senha, ainda estou vendo registros syslog para usuários inválidos e senhas inválidas sendo rejeitadas pelo sshd - obviamente, alguns bot-nets estão tentando adivinhar a senha de força bruta.

Se eu tentar ssh in, sem configurar uma chave pública, minha sessão será encerrada com a mensagem "Permissão negada (publickey)" antes que eu tenha a oportunidade de inserir um nome de usuário. Então, não vejo como essas tentativas de senha estão ocorrendo.

Aqui está um exemplo do syslog (todas as linhas prefixadas em 'Oct 12 08:40:49 host sshd [14790]:')

Could not reverse map address 203.0.113.1.
User root not allowed because not listed in AllowUsers
input_userauth_request: illegal user root
Failed password for illegal user root from 203.0.113.1 port 35902 ssh2
Received disconnect from 203.0.113.1: 11: Bye Bye

Como essas senhas inválidas são recebidas? O servidor ainda está, portanto, vulnerável à adivinhação de senha de força bruta?

    
por RedGrittyBrick 11.10.2010 / 10:59

2 respostas

3

AFAIK usando PasswordAuthentication, o cliente solicita seu nome de usuário e senha e, em seguida, envia ambos para o servidor. No teclado interativo, o cliente solicita seu nome de usuário, envia-o ao servidor e, em seguida, o servidor responde com um prompt de senha que, por sua vez, é retransmitido pelo cliente para você.

A coisa toda foi feita para poder implementar outras medidas de segurança para garantir que você (o usuário) de fato interativamente digite a senha e ela não seja armazenada de alguma forma e apenas digitada.

    
por 11.10.2010 / 13:18
3

PasswordAuthentication é apenas um tipo de KbdInteractiveAuthentication (a palavra-chave real usada em ssh_config e sshd_config).

KbdInteractiveAuthentication engloba uma variedade de métodos: S / Key é outro, assim como o PAM. (Esta é uma especificação da RFC, que está documentada aqui

Há uma lista de KbdInteractiveDevices que você pode especificar em ssh_config. (Se não for especificado, é necessária a lista de servidores. Como não há nenhuma opção para isso no sshd_config, estou assumindo que é uma opção de tempo de compilação, mas não verifiquei isso.)

Eu não achava que as páginas de manual ( ssh_config e < um href="http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config&sektion=5"> sshd_config ) foi particularmente útil para entender as relações aqui, mas o O'Reilly SSH livro é uma referência decente.

    
por 12.10.2010 / 17:43

Tags