Ochráňte si sieť pred škodlivými stránkami

Internet je nebezpečné miesto. A často aj veľmi kontroverzné, minimálne ako nasledujúci článok. Dnes budem popisovať trochu kontroverzný spôsob, ako si svoju sieť ochrániť pred škodlivými stránkami zmenou DNS odpovedí na tieto stránky.

Tento článok nemá za úlohu rozoberať morálne princípy sieťovej neutrality. Ukazje len, ako sa niečo dá docieliť za použitia trochu Linuxových skúseností. Kto chce, môže tento návod použiť a ďalej rozvíjať, kto nie, môže ho klľudne ignorovať.

Situácia je nasledovná. Majme sieť, ktorá používa naše rekurzívne DNS v našej správe. Či už je klientom DNS server prideľovaný cez DHCP alebo ho majú klienti nastavený pevne, nechávam na fantázii čitateľa. Za predpokladu, že ako DNS server používame Bind (Named, či ako sa to vlastne volá) na platforme Linux, vieme ovplyvniť odpovede, ktoré klienti dostanú pri dotazovaní sa to-ktoré doménové meno.

Využijeme pri tom projekt DNS-BH Malware Domain Blocklist. Ten zbiera informácie o podozrivých stránkach a pravidelne aktualizuje vo formáte pre Bind a Microsoft DNS Server. Najprv si však vytvoríme zónový súbor pre takéto domény. Ja osobne používam nasledovný uložený v /etc/bind/db.block.

$TTL    86400   ; one day
@       IN      SOA     ns1.example.com. admin.example.com. (
                        2013050201       ; serial number YYMMDDNN
                        28800   ; refresh  8 hours
                        7200    ; retry    2 hours
                        864000  ; expire  10 days
                        86400 ) ; min ttl  1 day
                NS      ns1.example.com.

                A       127.0.0.1
                AAAA    ::1

*       IN      A       127.0.0.1
*       IN      AAAA    ::1

Samozrejme, informácie v zónovom súbore si môžete upraviť podľa ľubovôle.

Zoznam domén vo forme konfiguračného súboru pre Bind stiahneme z mirroru DNS-BH. Takto poskytovaný konfigurák má jednu nevýhodu a síce cestu k zónovému súboru. Preto si vytvoríme skript na stiahnutie a aktualizáciu konfigurácie, ktorý budeme periodicky spúšťať cronom trebárs v noci.

#!/bin/bash

wget -O /etc/bind/named.conf.block http://mirror1.malwaredomains.com/files/spywaredomains.zones
sed -i 's/\/etc\/namedb\/blockeddomain.hosts/\/etc\/bind\/db.block/' /etc/bind/named.conf.block
awk '{ if($0 !~ /^\/\//) { for(i=1;i< =NF;i++){ if($i ~ /zone/){ print " "$(i+1)" "; } } } }' /etc/bind/named.conf.block | tr -d "\"" > /etc/bind/blockeddomains.txt
/usr/sbin/rndc reload

Na koniec súboru /etc/bind/named.conf pridáme nasledujúci riadok

include "/etc/bind/named.conf.block";

a spustíme skript. Tým sa stiahne nový zoznam domén, preparsuje sa do formátu pre naše použitie a znova sa načíta konfigurácia Bindu. Celú funkcionalitu si môžeme otestovať napríklad dig-om. V tomto prípade je 172.17.110.7 IP adresa DNS servera.

lukas@adminstation ~ $ dig @172.17.110.7 yunaks.ru

; < <>> DiG 9.9.2-P2 < <>> @172.17.110.7 yunaks.ru
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 38186
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;yunaks.ru.			IN	A

;; ANSWER SECTION:
yunaks.ru.		86400	IN	A	127.0.0.1

;; AUTHORITY SECTION:
yunaks.ru.		86400	IN	NS	ns1.example.com

;; ADDITIONAL SECTION:
ns1.example.com.	3600	IN	A	172.17.110.7

;; Query time: 0 msec
;; SERVER: 172.17.110.7#53(172.17.110.7)
;; WHEN: Tue Nov 12 22:43:57 2013
;; MSG SIZE  rcvd: 145

Pozorný čitateľ si isto všimol, že po update zoznamu blokovaných domén nám pribudol ešte jeden súbor - blockeddomains.txt. Je to zoznam samotných blokovaných domén, ktorý môžeme použiť na vytváranie štatistík o tom, ktorí klienti sa dotazujú na tieto domény. Ak máme zapnutý query logging do súboru /var/cache/bind/bind9-query.log, nie je nič jednoduchšie.

lukas@adminstation ~ $ fgrep -f /etc/bind/blockeddomains.txt /var/cache/bind/bind9-query.log
12-Nov-2013 21:41:53.851 client 1.2.3.4#53859: query: i.txtsrving.info IN A +
12-Nov-2013 21:41:54.084 client 1.2.3.4#51561: query: i.txtsrving.info IN A +
12-Nov-2013 21:42:15.117 client 1.2.3.4#48011: query: www.dhgate.com IN A +
12-Nov-2013 21:42:15.139 client 1.2.3.4#60612: query: www.dhgate.com IN AAAA +
...

Spracovávanie štatistík už nechám na vás 🙂

Verím, že dnešný článok bol prínosný a či už niečo z toho niekto niečo použije v praxi ostáva na vás.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *