Πώς λειτουργεί το οικιακό Διαδίκτυο και τα στατιστικά στοιχεία διακομιστή ονομάτων τομέα;

Ένας οικιακός δρομολογητής (σε αυτήν την περίπτωση το FritzBox) μπορεί να καταγράψει πολλά: πόση κίνηση πηγαίνει πότε, ποιος είναι συνδεδεμένος με ποια ταχύτητα κ.λπ. Ένας διακομιστής ονομάτων τομέα (DNS) στο τοπικό δίκτυο με βοήθησε να μάθω τι κρυβόταν πίσω από τους άγνωστους παραλήπτες.

Συνολικά, το DNS είχε θετικό αντίκτυπο στο οικιακό δίκτυο: πρόσθεσε ταχύτητα, σταθερότητα και διαχειρισιμότητα.

Παρακάτω είναι ένα διάγραμμα που εγείρει ερωτήματα και την ανάγκη να κατανοήσουμε τι συνέβαινε. Τα αποτελέσματα φιλτράρουν ήδη γνωστά και λειτουργικά αιτήματα σε διακομιστές ονομάτων τομέα.

Γιατί 60 σκοτεινοί τομείς δημοσκοπούνται κάθε μέρα ενώ όλοι κοιμούνται ακόμα;

Κάθε μέρα, 440 άγνωστοι τομείς ελέγχονται κατά τις ώρες λειτουργίας. Ποιοι είναι και τι κάνουν;

Μέσος αριθμός αιτημάτων ανά ημέρα ανά ώρα

Πώς λειτουργεί το οικιακό Διαδίκτυο και τα στατιστικά στοιχεία διακομιστή ονομάτων τομέα;

Ερώτημα αναφοράς SQL

WITH CLS AS ( /* prepare unique requests */
SELECT
DISTINCT DATE_NK,
STRFTIME( '%s', SUBSTR(DATE_NK,8,4) || '-' ||
	CASE SUBSTR(DATE_NK,4,3)
	WHEN 'Jan' THEN '01' WHEN 'Feb' THEN '02' WHEN 'Mar' THEN '03' WHEN 'Apr' THEN '04' WHEN 'May' THEN '05' WHEN 'Jun' THEN '06'
	WHEN 'Jul' THEN '07' WHEN 'Aug' THEN '08' WHEN 'Sep' THEN '09' WHEN 'Oct' THEN '10' WHEN 'Nov' THEN '11'
	ELSE '12' END || '-' || SUBSTR(DATE_NK,1,2) || ' ' || SUBSTR(TIME_NK,1,8) ) AS EVENT_DT,
REQUEST_NK, DOMAIN
FROM STG_BIND9_LOG )
SELECT
  1 as 'Line: DNS Requests per Day for Hours',
  strftime('%H:00', datetime(EVENT_DT, 'unixepoch')) AS 'Day',
  ROUND(1.0*SUM(1)/COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))), 1) AS 'Requests per Day'
FROM CLS
WHERE DOMAIN NOT IN ('in-addr.arpa', 'IN-ADDR.ARPA', 'local', 'dyndns', 'nas', 'ntp.org')
  AND datetime(EVENT_DT, 'unixepoch') > date('now', '-20 days')
GROUP BY /* hour aggregate */
  strftime('%H:00', datetime(EVENT_DT, 'unixepoch'))
ORDER BY strftime('%H:00', datetime(EVENT_DT, 'unixepoch'))

Τη νύχτα, η ασύρματη πρόσβαση είναι απενεργοποιημένη και αναμένεται δραστηριότητα της συσκευής, π.χ. δεν υπάρχει δημοσκόπηση για άγνωστους τομείς. Αυτό σημαίνει ότι η μεγαλύτερη δραστηριότητα προέρχεται από συσκευές με λειτουργικά συστήματα όπως Android, iOS και Blackberry OS.

Ας παραθέσουμε τους τομείς που ελέγχονται εντατικά. Η ένταση θα καθοριστεί από παραμέτρους όπως ο αριθμός των αιτημάτων ανά ημέρα, ο αριθμός των ημερών δραστηριότητας και σε πόσες ώρες της ημέρας έγιναν αντιληπτοί.

Όλοι οι αναμενόμενοι ύποπτοι ήταν στη λίστα.

Τομείς με έντονη δημοσκόπηση

