अल्पकालिक टीसीपी कनेक्शन स्वामी प्रक्रिया खोजना


15

tcpdumpएक अपाचे सर्वर के लिए स्थानीय कनेक्शनों पर चल रहा है, मैंने पाया कि टीसीपी कनेक्शन स्थापित हो रहे हैं और हर 2 सेकंड में तुरंत बंद हो जाते हैं। मुझे कैसे पता चलेगा कि कौन सी प्रक्रिया इसके लिए जिम्मेदार है? netstat -ctpमदद नहीं की, कनेक्शन बहुत तेज़ थे और TIME_WAIT वाले के लिए प्रक्रिया पहचानकर्ता प्रदर्शित नहीं किया गया है।

वे हाइप्रोक्सी जांच के रूप में सामने आए, जिसे मैं सत्यापित कर सकता था strace, लेकिन मुझे अभी भी पहली बार में हाइप्रोक्सी को इंगित करने का कोई तरीका नहीं पता है।

जवाबों:


20

आप इस तरह की चीजों के लिए ऑडिट ढांचे का उपयोग कर सकते हैं। वे बहुत "उपयोगकर्ता के अनुकूल" या सहज नहीं हैं, इसलिए आपके हिस्से के चारों ओर थोड़ी खुदाई करने की आवश्यकता है।

पहले सुनिश्चित करें कि आपके पास ऑडिट स्थापित है, चल रहा है और यह कि आपका कर्नेल इसका समर्थन करता है।
उबंटू के लिए आप इसे apt-get install auditdउदाहरण के लिए स्थापित कर सकते हैं ।

फिर आप connectइस तरह सभी syscalls की निगरानी के लिए ऑडिट के लिए एक नीति जोड़ें :

auditctl -a exit,always -F arch=b64 -S connect -k MYCONNECT

यदि आप लिनक्स की 32-बिट स्थापना का उपयोग कर रहे हैं, तो आपको b64 से b32 में बदलना होगा।

यह कमांड ऑडिट फ्रेमवर्क में एक पॉलिसी डालेगी, और किसी भी कनेक्ट () syscalls को अब आपके ऑडिट लॉगफाइल्स (आमतौर पर /var/log/audit/audit.log) पर लॉग इन करने के लिए देखा जाएगा।

उदाहरण के लिए, netcat के साथ news.ycombinator.com पोर्ट 80 का कनेक्शन कुछ इस तरह से होगा:

type=SYSCALL msg=audit(1326872512.453:12752): arch=c000003e syscall=42 success=no exit=-115 a0=3 a1=24e8fa0 a2=10 a3=7fff07a44cd0 items=0 ppid=5675 pid=7270 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts4 ses=4294967295 comm="nc" exe="/bin/nc.openbsd" key="MYCONNECT"
type=SOCKADDR msg=audit(1326872512.453:12752): saddr=02000050AE84E16A0000000000000000

यहां आप देख सकते हैं कि /bin/nc.openbsd एप्लिकेशन ने एक कनेक्ट () कॉल शुरू की है, यदि आपको बहुत सारे कनेक्ट कॉल मिलते हैं और केवल एक निश्चित आईपी या पोर्ट को प्राप्त करना चाहते हैं तो आपको कुछ रूपांतरण करना होगा। सोकैडीडीआर लाइन में एक दुखद तर्क है, यह 0200 से शुरू होता है, इसके बाद हेक्साडेसिमल (0050) में पोर्ट संख्या होती है जिसका अर्थ है 80, और फिर हेक्स में आईपी (AE84E16A) जो कि news.bbinbin.com.com का IP 174.132.225.106 है।

ऑडिट फ्रेमवर्क बहुत सारे लॉग उत्पन्न कर सकता है , इसलिए अपने मिशन को पूरा करने के बाद इसे अक्षम करना याद रखें। उपर्युक्त नीति को निष्क्रिय करने के लिए, बस -a को -d से इस तरह बदलें:

auditctl -d exit,always -F arch=b64 -S connect -k MYCONNECT

ऑडिट ढांचे पर अच्छा प्रलेखन:
http://doc.opensuse.org/products/draft/SLES/SLES-security_sd_draft/part.audit.html

Http://www.xoth.net/services/iplocate.pp पर: IP को हेक्स, डिक, बाइनरी, आदि से / में परिवर्तित करें

सामान्य हेक्स / डिक कनवर्टर:
http://www.statman.info/conversions/hexadecimal.html

आईटी सिक्योरिटी स्टाॅक एक्सचेंज से ऑडिट का संक्षिप्त परिचय। http://security.blogoverflow.com/2013/01/a-brief-introduction-to-auditd/

