नेटवर्क पर की गई गतिविधियों को लॉग करना

यह दस्तावेज़ बताता है कि डिवाइस नीति नियंत्रक (DPC) नेटवर्क कैसे लॉग करता है गतिविधि. अपने DPC में नेटवर्क लॉगिंग जोड़ने का तरीका जानने के लिए आगे पढ़ें.

खास जानकारी

नेटवर्क पर की गई गतिविधियों को लॉग करने से एंटरप्राइज़, मैलवेयर को फैलने से रोकने में मदद मिलती है. टीसीपी की जानकारी देने के लिए, आपका डीपीसी (DPC) नेटवर्क लॉगिंग एपीआई को कॉल कर सकता है सिस्टम नेटवर्किंग कॉल से कनेक्शन और DNS लुकअप.

आम तौर पर, आपका DPC किसी सर्वर पर लॉग डिलीवर करता है, ताकि आईटी एडमिन को प्रज़ेंटेशन दिया जा सके. आप लॉग को आगे अपने सर्वर पर या स्थानीय रूप से डिवाइस. उदाहरण के लिए, डीएनएस ब्लॉकलिस्ट सेट अप करके, आईटी का पता लगाया जा सकता है और उसे सूचना दी जा सकती है एडमिन को संदिग्ध गतिविधि का पता चलता है.

उपलब्धता

डिवाइस के मालिक के लिए, नेटवर्क लॉग करने की सुविधा, Android 8 और इसके बाद वाले वर्शन पर काम करती है. अगर आपने चालू है, तो यह डिवाइस की नेटवर्क गतिविधि का डेटा इकट्ठा करता है. यह भी है मैनेज की जा रही प्रोफ़ाइल के मालिक के लिए, Android 12 और इसके बाद वाले वर्शन में काम करता हो और DELEGATION_NETWORK_LOGGING के साथ असाइन किया गया ऐप्लिकेशन. जब प्रोफ़ाइल के मालिक ने नेटवर्क लॉगिंग की सुविधा चालू की हो, तो सिर्फ़ नेटवर्क लॉग करता है इसमें वर्क प्रोफ़ाइल नेटवर्क की गतिविधि शामिल होती है और निजी प्रोफ़ाइल.

ज़्यादा जानने के लिए, अफ़िलिएट उपयोगकर्ता लेख पढ़ें.

गतिविधियों का ब्यौरा

नेटवर्क लॉगिंग सक्रिय होने पर, Android इसका उपयोग करके ऐप्लिकेशन से हर इवेंट को रिकॉर्ड करता है सिस्टम नेटवर्किंग लाइब्रेरी. नेटवर्क लॉगिंग दो तरह के इवेंट रिकॉर्ड करता है:

  • डीएनएस लुकअप
  • इंटरनेट कनेक्शन

डीएनएस लुकअप

नेटवर्क लॉगिंग उन डीएनएस लुकअप के लिए एक इवेंट रिकॉर्ड करता है जो सिस्टम नेटवर्क का हिस्सा हैं अनुरोध. लॉग हर उस डीएनएस अनुरोध को कैप्चर करते हैं जो होस्टनेम को किसी आईपी से रिज़ॉल्व करता है इससे पहले ही अपने कारोबार के हिसाब से name@yourcompany.com जैसा कोई ईमेल पता बनाएं. काम करने वाली अन्य डीएनएस क्वेरी, जैसे कि नेम सर्वर डिस्कवरी का इस्तेमाल नहीं किया जाता है रिकॉर्ड किया गया.

Network ऐक्टिविटी लॉगिंग एपीआई हर डीएनएस लुकअप को DnsEvent इंस्टेंस. पहली टेबल में फ़ील्ड और अन्य प्रॉडक्ट के बारे में जानकारी दी गई है DnsEvent में रिकॉर्ड की गई वैल्यू.

टेबल 1. डीएनएस इवेंट फ़ील्ड

डेटा उदाहरण ब्यौरा
होस्टनाम host.example.com पर होस्ट किया जाएगा डीएनएस क्वेरी में भेजा गया होस्टनेम.
Inet पते 203.0.113.9, 198.51.100.25 आईपीवी4 या आईपीवी6 की सूची, होस्टनेम के लिए समाधान की गई डीएनएस क्वेरी का पता लगाती है. लॉग के साइज़ को मैनेज करने लायक बनाए रखने के लिए, हो सकता है कि नतीजों में सभी आईपी पते शामिल न हों—नीचे दी गई पंक्ति में पतों की संख्या देखें.
पते की संख्या 4 डीएनएस क्वेरी रिज़ॉल्यूशन से मिले आईपी पतों की संख्या. इसका इस्तेमाल करके, यह पता लगाएं कि लॉग किए गए आईपी पते, नतीजों का सबसेट हैं या नहीं. वैल्यू 0 (शून्य) होने का मतलब है कि होस्टनेम से किसी आईपी पते का पता नहीं चला.
पैकेज का नाम com.android.chrome ऐप्लिकेशन का पैकेज नाम जिसने डीएनएस क्वेरी की है.
टाइमस्टैंप 1506297600000 डीएनएस लुकअप प्रोसेस के दौरान, टाइमस्टैंप की गई रिकॉर्डिंग. यह वैल्यू, 1 जनवरी, 1970 यूटीसी और डीएनएस लुकअप और मध्यरात्रि के बीच मिलीसेकंड का अंतराल है.
आईडी 25 एक ऐसा संख्या जो आईडी में हो रही जानकारी के हिसाब से अपने-आप बढ़ता हो. यह सुविधा, Android 9.0 (एपीआई लेवल 28) या इसके बाद वाले वर्शन में उपलब्ध है.

