एक प्रक्रिया द्वारा किए गए सभी सिस्टम कॉल और उसके सभी वंशजों को ऑडिट के साथ कैसे लॉग इन करें


13

मैं कर सकता हूँ

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

पीआईडी ​​1234 द्वारा किए गए सभी सिस्टम कॉल लॉग करने के लिए और:

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

अपने बच्चों के लिए, लेकिन मैं ग्रैंड-चिल्ड्रन और उनके बच्चों को कैसे कवर करूं (वर्तमान और भविष्य)?

मैं (e) uid / (e) gid पर भरोसा नहीं कर सकता जो बदलाव करते हैं।

(ध्यान दें कि उपयोग straceकरना विकल्प नहीं है)


4
omg, omg, omg, Stephane एक सवाल पूछ रहे हैं ... (मैं शीर्षक से यहाँ आया था, सोच strace -s^ ^ लेकिन फिर मैंने देखा कि कौन पूछ रहा था और तुरंत जानता था "वह पहले से ही जानता है!") ... स्टीफन, क्या आप कर सकते हैं? हो सकता है: 1) पीएस की सूची का निर्माण पीएस के "पेड़" विकल्प का उपयोग करके, 2) पेड़ में सूचीबद्ध सभी pids पर ऑडिटक्टल (एस) लॉन्च करें? (यानी, क्या आपके पास एक से अधिक "pid = ...." हो सकता है? या एक से अधिक ऑडिटक्टल, प्रत्येक?) या "dumb" तरीका: सबकुछ ऑडिट करें, और "pid | pid | pid | pid | if" पर किसी प्रकार का। वे प्रत्येक पंक्ति पर दिखाई देते हैं?) (चेतावनी: मेरे पास लिनक्स एटीएम तक पहुंच नहीं है, इसलिए मुझे पता नहीं है कि इन्फोस कैसे दिखाई देते हैं)
ओलिवियर दुलक

एक ऐसी ट्रिक जो आप शायद इस्तेमाल कर सकते हैं (एक बार फिर, मुझे ऑडिट की बारीकियों का पता नहीं है, और न ही मैं इस समय कोशिश कर सकता हूं): एक विशिष्ट एनवायरनमेंट वैरिएबल निर्दिष्ट करें जब सबसे ऊपरी माता-पिता को लॉन्च करें, और इस वेरिएबल सेट के सभी प्रक्रियाओं को ऑडिट करें?
ओलिवियर दुलक

@OlivierDulac, प्रक्रिया को किसी तरह से चिह्नित करना (जो कि बच्चों को विरासत में मिला है) एक चीज है जो मेरे मन में है। लेकिन जिन चीजों के ऑडिट नियमों पर मिलान किया जा सकता है, उनकी सूची काफी पतली है (यहां तक ​​कि पैर नहीं, pgid ...)। शायद SELinux वाले, लेकिन मैं SELinux के बारे में पहली बात नहीं जानता। शायद नाम रिक्त स्थान की प्रक्रिया?
स्टीफन चेज़लस

शायद सर्वोच्च माता-पिता अपने स्वयं के प्रक्रिया समूह में हो सकते हैं? ( en.wikipedia.org/wiki/Process_group )
ओलिवियर दुलक

2
मैंने सोचा कि शायद एक विशिष्ट कंटेनर में अपना कार्यक्रम चलाएं, अगर यह आपके लिए एक विकल्प है। अगर मैं इस बग थ्रेड को ठीक से समझूं, तो इसे कर्नेल के साथ काम करना चाहिए 33.13। इसके अलावा, मुझे SELinux और ऑडिट UID के अलावा कोई अन्य विधि नहीं दिख रही है । क्या आपके उपयोग के मामले में AUID लागू होगा?
गिल्स एसओ- बुराई को रोकें '

जवाबों:


1

बस किसी भी तरह से बिना किसी प्रस्ताव के इसे अभी आज़माने का प्रस्ताव है ... लेकिन सिर्फ पोस्ट से ही अनुमान लगाया जा रहा है

यहाँ समाधान का एक प्रस्ताव है:

सबसे ऊपरी प्रक्रिया आईडी $ pid में है, और यह कि लिनक्स पर और साथ ही ps -Tप्रक्रियाओं का पेड़ देता है (मुझे इस समय 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

बेशक, ps -T "$pid"लिनक्स के लिए समकक्ष के साथ बदलें , अगर वह लिनक्स पर काम नहीं करता है (या "pstree -p" आउटपुट को awk-ing द्वारा ढूंढता है, तो पोड कोष्ठक के बीच होगा)


2
धन्यवाद, लेकिन यह "भविष्य" बच्चों को कवर नहीं करता है, और यह कि लूप में अक्सर चलने वाले अल्पकालिक प्रक्रियाओं को कवर नहीं करेंगे। और फिर से इस्तेमाल करने से समस्या पैदा होती है।
स्टीफन चेज़लस

सभी मान्य बिंदु ... तब मेरा मानना ​​है कि आप जो चाहते हैं वह संभवतः "मोस्ट वांटेड" फीचर है, और इसलिए पहले से ही ऑडीक्टेल स्तर पर मौजूद हो सकता है (लेकिन यह निश्चित रूप से अभी मैनपेज में दिखाई नहीं देता है): यह हो सकता है भविष्य के संस्करण के लिए प्रस्तावित (या ... लिखित) होना चाहिए। मुझे प्रक्रियाओं के "एक पेड़ का पालन करने" का कोई तरीका याद नहीं है ... लेकिन आप शायद 1 को लागू कर सकते हैं) कुछ स्क्रिप्ट को नियमित रूप से "पीएसटी" समकक्ष करते हैं, 2) एक और स्क्रिप्ट 1 को मारता है जैसे ही pid की मृत्यु 3) हर बार 1 से pid की सूची) बदल जाती है, उन pids के लिए audctl को जोड़ / हटा देता है? (ऐसा करने के लिए बहुत मुश्किल नहीं है)
ओलिवियर दुलाक

1
(मेरी अंतिम टिप्पणी बहुत कम समय तक चलने वाली प्रक्रियाओं के लिए pb को हल नहीं करती है ... इसे कर्नेल स्तर पर ही कुछ की आवश्यकता हो सकती है, और मैं आपको यह बताने के लिए पर्याप्त नहीं हूं कि क्या इसके लिए कुछ मौजूद है। कर्नेल मेलिंग सूचियाँ)
ओलिवियर दुलक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.