1 संपादित करें :
एक और क्विक'निथ तीस (सिन: फुलहैक) तरीका यह है कि आप एक तेज लूप बनाएं जो आपके लिए इस तरह से कनेक्शन डेटा को डंप करता है:

while true;do
  ss -ntap -o state established '( dport = :80 )'
  sleep 1
done

यह आदेश ssवर्तमान स्थापित कनेक्शनों को पोर्ट करने के लिए कमांड (सॉकेट आँकड़े) का उपयोग करता है, जिसमें यह प्रक्रिया शुरू की गई थी। अगर इसका बहुत सारा डेटा आप | tee /tmp/outputदोनों के बाद जोड़ सकते हैं तो स्क्रीन पर आउटपुट को दिखाने के साथ ही इसे बाद में प्रोसेसिंग / खुदाई के लिए / tmp / आउटपुट पर लिखें। यदि यह त्वरित हाइप्रोक्सी कनेक्शन को नहीं पकड़ता है, तो कृपया हटाने की कोशिश करें sleep 1लेकिन व्यापक लॉगिंग से सावधान रहें यदि इसकी भारी उपयोग की गई मशीन है। आवश्यकतानुसार संशोधित करें!


विस्तृत प्रतिक्रिया के लिए धन्यवाद। मैं आपके शब्द को ऑडिट समाधान के लिए ले जाऊंगा क्योंकि मेजबान कर्नेल इसका समर्थन नहीं करता है और मेरे पास अभी समय नहीं है कि मैं प्रयोग के लिए उपयुक्त पा सकूं, लेकिन मैं इसे ध्यान में रखूंगा। मतदान समाधान के लिए, मैंने lsof के साथ कुछ ऐसा ही करना शुरू किया, लेकिन बहुत जल्दी बंद कर दिया क्योंकि यह नहीं था ... संतोषजनक।
pmezard 10

2
आप ausearch -iउन saddrहेक्स स्ट्रिंग्स को स्वचालित रूप से आपके लिए डिकोड किए गए का उपयोग कर सकते हैं ।
sch

ss lsof की तुलना में अधिक संतोषजनक है क्योंकि यह तेज़ है और इसमें फ़िल्टरिंग के अच्छे नियम हैं - grep की कोई आवश्यकता नहीं है। मैं समर्थन के साथ समस्याओं की सराहना कर सकता हूं: सिस्टमटैप एक और उपकरण है जो शानदार है लेकिन इसे उत्पादन सर्वर पर चलाने के लिए हो सकता है ... यह संतोषजनक है।
मैक्स मर्फी

1

आप केवल उन सॉकेट्स को देखने के लिए "एनसर्च-आई" से प्राप्त होने वाले विशाल लॉग को भी प्राप्त कर सकते हैं जो इंटरनेट पर किसी अन्य होस्ट से सफलतापूर्वक जुड़े हैं। मैंने प्रत्येक प्रक्रिया और कमांड प्राप्त करने के लिए एक सरलीकृत पटकथा लिखी, जिसने उस लक्ष्य होस्ट के कनेक्शन पते और वर्तमान समय में सॉकेट को "बनाया" के साथ इंटरनेट पर होस्ट से कनेक्ट करने के लिए एक सॉकेट बनाया। यह रहा:

#!/bin/bash

if [[ $EUID -ne 0 ]]; then

    echo "You must run this script as root boy!"
    exit 1  

fi

> proccessConnections.dat

connections=`ausearch -i | grep host: | awk -F "msg=audit" '{print $2}' | awk -F ": saddr" '{print $1}'`

connectionsNumber=`echo "$connections" | wc -l`

echo "Number of connections: $connectionsNumber"

echo "$connections" > conTemp.dat

let counter=1
while read connectInfo; do

    success=`ausearch -i | grep "$connectInfo" | grep "type=SYSCALL" | grep success=yes`    
    addressInfo=`ausearch -i | grep "$connectInfo" | grep type=SOCKADDR | awk -F ': ' '{print $2}'`
    processInfo=`ausearch -i | grep "$connectInfo" | grep "type=SYSCALL" | awk -F 'comm=' '{print $2}' | awk -F 'key' '{print $1}'` 

    if [[ $success != "" ]]
    then    
        echo "[$counter - $connectionsNumber] (success)     comm=$processInfo - $addressInfo - $connectInfo"
        echo "[$counter - $connectionsNumber] (success)     comm=$processInfo - $addressInfo - $connectInfo" >> proccessConnections.dat
    else
        echo "[$counter - $connectionsNumber] (no success)  comm=$processInfo - $addressInfo - $connectInfo"
        echo "[$counter - $connectionsNumber] (no success)  comm=$processInfo - $addressInfo - $connectInfo" >> proccessConnections.dat
    fi

    let counter++


done < conTemp.dat
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.