डीएनएस लुकअप से आईटी एडमिन को मदद मिल सकती है नेटवर्क कनेक्शन पर नज़र रखो, नेटवर्क लॉगिंग अलग-अलग कामों के लिए इस्तेमाल की जाने वाली डीएनएस रिकॉर्डिंग सुविधा. यहां डीएनएस से जुड़े कुछ ऐसे टास्क दिए गए हैं जो कोई ऐप्लिकेशन कर सकता है जो लॉग नहीं किए जाते हैं:

  • डीएनएस नेम सर्वर से सीधे तौर पर बातचीत करना.
  • डीएनएस क्वेरी बनाने के लिए, Java की डीएनएस लाइब्रेरी को कॉल करना.
  • किसी तय आईपी पते से कनेक्ट करके डीएनएस क्वेरी से बचना.

इंटरनेट कनेक्शन

नेटवर्क लॉगिंग की मदद से कोशिश किए गए हर कनेक्शन के लिए एक इवेंट रिकॉर्ड किया जाता है. सिस्टम नेटवर्क अनुरोध. लॉग कैप्चर हो गए और टीसीपी में पुष्टि नहीं हो सकी कनेक्शन—यूडीपी ट्रांसफ़र रिकॉर्ड नहीं किए जाते.

Network ऐक्टिविटी लॉगिंग एपीआई हर कनेक्शन को ConnectEvent इंस्टेंस. दूसरी टेबल में फ़ील्ड के बारे में बताया गया है और ConnectEvent में रिकॉर्ड की गई सामान्य वैल्यू.

दूसरी टेबल. इवेंट फ़ील्ड कनेक्ट करें

डेटा उदाहरण ब्यौरा
Inet पते 2001:db8::2f:abc:0 वह आईपी पता जिससे डिवाइस कनेक्ट है. यह आईपीवी4 या आईपीवी6 पता हो सकता है.
पोर्ट 80 वह टीसीपी पोर्ट नंबर जिससे डिवाइस कनेक्ट है.
पैकेज का नाम com.android.chrome कनेक्ट किए गए ऐप्लिकेशन का पैकेज नाम.
टाइमस्टैंप 1506297600000 इंटरनेट कनेक्शन होने के दौरान टाइमस्टैंप की रिकॉर्डिंग. इसका मान कनेक्शन और मध्यरात्रि, 1 जनवरी, 1970 UTC के बीच मिलीसेकंड का अंतराल है.
आईडी 26 एक ऐसा संख्या जो आईडी में हो रही जानकारी के हिसाब से अपने-आप बढ़ता हो. यह सुविधा, Android 9.0 (एपीआई लेवल 28) या इसके बाद वाले वर्शन में उपलब्ध है.

जब कोई ऐप्लिकेशन स्टैंडर्ड नेटवर्क लाइब्रेरी को कॉल करता है, तो नेटवर्क लॉगिंग इवेंट को रिकॉर्ड करता है, जैसे कि Android के बिल्ट-इन एपीआई या तीसरे पक्ष की लोकप्रिय लाइब्रेरी. एक होस्ट. सिस्टम कॉल करने वाले ऐसे ऐप्लिकेशन लॉग नहीं किए जाते जो सीधे तौर पर बातचीत करने के लिए कॉल करते हैं. याद रखें कि यूडीपी नेटवर्किंग लॉग नहीं की जाती है, इसलिए कुछ मीडिया स्ट्रीमिंग, मैसेज सेवा, और लॉग में गेमिंग ऐप्लिकेशन शायद न दिखें.

उपयोगकर्ताओं को सूचना दें

