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 time
perintah 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 nmap
yang dieksekusi oleh pengguna normal?
Sebagai catatan tambahan, ini sedang dijalankan pada mesin Ubuntu 14.04 LTS.