Чым жыве хатні інтэрнэт і статыстыка сервера даменных імёнаў

Хатні роўтар (у дадзеным выпадку 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

Блакуем iсс.blackberry.com і iceberg.blackberry.com, якія вытворца абгрунтуе меркаваннямі бяспекі. Вынік: пры спробе падключэння да WLAN, паказвае старонку лагіна і больш ніколі нікуды не падключаецца. Разблакуем.

detectportal.firefox.com - гэта такі ж механізм, толькі рэалізаваны ў браўзэры Firefox. У выпадку неабходнасці лагініцца ў сетку WLAN, пакажа спачатку старонку лагіна. Не зусім зразумела, навошта так часта пінгаваць адрас, але механізм даступна апісаны ў вытворцы.

skype. Дзеянні гэтай праграмы падобныя на чарвяка: хаваецца і не дае проста сябе забіць у панелі задач, у сетцы генеруе шмат трафіку, кожныя 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. Блакаванне прывяло да радаснага адключэння кароткіх паведамленняў у планшэце, якія мне здаюцца дурацкімі. Але перастаў працаваць playstore, таму разблакуем.

cloudflare.com - пішуць, што любяць адкрыты код і, наогул, шмат пра сябе пішуць. Не зусім зразумелая інтэнсіўнасць апытання дамена, якая часта моцна вышэй самай актыўнасці ў інтэрнэце. Пакуль пакінем.

Такім чынам, інтэнсіўнасць запытаў часта злучана з неабходнай функцыянальнасцю прылад. Але былі знойдзены і тыя, хто перастараўся з актыўнасцю.

Самыя першыя

У момант уключэння бесправаднога інтэрнэту ўсё яшчэ спяць і ёсць магчымасць убачыць, якія запыты першымі адпраўляюцца ў сетку. Такім чынам, у 6:50 уключаецца інтэрнэт і ў першы дзесяціхвілінны прамежак часу штодня апытваюцца 60 даменаў.

Чым жыве хатні інтэрнэт і статыстыка сервера даменных імёнаў

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 пінгуе свой сервер, хоць прыкладанне актыўна не запушчана.
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 запісаў былі падвергнуты цэнзуры і змешчаныя ў спіс для блакавання.

Неабходнасць некаторых запытаў добра апісана вытворцамі праграмнага забеспячэння і выклікае давер. Аднак, большая частка актыўнасці неабгрунтаваная і выклікае сумнеў.

Крыніца: habr.com

Дадаць каментар