सिस्टम, डिवाइस के उपयोगकर्ताओं को नेटवर्क गतिविधि लॉग करने की सुविधा के चालू होने पर सूचना देता है. लोग इंटरफ़ेस में ये चेतावनियां दिखती हैं:

  • डिवाइस मैनेजमेंट डायलॉग में मौजूद सेक्शन, जो बताता है कि आपका DPC मॉनिटर कर रहा है नेटवर्क ट्रैफ़िक. मैनेज किए जा रहे डिवाइस की जानकारी पर टैप करने पर, उपयोगकर्ताओं को डायलॉग दिखता है लेबल देखें.
  • जब उपयोगकर्ता नेटवर्क पर नया हो, तब उसे खारिज किया जा सकने वाला सिस्टम सूचना लॉगिंग. सूचना पर टैप करने से डिवाइस को मॉनिटर करने वाले डायलॉग बॉक्स के साथ और ज़्यादा जानकारी भी दी गई है. सूचना गायब हो जाती है जब आपका DPC नेटवर्क लॉगिंग को बंद कर देता है.

अपने DPC में नेटवर्क लॉगिंग जोड़ें

आईटी एडमिन को नेटवर्क लॉग की समीक्षा करने में मदद करने के लिए, DPC के लिए यह ज़रूरी है कि वह ये काम पूरे करें:

  • नेटवर्क लॉगिंग को चालू या बंद करें.
  • नया बैच तैयार होने पर, रिकॉर्ड किए गए सभी लॉग वापस पाएं.
  • लॉग में मौजूद ज़रूरी डेटा को सर्वर पर भेजें.

ज़रूरी शर्तें

नेटवर्क लॉगिंग की सुविधा Android 8.0 (एपीआई लेवल 26) या उसके बाद वाले वर्शन पर डिवाइस का मालिक और Android 12 (एपीआई लेवल 31) या उसके बाद का वर्शन, मैनेज की जा रही प्रोफ़ाइल. नेटवर्क गतिविधि लॉग करने से पहले, आपके DPC को यह जांच करनी चाहिए कि यह डिवाइस का मालिक या मैनेज की जा रही प्रोफ़ाइल का मालिक. नेटवर्क लॉग इन जिस डिवाइस के मालिक के पास वर्क प्रोफ़ाइल है, वह नेटवर्क पर की गई गतिविधि को शामिल नहीं करता है व्यक्तिगत प्रोफ़ाइल पर.

नेटवर्क लॉगिंग सक्षम करें

नेटवर्क पर की गई गतिविधियों को लॉग करने के लिए, DevicePolicyManager पर कॉल करें तरीका setNetworkLoggingEnabled() और true पास करें enabled तर्क के रूप में डालें. आपका DPC कॉल कर सकता है नेटवर्क है या नहीं, यह देखने के लिए isNetworkLoggingEnabled() गतिविधि लॉग की गई है.

आपके DPC के नेटवर्क लॉगिंग को सक्षम किए जाने के बाद, लॉग का पहला बैच तैयार है. आईटी के लिए डिलीवरी की उम्मीदें सेट की जा सकती हैं एडमिन की जानकारी देता है.

नेटवर्क पर की गई गतिविधियों को लॉग करने की सुविधा बंद करने के लिए, setNetworkLoggingEnabled() पर कॉल करें और पास false. जब कोई आईटी एडमिन, नेटवर्क में लॉग इन करने की सुविधा बंद कर देता है, तो सिस्टम इकट्ठा किए गए और रिपोर्ट न किए गए लॉग.

लॉग वापस पाएं

आपका DPC बैच में लॉग हासिल कर सकता है—नेटवर्क लॉगिंग एपीआई आपको पिछली व्यक्तिगत एंट्री का रैंडम ऐक्सेस. जब लॉग का नया बैच उपलब्ध होता है, आपके DPC की DeviceAdminReceiver सब-क्लास को onNetworkLogsAvailable() कॉलबैक. कॉलबैक में एक बैच टोकन शामिल होता है, जिसका इस्तेमाल DPC लॉग पाने के लिए कर सकता है. आपका DPC DevicePolicyManager तरीका retrieveNetworkLogs() नेटवर्क इवेंट की सूची देखें.

नीचे दिए गए उदाहरण में दिखाया गया है कि आपकी मदद से, DeviceAdminReceiver सब-क्लास:

Kotlin

fun onNetworkLogsAvailable(
        context: Context, intent: Intent, batchToken: Long, networkLogsCount: Int) {

    val dpm = getManager(context)
    var logs: List<NetworkEvent>? = null

    // Fetch the batch of logs with the batch token from the callback's arguments.
    try {
        logs = dpm.retrieveNetworkLogs(getWho(context), batchToken)
    } catch (e: SecurityException) {
        // Perhaps an unaffiliated user - handle the exception ...
    }

    // Process any logs ...
}

Java

public void onNetworkLogsAvailable(
    Context context, Intent intent, long batchToken, int networkLogsCount) {

  DevicePolicyManager dpm = getManager(context);
  List<NetworkEvent> logs = null;

  // Fetch the next batch of logs using the callback's batch token argument.
  try {
    logs = dpm.retrieveNetworkLogs(getWho(context), batchToken);
  } catch (SecurityException e) {
    // Perhaps an unaffiliated user - handle the exception ...
  }

  // Process any logs ...
}

