Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีรัน Nmap โดยไม่ต้องใช้ Root หรือ Sudo

วิธีรัน Nmap โดยไม่ต้องใช้ Root หรือ Sudo

Nmap ย่อมาจาก Network Mapper เป็นหนึ่งใน portmapper และ network scanning tools ที่ใช้มากที่สุด แม้จะรัน basic functions บางอย่างของ Nmap ในฐานะ unprivileged/normal user ได้ แต่การใช้ advanced features ส่วนใหญ่ต้องการ root หรือ sudo privileges

ตัวอย่าง advanced port scanning features เช่น NULL, Stealth SYN Scan และอื่นๆ ทำงานได้ก็ต่อเมื่อมี root privileges เพราะ Nmap ต้องเข้าถึง raw packet data เพื่อให้ adequate/usable results

ทุกครั้งที่ลองรัน advanced features โดยไม่มี sudo privileges tool จะ prompt "requires root privileges"

วิธีรัน Nmap โดยไม่ต้องใช้ Root หรือ Sudo

น่าเสียดายที่ต้องใช้ sudo รัน Nmap อาจ problematic โดยเฉพาะหากคุณไม่อยู่ใน sudo group

โชคดีที่สามารถใช้ capabilities รัน Nmap โดยไม่ต้อง root หรือ sudo privileges

Capabilities คืออะไร?

Linux capabilities เป็น Linux kernel attributes ที่อนุญาตให้ programs และ processes ใช้ privileges ที่สงวนไว้สำหรับ root user

โดยปัจจุบัน Linux capabilities แบ่งปัน root user powers หรือ privileges ทำให้ unprivileged processes รันเป็น privileged ones ได้ หมายถึงไม่ผ่าน permission checks

มี Linux capabilities หลายตัว อ่านเพิ่มใน man pages

จุดประสงค์ของคู่มือคือแสดงวิธีใช้ 3 capabilities: CAP_NET_RAW, CAP_NET_ADMIN, และ CAP_NET_BIND_SERVICE ให้ Nmap ได้ privileges ที่ต้องการ รันโดยไม่ต้องตรวจสอบ root user permissions

หมายเหตุ: ระมัดระวังตอนตั้งค่า elevated capabilities เพราะ malicious user อาจ exploit Nmap's Scripting Engine เข้าถึง full sudo privileges และใช้ scripts exploit local host vulnerabilities ใช้ settings นี้อย่างระมัดระวัง หรือจำกัด Nmap ให้ specific groups เท่านั้น

Linux capabilities ต่อไปนี้ที่เราให้ Nmap เพื่อลบความจำเป็นของ sudo และ root permissions:

  • CAP_NET_RAW: ตั้งค่า capability นี้ อนุญาตให้ process เข้าถึงและใช้ raw packet data และ sockets
  • CAP_NET_ADMIN: capability นี้ให้ process สามารถทำ network activities ต่างๆ เช่น IP firewall administration, interface configuration, set service type of TOS, change routing tables ฯลฯ
  • CAP_NET_BIND_SERVICE: capability นี้ bind socket ไปยัง Internet domain privileged ports

Linux capabilities ถูก assign ใน sets ของ "effective", "inheritable", "permitted", และ "ambient" สำหรับ threads และ files ตามลำดับ เพื่อให้ Nmap ได้ capabilities ที่ต้องการรันโดยไม่ต้อง root หรือ sudo เราใช้ eip ทำให้ Nmap ใช้ capabilities เหล่านี้ได้ ไม่ว่าผู้ใช้คนไหนจะรันมัน

Step 1: ติดตั้ง libcap

เพื่อตั้งค่า Linux capabilities ต้องติดตั้ง libcap package package นี้อนุญาตให้ใช้คำสั่ง setcap ใช้คำสั่ง:

sudo apt-get install libcap2-bin
วิธีรัน Nmap โดยไม่ต้องใช้ Root หรือ Sudo

ตอนนี้ libcap ติดตั้งแล้ว ใช้คำสั่ง setcap modify Linux capabilities

Step 2: ตั้งค่า Nmap capabilities

ตั้งค่า Nmap capabilities ที่อนุญาตให้รันโดยไม่ต้อง root user privileges รันคำสั่ง:

sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip $(which nmap)

หลังตั้งค่า capabilities แล้ว verify ว่า applied แล้วด้วยคำสั่ง getcap:

getcap $(which nmap)
วิธีรัน Nmap โดยไม่ต้องใช้ Root หรือ Sudo

หมายเหตุ: สำคัญมากที่ต้องระบุ full path ไปยัง Nmap installation folder

Step 3: รัน Nmap ด้วย privilege flag

ตอนนี้เรามี 3 capabilities ตั้งค่าแล้ว รัน Nmap โดยไม่ต้อง sudo privileges ด้วย privilege flag บอก Nmap ว่ามันมี capabilities เหล่านี้ รัน:

nmap --privileged -sS 192.168.0.112
วิธีรัน Nmap โดยไม่ต้องใช้ Root หรือ Sudo

หมายเหตุ: ต้องใช้ option --privileged มิฉะนั้น Nmap จะไม่รู้ว่ามันมี privileges นี้

หากต้องการประหยัดเวลาพิมพ์ nmap --privileged flag ทุกครั้ง ตั้งค่า NMAP_PRIVILEGED environmental variable permanently โดยเพิ่ม export line ไปที่:

  • ~/.xsessionrc: ใช้กับ most desktop/graphical environments และ inheritable โดย shells และ terminals
  • ~/.profile: ใช้กับ shells ที่ต้องการ login
  • ~/.bashrc: ใช้กับ bash
  • ~/.gnomerc: ใช้กับ GNOME เท่านั้น

สรุป

Nmap port scanning และ host discovery methods ส่วนใหญ่ต้องการ root หรือ sudo privileges ตามที่อธิบายใน tutorial คุณสามารถ override functionality นี้ และรัน Nmap โดยไม่ต้องเป็น root หรืออยู่ใน sudoers group ดู best Linux port scanners อื่นๆ ที่ใช้ได้