Kuidas elab kodune Internet ja domeeninimeserveri statistika?

Koduruuter (antud juhul FritzBox) suudab salvestada palju: kui palju liiklust millal toimub, kes millise kiirusega on ühendatud jne. Kohalikus võrgus asuv domeeninimeserver (DNS) aitas mul välja selgitada, mis on tundmatute adressaatide taga peidus.

Üldiselt on DNS-il olnud koduvõrgule positiivne mõju: see on lisanud kiirust, stabiilsust ja juhitavust.

Allpool on diagramm, mis tekitas küsimusi ja vajadust mõista, mis toimub. Tulemused filtreerivad juba välja teadaolevad ja töötavad päringud domeeninimeserveritele.

Miks küsitletakse iga päev 60 ebaselget domeeni, kui kõik veel magavad?

Iga päev küsitletakse aktiivsetel tundidel 440 tundmatut domeeni. Kes nad on ja millega nad tegelevad?

Keskmine taotluste arv päevas tundide kaupa

Kuidas elab kodune Internet ja domeeninimeserveri statistika?

SQL aruande päring

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'))

Öösel on juhtmevaba juurdepääs keelatud ja oodata on seadme tegevust, s.t. tundmatute domeenide küsitlust ei toimu. See tähendab, et suurimat aktiivsust pakuvad sellised operatsioonisüsteemidega seadmed nagu Android, iOS ja Blackberry OS.

Loetleme domeenid, mida intensiivselt küsitletakse. Intensiivsuse määravad sellised parameetrid nagu taotluste arv päevas, tegevuspäevade arv ja mitu tundi päevas neid märgati.

Kõik eeldatavad kahtlusalused olid nimekirjas.

Intensiivselt küsitletud domeenid

Kuidas elab kodune Internet ja domeeninimeserveri statistika?

SQL aruande päring

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

Blokeerime saidid isс.blackberry.com ja iceberg.blackberry.com, mida tootja turvakaalutlustel põhjendab. Tulemus: kui proovite WLAN-iga ühendust luua, näitab see sisselogimislehte ja ei loo enam kunagi ühendust. Deblokeerime selle.

detectportal.firefox.com on sama mehhanism, mis on rakendatud ainult Firefoxi brauseris. Kui peate WLAN-võrku sisse logima, kuvatakse esmalt sisselogimisleht. Pole päris selge, miks aadressi nii sageli pingestada, kuid tootja on mehhanismi selgelt kirjeldanud.

skype. Selle programmi toimingud on sarnased ussiga: see peidab ennast ega lase end tegumiribal lihtsalt tappa, tekitab võrgus palju liiklust, pingib 10 domeeni iga 4 minuti järel. Videokõne tegemisel katkeb internetiühendus pidevalt, kui parem olla ei saa. Praegu on see vajalik, nii et see jääb.

upload.fp.measure.office.com – viitab Office 365-le, ma ei leidnud korralikku kirjeldust.
browser.pipe.aria.microsoft.com – ma ei leidnud korralikku kirjeldust.
Blokeerime mõlemad.

connect.facebook.net – Facebooki vestlusrakendus. Jäänused.

mediator.mail.ru Domeeni mail.ru kõigi taotluste analüüs näitas tohutul hulgal reklaamiressursse ja statistikakogujaid, mis põhjustab umbusaldust. Domeen mail.ru saadetakse täielikult musta nimekirja.

google-analytics.com – ei mõjuta seadmete funktsionaalsust, seega blokeerime selle.
doubleclick.net – loeb reklaamiklikke. Me blokeerime.

Paljud päringud lähevad saidile googleapis.com. Blokeerimine on viinud tahvelarvutis lühisõnumite rõõmsa väljalülitamiseni, mis mulle rumal tunduvad. Kuid mängupood lakkas töötamast, nii et deblokeerime selle.

cloudflare.com - nad kirjutavad, et armastavad avatud lähtekoodi ja üldiselt kirjutavad endast palju. Domeeniküsitluse intensiivsus pole päris selge, mis on sageli palju suurem tegelikust aktiivsusest Internetis. Jätame selle praegu.

Seega on päringute intensiivsus sageli seotud seadmete vajaliku funktsionaalsusega. Aga avastati ka neid, kes aktiivsusega üle pingutasid.

Kõige esimene

Kui traadita internet on sisse lülitatud, siis kõik magavad veel ja on võimalik vaadata, millised päringud esimesena võrku saadetakse. Niisiis, kell 6:50 lülitub Internet sisse ja esimese kümne minuti jooksul küsitletakse iga päev 60 domeeni:

Kuidas elab kodune Internet ja domeeninimeserveri statistika?

SQL aruande päring

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 kontrollib WLAN-ühendust sisselogimislehe olemasolu suhtes.
Citrix pingib oma serverit, kuigi rakendus ei tööta aktiivselt.
Symantec kontrollib sertifikaate.
Mozilla kontrollib värskendusi, kuigi seadetes palusin seda mitte teha.

mmo.de on mänguteenus. Tõenäoliselt on päringu algatanud Facebooki vestlus. Me blokeerime.

Apple aktiveerib kõik oma teenused. api-glb-fra.smoot.apple.com – kirjelduse järgi otsustades saadetakse iga nupuklõps siia otsingumootori optimeerimise eesmärgil. Väga kahtlane, kuid funktsionaalsusega seotud. Jätame selle.

Järgnev on pikk loend taotlustest saidile microsoft.com. Blokeerime kõik domeenid alates kolmandast tasemest.

Kõige esimeste alamdomeenide arv
Kuidas elab kodune Internet ja domeeninimeserveri statistika?

Niisiis, esimesed 10 minutit traadita Interneti sisselülitamisest.
iOS küsitleb kõige rohkem alamdomeene – 32. Järgneb Android – 24, siis Windows – 15 ja viimasena Blackberry – 9.
Ainuüksi Facebooki rakendus küsitleb 10 domeeni, skype küsitleb 9 domeeni.

Teabe allikas

Analüüsi allikaks oli bind9 kohaliku serveri logifail, mis sisaldab järgmist vormingut:

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)

Fail imporditi sqlite andmebaasi ja analüüsiti SQL päringute abil.
Server toimib vahemäluna; päringud tulevad ruuterilt, seega on alati üks päringuklient. Piisab lihtsustatud tabelistruktuurist, s.t. Aruanne nõuab rühmitamiseks päringu aega, päringut ennast ja teise taseme domeeni.

DDL tabelid

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)
);

Väljund

Seega tsenseeriti domeeninimeserveri logi analüüsi tulemusena üle 50 kirje, mis pandi blokeerimisnimekirja.

Mõnede päringute vajalikkust kirjeldavad tarkvaratootjad hästi ja see äratab usaldust. Suur osa tegevusest on aga alusetu ja küsitav.

Allikas: www.habr.com

Lisa kommentaar