Nmap berjalan lebih lambat sebagai root daripada pengguna normal

1

Saya sedang mengerjakan skrip bash untuk mengaktifkan deteksi otomatis dan kendali jarak jauh perekam data milik perusahaan saya. Perekam menjalankan versi kustom linux dan pada dasarnya pis atau arduinos kuat.

Port ethernet pada perangkat dikonfigurasikan sehingga ketika dicolokkan ke jaringan, port tersebut akan diberikan sewa dhcp. Untuk mendeteksi perangkat, saya memantau /var/lib/dhcp/dhcpd.leases di komputer lokal saya. Untuk setiap entri unik, saya portcan untuk menguji status server ssh menggunakan nmap. Untuk mengaktifkan peluncuran skrip ini secara otomatis, skrip ini dipanggil dari /etc/rc3.d/rc.local dan dijalankan oleh root pada saat boot. Di sinilah segalanya menjadi aneh.

Untuk memastikan bahwa kami selalu dapat mendeteksi koneksi baru, file dhcpd.leases diperiksa dalam infinite loop. Kami juga ingin mempertahankan jejak sistem yang rendah sehingga untuk mengurangi waktu setiap iterasi loop, kami memberlakukan batas waktu kecil pada kami nmap. Inilah baris yang tepat digunakan:

nmap --max-retries=1 -p 22 --host-timeout=50ms $ip_address

Ketika dijalankan sebagai pengguna normal, baris ini bekerja sangat konsisten, tetapi sebagai root, saya harus menambah waktu tunggu hingga 600 ms untuk hasil yang positif secara konsisten. Saya sudah mengujinya menggunakan timeperintah dan ini adalah hasil yang biasa (dilakukan dengan batas waktu 600 ms):

Starting Nmap 6.40 ( http://nmap.org ) at 2014-12-19 09:41 EST
Nmap scan report for 192.168.53.101
Host is up (0.00039s latency).
PORT    STATE SERVICE
22/tcp  open  ssh

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

real    0m0.059s
user    0m0.043s
sys     0m0.004s

Ini adalah output untuk hal yang sama, tetapi login sebagai root:

Starting Nmap 6.40 ( http://nmap.org ) at 2014-12-19 09:48 EST
Nmap scan report for 192.168.53.101
Host is up (0.00035s latency).
PORT    STATE SERVICE
22/tcp  open  ssh
MAC Address: 00:04:D1:0B:03:EC

Nmap done: 1 IP address (1 host up) scanned in 0.55 seconds

real    0m0.580s
user    0m0.056s
sys     0m0.008s

Adakah ide yang dapat menyebabkan waktu tambahan ini dan bagaimana cara mencegahnya? Dari beberapa penelitian pendahuluan, saya dapat melihat bahwa root berjalan dengan beberapa set default yang tidak dapat diakses oleh pengguna lain. Bagaimana saya bisa meniru kondisi nmapyang dieksekusi oleh pengguna normal?

Sebagai catatan tambahan, ini sedang dijalankan pada mesin Ubuntu 14.04 LTS.

JorganPubshire
sumber
disalin dari stackoverflow stackoverflow.com/q/27568826/7552
glenn jackman
Oleh saya. Karena seseorang mengatakan itu lebih masuk akal di sini. Dan saya setuju.
JorganPubshire
Aku menyadari. Ini membuat tautannya jelas bagi pembaca lain yang mencari jawaban atau berpikir untuk menjawab
glenn jackman

Jawaban:

0

Setelah penelitian lebih lanjut, saya menemukan sesuatu yang menarik di bagian MISC di halaman manual. Ada opsi --unprivilegedyang memaksa operasi sebagai pengguna normal, bahkan sebagai root. Ini melakukan operasi jauh lebih sedikit dan memberikan lebih sedikit info kembali, tetapi jika semua yang Anda lakukan adalah memeriksa ssh pada port 22, ia melakukannya secepat mungkin.

JorganPubshire
sumber
0

Saya tidak yakin apa yang akan menyebabkan perbedaan dalam dua putaran, tetapi saya memiliki beberapa ide untuk konsistensi dan kecepatan yang dapat membantu. Pertama, inilah perbedaan operasi antara pemindaian root dan non-root dengan opsi yang Anda pilih:

  • Pemindaian tidak terprivat (non-root) akan menggunakan sepasang connect()panggilan TCP untuk menentukan apakah host sudah habis; pindaian root akan mengirim permintaan ARP dan mengendus jaringan untuk tanggapan. Permintaan ARP harus lebih cepat, karena panggilan koneksi memerlukan OS untuk melakukan:
    1. permintaan ARP, atau setidaknya pencarian cache ARP
    2. setidaknya bolak-balik untuk mendapat respons dari target
  • Pemindaian non-root akan menggunakan connect()panggilan TCP penuh untuk memindai port 22, dan harus menutup soket setelah selesai; pindaian root akan melakukan setengah jabat tangan, mengandalkan OS untuk menutup koneksi "di latar belakang."

Jadi dengan opsi-opsi ini, umumnya pemindaian istimewa akan lebih cepat. Namun, dengan koneksi jaringan latensi sangat rendah, mungkin saja pengaturan berbagai pendengar PCAP akan memperlambat pemindaian root sedikit. Tapi itu mungkin bukan dari mana keterlambatan Anda berasal.

Anda dapat mempercepat pemindaian Anda dengan melewatkan beberapa fase pemindaian yang tidak Anda perlukan. Coba tambahkan -nbendera untuk melewati pencarian nama terbalik ( yang tidak dihitung menjelang batas waktu host! ). Atau jika Anda tahu target ada dan hanya ingin memeriksa respons port 22, tambahkan -Pnopsi untuk melewati fase penemuan host.

bonsaiviking
sumber