Sudo pertama selalu lambat

8

Yang pertama sudosaya masukkan di server Ubuntu 14.04 saya selalu lambat. Prompt kata sandi ditampilkan segera, tetapi setelah saya menekan enter, dibutuhkan sekitar 10-15 detik hingga hasilnya dicetak. Semua perintah sudo setelah ini dijalankan secara instan.

Menjalankan sesuatu seperti sudo strace -S time -c sudo echo hitidak menunjukkan sesuatu yang berguna dalam kasus ini, karena sudo dari sudo echo hisudah sudo kedua dan dijalankan dengan cepat. Jika beberapa waktu berlalu dan saya harus memasukkan kembali kata sandi dalam sesi yang sedang berjalan, maka lambat lagi.

Semua solusi yang saya temukan adalah tentang menambahkan nama host Anda sebagai resolusi untuk 127.0.0.1 dalam /etc/hostsfile, yang saya lakukan tidak berhasil. su rootdijalankan secara instan. Satu-satunya hal yang saya ingat berubah pada hari-hari terakhir adalah netmask dari sebuah subnet yang dirute oleh server, menginstal samba, dnsutils, dan bind9. Tapi tidak satu pun dari proses tersebut yang berjalan dan masalahnya tetap, dalam akses fisik, sesi ssh serta sesi tmux.

EDIT: Pendekatan Baru

Saya mencoba menjalankan sudo tcpdump -vvvi any > tcpdump.log sementara semua NIC terputus. Log menunjukkan banyak hal berikut:

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)

Entri yang sama muncul dengan tcp instad udp. Saya mengganti nama domain universitas kami dengan OURLOCALDOMAIN.

Sekarang saya pikir kerberos mungkin ada hubungannya dengan itu, tapi saya menghapus /etc/krb5.conf dan reboot, masih tidak ada perubahan. Sepertinya saya, bahwa server mencoba untuk memvalidasi dirinya pada server pusat kerberos dari jaringan universitas kami. Saya tahu bahwa beberapa tahun sebelumnya, IP ini terdaftar ke server yang menjalankan samba untuk departemen kami. Mungkinkah ada koneksi? Saya mengubah nama host saya menjadi yang digunakan saat itu, tidak ada perubahan dalam perilaku sudo. Lmwangi menyarankan sesuatu tentang PAM, yang saya hanya memiliki sedikit pengetahuan tentangnya, jadi saya tidak tahu bagaimana cara mendekati ini. Saya juga ingat saya beralih dari Heimdal Kerberos ke MIT Kerberos ketika menginstal samba, karena saya mempunyai masalah selama instalasi samba. Saya juga akan mencoba ide-ide dari komentar di hari-hari berikutnya, tetapi saya akan bepergian selama beberapa hari sehingga mungkin perlu waktu.

EDIT 2: Dipecahkan

Ada entri warisan dns-pencarian di /etc/network/interfacesyang mengacaukan semuanya. Saya merasa sangat bodoh. Semuanya berfungsi sekarang.

zerweck
sumber
1
Menyetel sementara waktu set-uid aktif stracememungkinkan Anda untuk menjalankannya tanpa yang pertama sudo. Mungkin juga membantu menggunakan -o <file>opsi untuk menyimpan output ke file untuk analisis.
garethTheRed
1
Itu dia. Kemudian ikuti dengan sudo -kmenghapus kredensial cache Anda. Saya menemukan strace -Tro sudo.log sudo echo hiberguna karena kolom terakhir menunjukkan waktu di setiap panggilan. grepuntuk unamedan socketsebagai starter.
garethTheRed
1
5.005153 detik dari -ropsi (yang mungkin harus dihapus). Mulailah dengan mencari panggilan lama dari -Topsi - mereka adalah orang-orang dalam <dan >- 0,000097 detik dalam kasus Anda.
garethTheRed
1
Sudahkah Anda memeriksa ps, atas dan semua file log sistem jika ada hal lain yang menyebabkan kelambatan?
mdpc
1
Bisakah Anda memposting konfigurasi pam Anda? straceakan membawa Anda ke sana pada akhirnya tetapi ini mungkin masalah konfigurasi tingkat yang lebih tinggi. Jeda paling lama selama autentikasi adalah karena gagal mengakses server jarak jauh dan harus menunggu waktu habis. Mungkin perubahan subnet menempatkan server otentikasi pada subnet yang berbeda seperti ini. sudosementara menyimpan catatan auth sukses di bawahnya /varjadi ini mungkin mengapa doa selanjutnya melalui instan.
Bratchley

Jawaban:

2

Saya menduga bahwa kotak Anda berusaha menghubungi layanan otentikasi eksternal (pikirkan NIS / LDAP) menggunakan PAM ...

Jika saya memahami PAM dengan benar, Anda tidak akan dapat melihat pencarian PAM di panggilan strace Anda. Saya sarankan Anda menjalankan tshark / tcpdump dan melihat apakah Anda dapat menghubungkan lalu lintas jaringan tertentu dengan upaya sudo Anda. Tersangka di sini adalah pencarian DNS & | Panggilan LDAP.

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

Jika Anda mengetahui apa yang menyebabkan pencarian, cari tahu modul PAM yang relevan untuk mengedit dan memperbaiki masalah tersebut. Atau, jika ini adalah pencarian DNS, cukup tambahkan entri / etc / hosts untuk memalsukan nama dan arahkan ke localhost. Ini akan membuat sudo Anda cepat karena pencarian akan cepat dan akan mengarahkan ulang ke localhost dan transaksi jaringan akan gagal dengan cepat karena tidak ada yang mendengarkan di localhost ...

Lmwangi
sumber
Sekarang ini sepertinya menuju ke arah yang baik. Saya memiliki banyak panggilan "bad udp cksum" dan "bad tcp cksum" di log saya. Terlalu panjang untuk mengirim komentar sehingga saya akan memperbarui OP dalam sedetik.
zerweck