Permitir apenas autenticação de senha no servidor SSH da rede interna

22

Eu tenho um servidor OpenSSH 5.9p1 em execução no Ubuntu Precise 12.04 que aceita conexões da rede interna e da Internet. Gostaria de exigir autenticação de chave pública para conexões da Internet, mas aceito a autenticação de chave pública ou senha para conexões da rede interna. Posso configurar o OpenSSH para implementar isso?

mgorven
fonte

Respostas:

34

A Matchdiretiva in /etc/ssh/sshd_configpermite aplicar seletivamente diretivas de configuração. Um dos critérios de correspondência disponíveis é o endereço de origem da conexão e, portanto, ele pode ser usado para implementar o que você deseja. Você pode desativar a autenticação por senha por padrão e habilitá-la para conexões de intervalos de IP da rede interna. (Observe que você também deseja desativar ChallengeResponseAuthenticationpara impedir o uso de senhas.) Este exemplo permite a autenticação de senha de todos os intervalos de IP privados do RFC1918. Veja a página de manual sshd_config para mais detalhes.

PasswordAuthentication no
ChallengeResponseAuthentication no

Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
    PasswordAuthentication yes

Observe que o bloco Match deve ser adicionado ao final do arquivo, caso contrário, tudo o que se segue será comparado até o próximo bloco Match. O mau posicionamento do bloco Match pode causar incapacidade de conexão.

mgorven
fonte
3
Observe: se você fizer isso e encaminhar o SSH de alguma máquina acessível ao público (jumphost) para uma máquina com a configuração acima (host interno), ainda poderá se abrir para o ataque, pois o IP de origem do jumphost seria um endereço RFC1918 e permita autenticação de senha para seu host interno.
C4urself 27/11