Jak funguje domácí internet a statistiky serverů doménových jmen?

Domácí router (v tomto případě FritzBox) dokáže zaznamenat hodně: kolik provozu jde, kdy, kdo je připojen jakou rychlostí atd. Server doménových jmen (DNS) v místní síti mi pomohl zjistit, co se skrývá za neznámými příjemci.

Celkově měl DNS pozitivní dopad na domácí síť: přidal rychlost, stabilitu a ovladatelnost.

Níže je schéma, které vyvolalo otázky a potřebu porozumět tomu, co se stalo. Výsledky již odfiltrují známé a fungující požadavky na servery doménových jmen.

Proč se každý den dotazuje na 60 neznámých domén, zatímco všichni ještě spí?

Každý den je během aktivních hodin dotazováno 440 neznámých domén. Kdo jsou a co dělají?

Průměrný počet požadavků za den po hodině

Jak funguje domácí internet a statistiky serverů doménových jmen?

SQL dotaz na sestavu

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

V noci je bezdrátový přístup zakázán a očekává se aktivita zařízení, tzn. neprobíhá dotazování na neznámé domény. To znamená, že největší aktivitu mají zařízení s operačními systémy, jako je Android, iOS a Blackberry OS.

Uveďme si domény, které jsou intenzivně dotazovány. Intenzita bude určena parametry, jako je počet požadavků za den, počet dní aktivity a v kolika hodinách dne byly zaznamenány.

Na seznamu byli všichni očekávaní podezřelí.

Intenzivně dotazované domény

Jak funguje domácí internet a statistiky serverů doménových jmen?

SQL dotaz na sestavu

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

Blokujeme isс.blackberry.com a iceberg.blackberry.com, což výrobce zdůvodní bezpečnostními důvody. Výsledek: při pokusu o připojení k WLAN se zobrazí přihlašovací stránka a už se nikdy nikam nepřipojí. Pojďme to odblokovat.

detectportal.firefox.com je stejný mechanismus, implementovaný pouze v prohlížeči Firefox. Pokud se potřebujete přihlásit do sítě WLAN, zobrazí se nejprve přihlašovací stránka. Není zcela jasné, proč by adresa měla být tak často pingována, ale mechanismus je jasně popsán výrobcem.

skype. Akce tohoto programu jsou podobné červu: skrývá se a nenechá se jednoduše zabít na hlavním panelu, generuje velký provoz v síti, každých 10 minut pingne 4 domény. Při videohovoru neustále padá internetové připojení, když už to nemůže být lepší. Zatím je to nutné, tak to zůstává.

upload.fp.measure.office.com – odkazuje na Office 365, nenašel jsem slušný popis.
browser.pipe.aria.microsoft.com - nenašel jsem slušný popis.
Blokujeme oba.

connect.facebook.net - Facebook chatovací aplikace. Zůstává.

mediator.mail.ru Analýza všech požadavků na doménu mail.ru ukázala přítomnost velkého množství reklamních zdrojů a sběratelů statistik, což vyvolává nedůvěru. Doména mail.ru je celá odeslána na černou listinu.

google-analytics.com – nemá vliv na funkčnost zařízení, proto jej blokujeme.
doubleclick.net – počítá kliknutí na reklamu. Blokujeme.

Mnoho požadavků směřuje na googleapis.com. Blokování vedlo k radostnému vypínání krátkých zpráv na tabletu, které mi přijdou hloupé. Playstore ale přestal fungovat, tak ho pojďme odblokovat.

cloudflare.com - píšou, že milují open source a obecně o sobě hodně píší. Není zcela jasná intenzita doménového průzkumu, která je často mnohem vyšší než samotná aktivita na internetu. Nechme toho zatím.

Intenzita požadavků tedy často souvisí s požadovanou funkčností zařízení. Objevili se ale i ti, kteří to s aktivitou přehnali.

Úplně první

Když je bezdrátový internet zapnutý, všichni ještě spí a je vidět, které požadavky jsou do sítě odeslány jako první. Takže v 6:50 se zapne internet a během prvních deseti minut se denně dotazuje 60 domén:

Jak funguje domácí internet a statistiky serverů doménových jmen?

SQL dotaz na sestavu

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 kontroluje připojení WLAN na přítomnost přihlašovací stránky.
Citrix pinguje svůj server, i když aplikace aktivně neběží.
Symantec ověřuje certifikáty.
Mozilla kontroluje aktualizace, i když jsem v nastavení požádal, abych to nedělal.

mmo.de je herní služba. S největší pravděpodobností je požadavek iniciován facebookovým chatem. Blokujeme.

Apple aktivuje všechny své služby. api-glb-fra.smoot.apple.com - soudě podle popisu, každé kliknutí na tlačítko je odesláno sem pro účely optimalizace pro vyhledávače. Velmi podezřelé, ale souvisí s funkčností. Necháme toho.

Následuje dlouhý seznam požadavků na microsoft.com. Blokujeme všechny domény počínaje třetí úrovní.

Počet úplně prvních subdomén
Jak funguje domácí internet a statistiky serverů doménových jmen?

Takže prvních 10 minut po zapnutí bezdrátového internetu.
Nejvíce subdomén volí iOS – 32. Následuje Android – 24, dále Windows – 15 a jako poslední Blackberry – 9.
Samotná aplikace facebook dotazuje 10 domén, skype dotazuje 9 domén.

Zdroj informací

Zdrojem pro analýzu byl soubor protokolu místního serveru bind9, který obsahuje následující formát:

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)

Soubor byl importován do databáze sqlite a analyzován pomocí SQL dotazů.
Server funguje jako mezipaměť, požadavky přicházejí z routeru, takže vždy existuje jeden klient požadavku. Stačí zjednodušená struktura tabulky, tzn. Sestava vyžaduje čas požadavku, samotný požadavek a doménu druhé úrovně pro seskupení.

DDL tabulky

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ýkon

Výsledkem analýzy protokolu serveru doménových jmen bylo tedy cenzurování více než 50 záznamů, které byly umístěny na seznam blokování.

Nutnost některých dotazů je dobře popsána výrobci softwaru a vzbuzuje důvěru. Velká část aktivit je však nepodložená a diskutabilní.

Zdroj: www.habr.com

Přidat komentář