Làm thế nào để ghi nhật ký tất cả các cuộc gọi hệ thống được thực hiện bởi một quy trình và tất cả các hậu duệ của nó với audd


13

tôi có thể làm

auditctl -a always,exit -S all -F pid=1234

Để ghi nhật ký tất cả các cuộc gọi hệ thống được thực hiện bởi pid 1234 và:

auditctl -a always,exit -S all -F ppid=1234

Đối với con của nó, nhưng làm thế nào để tôi bao gồm các cháu và các con của họ (hiện tại và tương lai)?

Tôi không thể dựa vào (e) uid / (e) gid mà thay đổi.

(lưu ý rằng sử dụng stracekhông phải là một tùy chọn)


4
omg, omg, omg, Stephane hỏi một câu hỏi ... (Tôi đến đây chỉ từ tiêu đề, suy nghĩ strace -s^^ nhưng sau đó tôi thấy ai đang hỏi và ngay lập tức biết "anh ấy đã biết điều đó rồi!") ... Stephane, bạn có thể có thể: 1) xây dựng danh sách các pids bằng cách sử dụng tùy chọn "cây" của ps, 2) khởi chạy audctl (s) trên tất cả các pids được liệt kê trong cây? (ví dụ: bạn có thể có nhiều "pid = ...."? hoặc nhiều audctl, mỗi cái một không?) hoặc cách "ngu ngốc": audctl mọi thứ và một số loại egrep trên "pid | pid | pid" nếu chúng có xuất hiện trên mỗi dòng không?) (báo trước: Tôi không có quyền truy cập vào máy tính linux, vì vậy tôi không biết infos xuất hiện như thế nào)
Olivier Dulac

một mẹo mà bạn có thể sử dụng (một lần nữa, tôi không biết cụ thể về Audd, tôi cũng không thể thử vào lúc này): chỉ định một biến môi trường cụ thể khi khởi chạy cha mẹ trên cùng và audctl tất cả các quy trình có biến này được đặt?
Olivier Dulac

@OlivierDulac, đánh dấu quá trình theo một cách nào đó (được thừa hưởng bởi trẻ em) là một điều tôi có trong tâm trí. Nhưng danh sách những điều mà các quy tắc kiểm toán có thể phù hợp là khá mỏng (thậm chí không có sid, pgid ...). Có thể là những người của Selinux, nhưng tôi không biết điều đầu tiên về SELinux. Có thể xử lý không gian tên?
Stéphane Chazelas

có lẽ cha mẹ trên cùng có thể nằm trong nhóm quy trình riêng của mình? ( vi.wikipedia.org/wiki/Process_group )
Olivier Dulac

2
Tôi nghĩ có thể chạy chương trình của bạn trong một thùng chứa cụ thể, nếu đó là một lựa chọn cho bạn. Nếu tôi hiểu chính xác lỗi này , nó sẽ hoạt động với kernel ≥3.13. Ngoài ra, tôi không thấy bất kỳ phương pháp nào khác ngoài SELinux và UID kiểm toán . AUID sẽ được áp dụng cho trường hợp sử dụng của bạn?
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


1

Chỉ cần đề xuất một cái gì đó mà không có cách nào để thử nó ngay bây giờ ... nhưng chỉ cần đoán từ chính bài đăng

Đây là một đề xuất của giải pháp:

Giả sử id quá trình cao nhất nằm ở $ pid và trên linux cũng ps -Tcho ra cây quy trình (hiện tại tôi không thể truy cập vào linux)

for eachpid in $(ps -T "$pid" | awk '{print $1}' | grep -v 'PID')
do
   auditctl -a always,exit -S all -F pid=$eachpid  >somelog_${eachpid}.log 2>&1
done

Tất nhiên, thay thế ps -T "$pid"bằng tương đương với linux, nếu cái đó không hoạt động trên linux (hoặc tìm nó bằng cách sử dụng đầu ra "pstree -p", pid sẽ nằm giữa dấu ngoặc đơn)


2
Cảm ơn, nhưng điều đó không bao gồm những đứa trẻ "tương lai" và chạy nó trong một vòng lặp thường sẽ không bao gồm các quy trình ngắn. Và việc sử dụng lại pid cũng sẽ gây ra vấn đề.
Stéphane Chazelas

tất cả các điểm hợp lệ ... Sau đó, tôi tin rằng những gì bạn muốn có lẽ là một tính năng "mong muốn nhất", và do đó có thể đã có mặt ở cấp độ audctl (nhưng chắc chắn nó không xuất hiện ngay trong trang này): nó có thể có sẽ được đề xuất (hoặc ... bằng văn bản) cho phiên bản trong tương lai. Tôi không nhớ một số cách để "theo dõi một cây" các quy trình ... nhưng bạn có thể thực hiện từng bước một) có một số tập lệnh thực hiện tương đương "ps -T" thông thường, 2) một tập lệnh khác giết chết tập đầu tiên ngay sau khi pid chết 3) mỗi lần danh sách pid từ 1) thay đổi, thêm / xóa audctl cho những pids đó? (không quá khó để làm)
Olivier Dulac

1
(bình luận cuối cùng của tôi không giải quyết được pb cho các quá trình tồn tại rất ngắn ... điều này có thể cần một cái gì đó ở cấp hạt nhân và tôi không biết đủ để nói với bạn nếu có cái gì đó tồn tại cho điều đó. danh sách gửi thư hạt nhân)
Olivier Dulac
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.