Πώς λειτουργεί το οικιακό Διαδίκτυο και τα στατιστικά στοιχεία διακομιστή ονομάτων τομέα;

Ερώτημα αναφοράς SQL

WITH CLS AS ( /* prepare unique requests */
SELECT
DISTINCT DATE_NK,
STRFTIME( '%s', SUBSTR(DATE_NK,8,4) || '-' ||
	CASE SUBSTR(DATE_NK,4,3)
	WHEN 'Jan' THEN '01' WHEN 'Feb' THEN '02' WHEN 'Mar' THEN '03' WHEN 'Apr' THEN '04' WHEN 'May' THEN '05' WHEN 'Jun' THEN '06'
	WHEN 'Jul' THEN '07' WHEN 'Aug' THEN '08' WHEN 'Sep' THEN '09' WHEN 'Oct' THEN '10' WHEN 'Nov' THEN '11'
	ELSE '12' END || '-' || SUBSTR(DATE_NK,1,2) || ' ' || SUBSTR(TIME_NK,1,8) ) AS EVENT_DT,
REQUEST_NK, DOMAIN
FROM STG_BIND9_LOG )
SELECT 
  1 as 'Table: Havy DNS Requests',
  REQUEST_NK AS 'Request',
  DOMAIN AS 'Domain',
  REQ AS 'Requests per Day',
  DH AS 'Hours per Day',
  DAYS AS 'Active Days'
FROM (
SELECT
  REQUEST_NK, MAX(DOMAIN) AS DOMAIN,
  COUNT(DISTINCT REQUEST_NK) AS SUBD,
  COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))) AS DAYS,
  ROUND(1.0*SUM(1)/COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))), 1) AS REQ,
  ROUND(1.0*COUNT(DISTINCT strftime('%d.%m %H', datetime(EVENT_DT, 'unixepoch')))/COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))), 1) AS DH
FROM CLS
WHERE DOMAIN NOT IN ('in-addr.arpa', 'IN-ADDR.ARPA', 'local', 'dyndns', 'nas', 'ntp.org')
  AND datetime(EVENT_DT, 'unixepoch') > date('now', '-20 days')
GROUP BY REQUEST_NK )
WHERE DAYS > 9 -- long period
ORDER BY 4 DESC, 5 DESC
LIMIT 20

Αποκλείουμε τις isс.blackberry.com και iceberg.blackberry.com, τις οποίες ο κατασκευαστής θα δικαιολογήσει για λόγους ασφαλείας. Αποτέλεσμα: όταν προσπαθείτε να συνδεθείτε στο WLAN, εμφανίζεται η σελίδα σύνδεσης και δεν συνδέεται ποτέ ξανά πουθενά. Ας το ξεμπλοκάρουμε.

Το detectportal.firefox.com είναι ο ίδιος μηχανισμός, που εφαρμόζεται μόνο στο πρόγραμμα περιήγησης Firefox. Εάν πρέπει να συνδεθείτε στο δίκτυο WLAN, θα εμφανιστεί πρώτα η σελίδα σύνδεσης. Δεν είναι απολύτως σαφές γιατί η διεύθυνση πρέπει να πληκτρολογείται τόσο συχνά, αλλά ο μηχανισμός περιγράφεται ξεκάθαρα από τον κατασκευαστή.

skype. Οι ενέργειες αυτού του προγράμματος είναι παρόμοιες με ένα σκουλήκι: κρύβεται και δεν επιτρέπει απλώς να σκοτωθεί στη γραμμή εργασιών, δημιουργεί πολλή κίνηση στο δίκτυο, κάνει ping σε 10 τομείς κάθε 4 λεπτά. Κατά την πραγματοποίηση βιντεοκλήσης, η σύνδεση στο Διαδίκτυο διακόπτεται συνεχώς, όταν δεν μπορεί να είναι καλύτερη. Προς το παρόν είναι απαραίτητο, άρα παραμένει.

upload.fp.measure.office.com - αναφέρεται στο Office 365, δεν μπόρεσα να βρω μια αξιοπρεπή περιγραφή.
browser.pipe.aria.microsoft.com - Δεν μπόρεσα να βρω μια αξιοπρεπή περιγραφή.
Μπλοκάρουμε και τα δύο.

connect.facebook.net - εφαρμογή συνομιλίας Facebook. Λείψανα.

