Đăng nhập mọi lời mời của mọi chương trình SUID?


12

Tôi muốn có một tệp nhật ký chứa mục nhập cho mỗi lần người dùng chạy bất kỳ chương trình suid nào, có chứa tên người dùng, chương trình và bất kỳ đối số dòng lệnh nào được truyền cho nó. Có một cách tiêu chuẩn để đạt được điều này trên Linux?

Câu trả lời:


7

Bạn có thể đăng nhập tất cả các yêu cầu của một thực thi cụ thể (setuid hoặc không) thông qua hệ thống con kiểm toán . Các tài liệu khá thưa thớt; bắt đầu với trang man Audctl , hoặc có lẽ hướng dẫn này . Hầu hết các bản phân phối gần đây gửi một auditdgói. Cài đặt nó và đảm bảo auditddaemon đang chạy, sau đó làm

auditctl -A exit,always -F path=/path/to/executable -S execve

và xem các cuộc gọi được đăng nhập /var/log/audit/audit.log(hoặc bất cứ nơi nào phân phối của bạn đã thiết lập cuộc gọi này).


1
Tôi đoán người ta có thể viết một tập lệnh để trước tiên nhận được tất cả các nhị phân SUID với tìm và sau đó sử dụng giải pháp của bạn cho từng tập lệnh. Không thanh lịch, nhưng chắc chắn có thể làm được. Cảm ơn!
Kim

2
@Kim: Tôi nghĩ rằng bạn có thể đăng nhập tất cả các yêu cầu của một nhị phân gốc setuid bởi một người dùng không root bằng cách thay thế -F path=…bằng -F euid=0 -F 'uid!=0'hoặc một cái gì đó giống như nó. Tôi không thể thấy một cái móc trong mã setxid được gọi bởiexecve một đồng hồ setxid cụ thể trong hệ thống con kiểm toán . Hoặc, tất nhiên, bạn có thể đăng nhập mọi execvevà hậu xử lý.
Gilles 'SO- ngừng trở nên xấu xa'

Hấp dẫn. Chưa nghe thấy điều này bao giờ. Tôi tự hỏi làm thế nào nó được sử dụng rộng rãi. Debian popcon không có mục nào cho auditd.
Faheem Mitha

findlệnh liệt kê tất cả các tệp SUID:find / -xdev \( -perm -4000 \) -type f -print

1
@FaheemMitha Nó có một mục popcon: qa.debian.org/popcon-graph.php?packages=auditd
jofel 18/07/13
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.