denyhosts está impedindo usuários existentes de efetuar login de endereços IP desconhecidos (novos)

2

Eu tenho o denyhosts configurado e trabalhando no Ubuntu 12.04. Aparentemente funciona bem, exceto que é muito rigoroso.

Eu posso fazer login de qualquer endereço IP que eu adicionei ao hosts.allow antecipadamente. Meu sshd_config não permite login de senha, somente login com chaves.

No entanto, fazendo login a partir de um novo endereço IP com minha chave RSA válida (que funciona com meus endereços IP conhecidos), o servidor mostra essa mensagem em /var/log/auth.log:

Jun 23 19:16:31 MyServerName sshd[5949]: refused connect from hostname.comcast.net (XXX.XXX.XXX.XXX)

Para se conectar, tudo o que tenho que fazer é adicionar o novo endereço IP ao /etc/hosts.allow. É isso aí. Então eu posso logar:

Jun 23 19:45:03 MyServerName sshd[6024]: Accepted publickey for username from XXX.XXX.XXX.XXX port 61236 ssh2
Jun 23 19:45:03 MyServerName sshd[6026]: pam_unix(sshd:session): session opened for user username by (uid=0)

Eu não alterei nenhum dos valores de configuração padrão do denyhosts e ele funciona muito bem - exceto que é muito rigoroso.

(Ou alguma outra coisa lê o /etc/hosts.allow?)

Eu preciso permitir que qualquer usuário do linux (cuja conta já exista no servidor) faça o login de qualquer endereço IP sem fazer alterações no servidor antecipadamente (como adicionar o IP ao hosts.allow).

O EightBitTony sugere que o denyhosts deve permitir esse comportamento. Em resposta ao EightBitTony, eu mudei essa questão e o título.

    
por MountainX 24.06.2013 / 01:18

3 respostas

1
O

Denyhosts bloqueia apenas logins falhados (após uma contagem predefinida). Não, que eu saiba, bloquear preventivamente as pessoas.

    
por 24.06.2013 / 01:23
1

Você não pode bloquear simultaneamente o acesso no nível inferior (IP) e exigir do protocolo de nível superior (SSH) para substituir o bloco - simplesmente porque o nível mais alto nunca é alcançado (no caso de um bloco).

Você pode restringir os hosts de login para os usuários em geral e permitir que apenas um usuário faça o login de qualquer lugar. Mas isso não seria uma solução dinâmica.

Você também pode executar duas sshd instâncias, uma usando denyhosts, a outra sendo utilizável por este único usuário. Infelizmente, parece não ser possível desabilitar o libwrap na configuração, então você provavelmente teria que compilar sshd com (out) as respectivas opções ou executar a segunda instância em uma VM ou container.

    
por 24.06.2013 / 01:38
0

Acho que encontrei o problema. Meu /etc/hosts.deny contém estas duas linhas:

ALL: PARANOID
sshd: ALL

Isso parece o problema?

Aqui está uma parte do meu /etc/hosts.deny:

# /etc/hosts.deny: list of hosts that are _not_ allowed to access the system.
#
# Example:    ALL: some.host.name, .some.domain
#             ALL EXCEPT in.fingerd: other.host.name, .other.domain
#
# The PARANOID wildcard matches any host whose name does not match its
# address.

# You may wish to enable this to ensure any programs that don't
# validate looked up hostnames still leave understandable logs. In past
# versions of Debian this has been the default. 
ALL: PARANOID 
sshd: ALL 
ALL: 200.125.165.10 
ALL: 203.144.65.53 
ALL: 85.31.203.35 
...
    
por 24.06.2013 / 02:08