mediator.mail.ru Μια ανάλυση όλων των αιτημάτων για τον τομέα mail.ru έδειξε την παρουσία ενός τεράστιου αριθμού διαφημιστικών πόρων και συλλεκτών στατιστικών στοιχείων, γεγονός που προκαλεί δυσπιστία. Ο τομέας mail.ru αποστέλλεται εξ ολοκλήρου στη μαύρη λίστα.

google-analytics.com - δεν επηρεάζει τη λειτουργικότητα των συσκευών, επομένως την αποκλείουμε.
doubleclick.net - μετράει διαφημιστικά κλικ. Μπλοκάρουμε.

Πολλά αιτήματα πηγαίνουν στο googleapis.com. Το μπλοκάρισμα οδήγησε στο χαρούμενο κλείσιμο σύντομων μηνυμάτων στο tablet, τα οποία μου φαίνονται ανόητα. Αλλά το playstore σταμάτησε να λειτουργεί, οπότε ας το ξεμπλοκάρουμε.

cloudflare.com - γράφουν ότι τους αρέσει ο ανοιχτός κώδικας και, γενικά, γράφουν πολλά για τον εαυτό τους. Η ένταση της έρευνας τομέα δεν είναι απολύτως σαφής, η οποία είναι συχνά πολύ μεγαλύτερη από την πραγματική δραστηριότητα στο Διαδίκτυο. Ας το αφήσουμε προς το παρόν.

Έτσι, η ένταση των αιτημάτων συχνά σχετίζεται με την απαιτούμενη λειτουργικότητα των συσκευών. Ανακαλύφθηκαν όμως και όσοι το παράκαναν με τη δραστηριότητα.

Το πρώτο κιόλας

Όταν το ασύρματο Διαδίκτυο είναι ενεργοποιημένο, όλοι εξακολουθούν να κοιμούνται και είναι δυνατό να δείτε ποια αιτήματα αποστέλλονται πρώτα στο δίκτυο. Έτσι, στις 6:50 ανοίγει το Διαδίκτυο και στο πρώτο δεκάλεπτο μετρώνται καθημερινά 60 domains:

Πώς λειτουργεί το οικιακό Διαδίκτυο και τα στατιστικά στοιχεία διακομιστή ονομάτων τομέα;

Ερώτημα αναφοράς SQL

WITH CLS AS ( /* prepare unique requests */
SELECT
DISTINCT DATE_NK,
STRFTIME( '%s', SUBSTR(DATE_NK,8,4) || '-' ||
	CASE SUBSTR(DATE_NK,4,3)
	WHEN 'Jan' THEN '01' WHEN 'Feb' THEN '02' WHEN 'Mar' THEN '03' WHEN 'Apr' THEN '04' WHEN 'May' THEN '05' WHEN 'Jun' THEN '06'
	WHEN 'Jul' THEN '07' WHEN 'Aug' THEN '08' WHEN 'Sep' THEN '09' WHEN 'Oct' THEN '10' WHEN 'Nov' THEN '11'
	ELSE '12' END || '-' || SUBSTR(DATE_NK,1,2) || ' ' || SUBSTR(TIME_NK,1,8) ) AS EVENT_DT,
REQUEST_NK, DOMAIN
FROM STG_BIND9_LOG )
SELECT
  1 as 'Table: First DNS Requests at 06:00',
  REQUEST_NK AS 'Request',
  DOMAIN AS 'Domain',
  REQ AS 'Requests',
  DAYS AS 'Active Days',
  strftime('%H:%M', datetime(MIN_DT, 'unixepoch')) AS 'First Ping',
  strftime('%H:%M', datetime(MAX_DT, 'unixepoch')) AS 'Last Ping'
FROM (
SELECT
  REQUEST_NK, MAX(DOMAIN) AS DOMAIN,
  MIN(EVENT_DT) AS MIN_DT,
  MAX(EVENT_DT) AS MAX_DT,
  COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))) AS DAYS,
  ROUND(1.0*SUM(1)/COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))), 1) AS REQ
FROM CLS
WHERE DOMAIN NOT IN ('in-addr.arpa', 'IN-ADDR.ARPA', 'local', 'dyndns', 'nas', 'ntp.org')
  AND datetime(EVENT_DT, 'unixepoch') > date('now', '-20 days')
  AND strftime('%H', datetime(EVENT_DT, 'unixepoch')) = strftime('%H', '2019-08-01 06:50:00')
