demora para obter a solicitação de senha ao ssh'ing em um servidor público

9

eu tenho uma configuração de servidor (debian 7) na minha universidade com ip público. quando ssh no sistema (de fora do campus), recebo um atraso estranho de 5 a 10 segundos antes de receber o prompt de senha. Por que é que?

Eu corro ssh -vpara obter saída detalhada:

debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received

.... delay of 5-10 seconds here

debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/nass/.ssh/id_rsa
debug1: Trying private key: /home/nass/.ssh/id_dsa
debug1: Trying private key: /home/nass/.ssh/id_ecdsa
debug1: Next authentication method: password

então recebo o prompt de senha corretamente.

minha resolv.confaparência

domain <mydomain>.edu
nameserver <dns ip address>

o firewall é controlado webmine a configuração se /etc/webmin/firewall/iptables.saveparece com:

# Generated by iptables-save v1.4.14 on Mon Feb 10 17:41:38 2014
*filter
:FORWARD DROP [0:0]
:IP_TCP - [0:0]
:INPUT DROP [0:0]
:IP_UDP - [0:0]
:OUTPUT ACCEPT [0:0]
:IP_ICMP - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED -j ACCEPT
-A INPUT -m state --state RELATED -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT
-A INPUT -s 127.0.0.1/32 -i eth0 -j DROP
-A INPUT -p icmp -i eth0 -j IP_ICMP
-A INPUT -p udp -m udp -i eth0 -j IP_UDP
-A INPUT -p tcp -m tcp -i eth0 -j IP_TCP
-A INPUT -m limit --limit 3/second --limit-burst 3 -j ULOG --ulog-prefix "FW_INPUT: " --ulog-nlgroup 1
-A IP_ICMP -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A IP_ICMP -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A IP_ICMP -p icmp -m icmp --icmp-type 4 -j ACCEPT
-A IP_ICMP -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A IP_ICMP -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A IP_ICMP -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A IP_ICMP -p icmp -j RETURN
-A IP_TCP -p tcp -m tcp --dport 2049:2050 -j DROP
-A IP_TCP -p tcp -m tcp --dport 6000:6063 -j DROP
-A IP_TCP -p tcp -m tcp --dport 7000:7010 -j DROP
-A IP_TCP -p tcp -m tcp --dport 19001 -j ACCEPT
-A IP_TCP -p tcp -m tcp --dport 12321 -j ACCEPT
-A IP_TCP -p tcp -m tcp --dport 80 -j ACCEPT
-A IP_TCP -p tcp -m tcp --dport 443 -j ACCEPT
-A IP_TCP -p tcp -m tcp -j RETURN
COMMIT
# Completed on Mon Feb 10 17:41:38 2014
# Generated by iptables-save v1.4.14 on Mon Feb 10 17:41:38 2014
*mangle
:PREROUTING ACCEPT [2386474:238877913]
:INPUT ACCEPT [2251067:225473866]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1100410:5416839301]
:POSTROUTING ACCEPT [1100428:5416842284]
COMMIT
# Completed on Mon Feb 10 17:41:38 2014
# Generated by iptables-save v1.4.14 on Mon Feb 10 17:41:38 2014
*nat
:PREROUTING ACCEPT [211832:26633302]
:INPUT ACCEPT [444:26827]
:OUTPUT ACCEPT [1817:114098]
:POSTROUTING ACCEPT [1817:114098]
COMMIT
# Completed on Mon Feb 10 17:41:38 2014

Por último, mas não menos importante, um colega que também possui uma conta no mesmo sistema recebe a solicitação imediatamente!

nass
fonte
1
O primeiro pensamento é que o servidor foi UseDNS yesativado. Isso é notório por diminuir a velocidade de logins. Além disso, precisaríamos ver os logs de depuração do servidor ( $(which sshd) -d).
1313 Patrick
@ Patrick, parece estar lá por uma boa razão. Mas por que demora o meu login, mas não meus colegas?
Nass
Por que você acha que está lá por uma boa razão? É provável que esteja lá porque ninguém jamais pensou em desligá-lo. E isso provavelmente o torna mais lento porque o servidor DNS autoritativo do seu netblock está morto ou ausente.
1326 Patrick
@ Patrick bem, ele não realiza essa verificação por motivos de segurança?
Nass
@Patrick btw isso resolveu o problema, então você poderia muito bem escrever isso como uma resposta
nass

Respostas:

12

Conforme indicado nos comentários, isso provavelmente está sendo causado pela UseDNS yesconfiguração no sshd_configservidor.

A UseDNSconfiguração é um culpado comum por esse mesmo problema. Basicamente, o que acontece é que o seu netblock IP possui um servidor DNS com defeito ou ausente. Portanto, o sshd está tentando fazer uma pesquisa inversa no seu endereço IP e aguarda até o tempo limite. Outras pessoas não sofrem o atraso, pois possuem um servidor DNS funcional para o seu bloqueio de rede.

A maioria das pessoas desativa essa configuração por esse motivo. Embora sim, a configuração existe para segurança, é praticamente inútil .

A solução é simplesmente definir o seguinte no sshd_config:

UseDNS no
Patrick
fonte
1
apenas uma observação: sshd_configno debian 7 vem sem esta cláusula no arquivo de configuração. É preciso digitá-lo.
nass 13/05