आपका DPC लॉग को तुरंत हासिल कर लेगा, क्योंकि सिस्टम नए बैच के लिए जगह बनाने के लिए लॉग करता है. आप लॉग तब तक लॉग करते हैं, जब तक आप सुनिश्चित न हों कि आपके DPC ने उन सभी को बिना किसी समस्या के संसाधित कर दिया है.

लॉग प्रोसेस करें

लॉग के बैच में आम तौर पर DnsEvent और ConnectEvent इंस्टेंस. इसके डेटा फ़ील्ड के बारे में ज़्यादा जानने के लिए डीएनएस लुकअप और नेटवर्क कनेक्शन, इवेंट लॉग देखें. इवेंट क्रम के मुताबिक, हर बैच में 1,200 से ज़्यादा इवेंट नहीं होते.

लॉग फिर से पाने के लिए कॉल करने के बाद, देखें कि रिटर्न वैल्यू null नहीं है. कॉन्टेंट बनाने वैल्यू null हो सकती है, अगर इनमें से कोई एक समस्या होती है:

  • बैच टोकन के ज़रिए दिखाया गया बैच अब उपलब्ध नहीं है. आपका DPC बैच को वापस नहीं ला सकता और उसे अगले बैच के लिए इंतज़ार करना चाहिए.
  • आईटी एडमिन ने नेटवर्क लॉगिंग की सुविधा बंद कर दी है.

नीचे दिया गया आसान उदाहरण दिखाता है कि DPC, डीएनएस होस्टनेम को कैसे निकाल सकता है समाधान किया गया. आपके DPC को और बेहतर प्रोसेसिंग और रिपोर्टिंग की ज़रूरत है.

Kotlin

// Here, logs might be null. We can't fix because either the token doesn't match
// the current batch or network logging was deactivated.
// Confirm with isNetworkLoggingEnabled().

logs?.forEach {
    // For this example, report the DNS hosts and discard all other data.
    // Because we use the event ID, this example requires API level 28.
    if (it is DnsEvent) {
        reportDnsHostToServer(it.hostname, it.getTimestamp(), it.getId())
    }
}

Java

if (logs == null) {
  // Abandon processing because either the token doesn't match the current batch
  // or network logging was deactivated - confirm with isNetworkLoggingEnabled().
  return;
}

for (NetworkEvent event : logs) {
  // For this example, report the DNS hosts and discard all other data.
  // This example requires API level 28 because we use the event ID.
  if (event instanceof DnsEvent) {
    reportDnsHostToServer(
        ((DnsEvent) event).getHostname(), event.getTimestamp(), event.getId());
  }
}

ऊपर दिए गए उदाहरण में यह भी दिखाया गया है कि आप ऐसे इवेंट जो Android 9.0 (एपीआई लेवल 28) या उसके बाद के वर्शन में शामिल हैं. क्योंकि आईडी हर इवेंट के लिए एक ही तरह से बढ़ोतरी होती है. साथ ही, आईटी एडमिन को उनके लॉग. जब भी कोई DPC लॉगिंग को सक्षम करता है या जब डिवाइस रीस्टार्ट हो जाता है.

आपका DPC किसी सर्वर को पूरा कलेक्शन भेज सकता है या आप चाहें, तो ऐसा कर सकते हैं इवेंट को फ़िल्टर करने में मदद मिलती है. उदाहरण के लिए, उपयोगकर्ताओं को अनुमति वाली सूची में शामिल करने का ऑफ़र दिया जा सकता है के लिए रिपोर्टिंग कर सकते हैं.

डेवलपमेंट और टेस्टिंग

डेवलप और टेस्ट करते समय, हो सकता है कि आपको onNetworkLogsAvailable() कॉलबैक सैकड़ों वेब पेज ब्राउज़ करें. Android 9.0 (एपीआई लेवल 28) या उसके बाद के वर्शन में, ये काम किए जा सकते हैं नेटवर्क अनुरोध का कुछ नमूना लें और सिस्टम को लॉग-उपलब्ध भेजने के लिए कहें कॉलबैक. अपने डिवाइस में, यहां दिया गया Android डीबग ब्रिज (adb) निर्देश चलाएं टर्मिनल:

adb shell dpm force-network-logs

सिस्टम यह तय करता है कि टूल का इस्तेमाल कितनी बार किया जा सकता है और टर्मिनल आउटपुट में जान-बूझकर धीमा पड़ रहा है. अगर डाइग्नोस्टिक टूल के लिए कोई लॉग नहीं है फिर से पाएं, आपके DPC को कॉलबैक नहीं मिलता.