Primeiro sudo sempre lento

8

O primeiro que sudoeu entro no meu servidor Ubuntu 14.04 é sempre lento. O prompt da senha é exibido imediatamente, mas depois que eu pressiono enter, leva de 10 a 15 segundos até a saída ser impressa. Todos os comandos sudo após isso são executados instantaneamente.

Executar algo como sudo strace -S time -c sudo echo hinão mostra nada de útil nesse caso, pois o sudo from sudo echo hijá é o segundo sudo e executa rapidamente. Se passar algum tempo e for necessário digitar novamente a senha em uma sessão em execução, ela ficará lenta novamente.

Todas as soluções que encontrei foram sobre adicionar seu nome de host como resolução para 127.0.0.1 no /etc/hostsarquivo, o que eu fiz sem sucesso. su rootexecuta instantaneamente. A única coisa que me lembro de mudar nos últimos dias é a máscara de rede de uma sub-rede que o servidor está roteando, instalando samba, dnsutils e bind9. Mas nenhum desses processos está em execução e o problema permanece, no acesso físico, nas sessões ssh e nas sessões do tmux.

EDIT: Nova Abordagem

Tentei correr sudo tcpdump -vvvi any > tcpdump.log enquanto todas as placas de rede estavam desconectadas. O log mostra muitos dos seguintes itens:

18:35:09.453399 IP (tos 0x0, ttl 64, id 49112, offset 0, flags [DF], proto UDP (17), length 76)
    localhost.38498 > localhost.domain: [bad udp cksum 0xfe4b -> 0x1050!] 58546+ SRV? _kerberos._udp.KF.OURLOCALDOMAIN.DE. (48)
18:35:09.457412 IP (tos 0x0, ttl 64, id 49113, offset 0, flags [none], proto UDP (17), length 76)
    localhost.domain > localhost.38498: [bad udp cksum 0xfe4b -> 0x8fcd!] 58546 ServFail q: SRV? _kerberos._udp.KF.OURLOCALDOMAIN.DE. 0/0/0 (48)

As mesmas entradas são exibidas com o tcp instad do udp. Substituí o nome de domínio da nossa universidade por OURLOCALDOMAIN.

Agora, acho que o kerberos pode ter algo a ver com isso, mas excluí o /etc/krb5.conf e reiniciei, ainda sem alterações. Parece-me que o servidor tenta se validar em um servidor kerberos central da nossa rede universitária. Sei que alguns anos antes, esse IP foi registrado em um servidor que rodava samba para nosso departamento. Poderia haver uma conexão? Mudei meu nome de host para o que era usado na época, nenhuma mudança no comportamento do sudo. Lmwangi sugere algo sobre o PAM, sobre o qual tenho pouco conhecimento, então não sei como abordar isso. Também me lembrei de que mudei de Heimdal Kerberos para MIT Kerberos ao instalar o samba, porque tive problemas durante a instalação do samba. Também vou tentar as idéias dos comentários nos próximos dias, mas viajarei por alguns dias para que possa levar algum tempo.

EDIT 2: Resolvido

Havia uma entrada legada de pesquisa de DNS na /etc/network/interfacesque estragou tudo. Eu me sinto muito estúpido. Tudo funciona agora.

zerweck
fonte
1
A ativação temporária do bit set-uid stracepermitirá que você o execute sem o primeiro sudo. Também pode ajudar a usar a -o <file>opção para salvar a saída em um arquivo para análise.
precisa saber é o seguinte
1
Esse é esse. Em seguida, siga com sudo -kpara remover sua credencial em cache. Achei que strace -Tro sudo.log sudo echo hiera útil, pois a última coluna mostra a hora em cada chamada. greppara unamee socketcomo iniciante.
precisa
1
Os 5.005153 segundos são da -ropção (que talvez deva ser removida). Comece procurando as chamadas longas a partir da -Topção - elas são as que estão dentro de <e >- 0,000097 s no seu caso.
amigos estão dizendo sobre garethThe
1
Você verificou ps, top e todos os arquivos de log do sistema, caso algo mais aconteça para causar a lentidão?
Mdpc
1
Você pode postar sua configuração de pam? stracevocê chegará lá eventualmente, mas esse provavelmente é um problema de configuração de nível superior. A maioria das pausas longas durante a autenticação ocorre devido à falha no acesso aos servidores remotos e à espera de um tempo limite. Pode ser que a alteração na sub-rede coloque o servidor de autenticação em uma sub-rede diferente desta. sudosalva temporariamente um registro de autenticação bem-sucedida por baixo, /vare é provavelmente por isso que as invocações subsequentes passam instantaneamente.
Bratchley

Respostas:

2

Eu suspeitaria que sua caixa está tentando entrar em contato com um serviço de autenticação externa (pense em NIS / LDAP) usando o PAM ...

Se entendi bem o PAM, você não conseguiria ver a pesquisa do PAM em suas chamadas de rastreamento. Eu sugiro que você execute tshark / tcpdump e veja se consegue correlacionar o tráfego de rede específico com suas tentativas de sudo. Suspeitos aqui seriam pesquisas de DNS e | Chamadas LDAP.

tcpdump -i eth0 -w network.pcap -s0 -Av

Se você descobrir o que está causando as pesquisas, descubra o módulo PAM relevante para editar e corrigir o problema. Como alternativa, se for uma pesquisa de DNS, basta adicionar uma entrada / etc / hosts para falsificar o nome e redirecionar para o host local. Isso tornará seu sudo rápido, pois a pesquisa será rápida e será redirecionada para o host local e a transação de rede falhará rapidamente, pois não há nada ouvindo no host local ...

Lmwangi
fonte
Agora, isso parece seguir uma boa direção. Eu tenho muitas chamadas "bad udp cksum" e "bad tcp cksum" no meu log. É muito longo para postar um comentário, então atualizarei o OP em um segundo.
precisa saber é o seguinte