GROUP BY REQUEST_NK
 )
WHERE DAYS > 3 -- at least 4 days activity
ORDER BY 5 DESC, 4 DESC

Ο Firefox ελέγχει τη σύνδεση WLAN για την παρουσία μιας σελίδας σύνδεσης.
Η Citrix κάνει ping στον διακομιστή της παρόλο που η εφαρμογή δεν εκτελείται ενεργά.
Η Symantec επαληθεύει τα πιστοποιητικά.
Το Mozilla ελέγχει για ενημερώσεις, αν και στις ρυθμίσεις ζήτησα να μην το κάνω.

Το mmo.de είναι μια υπηρεσία τυχερών παιχνιδιών. Πιθανότατα το αίτημα ξεκινά από τη συνομιλία στο facebook. Μπλοκάρουμε.

Η Apple θα ενεργοποιήσει όλες τις υπηρεσίες της. api-glb-fra.smoot.apple.com - κρίνοντας από την περιγραφή, κάθε κλικ κουμπιού αποστέλλεται εδώ για λόγους βελτιστοποίησης μηχανών αναζήτησης. Πολύ ύποπτο, αλλά σχετίζεται με τη λειτουργικότητα. Το αφήνουμε.

Ακολουθεί μια μακρά λίστα αιτημάτων προς τη microsoft.com. Αποκλείουμε όλους τους τομείς ξεκινώντας από το τρίτο επίπεδο.

Αριθμός των πρώτων υποτομέων
Πώς λειτουργεί το οικιακό Διαδίκτυο και τα στατιστικά στοιχεία διακομιστή ονομάτων τομέα;

Έτσι, τα πρώτα 10 λεπτά από την ενεργοποίηση του ασύρματου Διαδικτύου.
Το iOS συγκεντρώνει τους περισσότερους υποτομείς - 32. Ακολουθεί το Android - 24, μετά τα Windows - 15 και τέλος το Blackberry - 9.
Μόνο η εφαρμογή του facebook ψηφίζει 10 τομείς, το skype ψηφίζει 9 τομείς.

Η πηγή πληροφοριών

Η πηγή για την ανάλυση ήταν το αρχείο καταγραφής του τοπικού διακομιστή bind9, το οποίο περιέχει την ακόλουθη μορφή:

01-Aug-2019 20:03:30.996 client 192.168.0.2#40693 (api.aps.skype.com): query: api.aps.skype.com IN A + (192.168.0.102)

Το αρχείο εισήχθη σε μια βάση δεδομένων sqlite και αναλύθηκε χρησιμοποιώντας ερωτήματα SQL.
Ο διακομιστής λειτουργεί ως κρυφή μνήμη· τα αιτήματα προέρχονται από το δρομολογητή, επομένως υπάρχει πάντα ένα αίτημα πελάτη. Αρκεί μια απλοποιημένη δομή πίνακα, δηλ. Η αναφορά απαιτεί την ώρα του αιτήματος, το ίδιο το αίτημα και τον τομέα δεύτερου επιπέδου για ομαδοποίηση.

πίνακες DDL

CREATE TABLE STG_BIND9_LOG (
  LINE_NK       INTEGER NOT NULL DEFAULT 1,
  DATE_NK       TEXT NOT NULL DEFAULT 'n.a.',
  TIME_NK       TEXT NOT NULL DEFAULT 'n.a.',
  CLI           TEXT, -- client
  IP            TEXT,
  REQUEST_NK    TEXT NOT NULL DEFAULT 'n.a.', -- requested domain
  DOMAIN        TEXT NOT NULL DEFAULT 'n.a.', -- domain second level
  QUERY         TEXT,
  UNIQUE (LINE_NK, DATE_NK, TIME_NK, REQUEST_NK)
);

Παραγωγή

Έτσι, ως αποτέλεσμα της ανάλυσης του αρχείου καταγραφής διακομιστή ονομάτων τομέα, περισσότερες από 50 εγγραφές λογοκρίθηκαν και τοποθετήθηκαν στη λίστα μπλοκ.

Η αναγκαιότητα ορισμένων ερωτημάτων περιγράφεται καλά από τους κατασκευαστές λογισμικού και εμπνέει εμπιστοσύνη. Ωστόσο, μεγάλο μέρος της δραστηριότητας είναι αβάσιμο και αμφισβητήσιμο.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο