Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Cách chạy Nmap không cần Root hoặc Sudo

Nmap, viết tắt Network Mapper, là một trong công cụ port mapper và quét mạng dùng nhiều nhất. Mặc dù chạy được một số chức năng cơ bản Nmap như user bình thường/không đặc quyền, dùng hầu hết tính năng nâng cao cần quyền root hoặc sudo.

Ví dụ, tính năng quét port nâng cao như NULL, Stealth SYN Scan, và nhiều khác chỉ chạy với quyền root vì Nmap cần truy cập raw packet data để cho kết quả đầy đủ/khả dụng.

Bất cứ khi nào bạn thử chạy tính năng nâng cao không có sudo, công cụ nhắc "requires root privileges".

Cách chạy Nmap không cần Root hoặc Sudo

Thật đáng buồn, phải dùng sudo chạy Nmap có thể gây vấn đề, đặc biệt nếu bạn không trong sudo group.

May mắn thay, bạn có thể dùng capabilities chạy Nmap không cần root hoặc sudo.

Capabilities là gì?

Linux capabilities là thuộc tính kernel Linux cho phép chương trình và tiến trình dùng đặc quyền dành riêng cho root user.

Về bản chất, Linux capabilities chia sẻ quyền root user, làm cho tiến trình không đặc quyền chạy như đặc quyền, nghĩa là không qua kiểm tra permission.

Có nhiều Linux capabilities. Học thêm ở man pages.

Mục đích hướng dẫn là chỉ cách dùng 3 capabilities: CAP_NET_RAW, CAP_NET_ADMIN, CAP_NET_BIND_SERVICE để cho Nmap đặc quyền cần chạy không kiểm tra quyền root user.

Lưu ý: cẩn thận khi set capabilities nâng cao, vì user độc hại có thể exploit Nmap Scripting Engine lấy toàn quyền sudo và dùng script exploit lỗ hổng local host. Vì vậy, dùng cẩn thận hoặc giới hạn truy cập Nmap cho group cụ thể.

Sau là Linux capabilities cấp cho Nmap loại bỏ cần sudo/root.

  • CAP_NET_RAW: set capability cho phép tiến trình truy cập và dùng raw packet data và sockets.
  • CAP_NET_ADMIN: capability này cho tiến trình thực hiện hoạt động mạng như IP firewall admin, cấu hình interface, set service type TOS, thay routing table, v.v.
  • CAP_NET_BIND_SERVICE: Capability này bind socket vào privileged ports Internet domain.

Linux capabilities gán trong set "effective", "inheritable", "permitted", "ambient" cho thread và file. Để cho Nmap capabilities cần chạy không root/sudo, dùng eip, cho phép Nmap dùng capabilities bất kể user nào chạy.

Bước 1: Cài libcap

Để set Linux capabilities, cần cài package libcap. Package này cho phép dùng lệnh setcap. Dùng lệnh:

sudo apt-get install libcap2-bin
Cách chạy Nmap không cần Root hoặc Sudo

Bây giờ đã cài libcap, dùng setcap sửa Linux capabilities.

Bước 2: Set Nmap capabilities

Để set Nmap capabilities cho phép chạy không root, chạy lệnh:

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

Sau set capabilities, xác minh đã áp dụng bằng getcap.

getcap $(which nmap)
Cách chạy Nmap không cần Root hoặc Sudo

Lưu ý: bắt buộc chỉ định full path đến thư mục cài Nmap.

Bước 3: Chạy Nmap với cờ privilege

Bây giờ đã set 3 capabilities, chạy Nmap không sudo bằng cờ privilege báo cho Nmap biết nó có capabilities. Thực thi:

nmap --privileged -sS 192.168.0.112
Cách chạy Nmap không cần Root hoặc Sudo

Lưu ý: Bắt buộc dùng --privileged, nếu không Nmap không biết nó có đặc quyền.

Nếu muốn tiết kiệm thời gian gõ nmap --privileged mỗi lần, set biến môi trường NMAP_PRIVILEGED vĩnh viễn bằng thêm dòng export vào:

  • ~/.xsessionrc: hoạt động với hầu hết desktop/graphical environment và kế thừa bởi shell/terminal.
  • ~/.profile: hoạt động cho shell yêu cầu login
  • ~/.bashrc: cho bash
  • ~/.gnomerc: chỉ cho GNOME

Kết luận

Hầu hết phương pháp quét port và host discovery Nmap cần root/sudo. Như thảo luận, bạn có thể override chức năng này chạy Nmap không phải root hoặc trong sudoers group. Xem thêm port scanner Linux tốt nhất.