Ads blocken met je eigen DNS server

Door Tomba op dinsdag 16 juli 2013 09:37 - Reacties (39)
CategorieŰn: Linux, Systeembeheer, Views: 4.996

Na wederom een nu.nl adserver hack was ik het eigenlijk wel zat, ik heb direct een adblocker geinstalleerd. Toch viel het mij op dat er nog regelmatig wat doorkwam en op bv mijn Surface bleven ads binnen komen. Dat moet beter kunnen!

Enter Bind! Bind is een DNS server die op o.a. Linux draait en aangezien ik al een Ubuntu machine heb draaien met daarop een DNS server (tbv interne resolving) vond ik het een mooie uitdaging om de adservers al bij de DNS server te blocken mbv de Ad hostfile van http://msmvps.com/blogs/hostsnews/default.aspx.

In deze instructie ga ik er vanuit dat je al een werkende BIND DNS server hebt draaien, die valt dus buiten scope.

Stap 1.
Ga naar http://winhelp2002.mvps.org/hosts.txt en kopieer alle data
http://tweakers.net/ext/f/cMpa63Wu1nQIWxTss70Vz1YU/full.png
Stap 2.
ga naar http://pgl.yoyo.org/as/hosts2bind.php en plak hier de hosts file uit stap 1 in om hem om te zetten naar Bind formaat. Haal wel even alles t/m # [Misc A-Z] weg!
http://tweakers.net/ext/f/HkoVQuISdUVpFGAD8oAcqkkV/full.png
Stap 3.
Kopieer het resultaat en plak deze in notepad
http://tweakers.net/ext/f/PRefQqYSvULlpmBMMBz2V6iZ/full.png
Stap 4.
Search and Replace (CTRL-H) { type door IN { type (anders accepteert Bind de gegevens niet)
http://tweakers.net/ext/f/ktLnnBWjj1CYLIe3MGZjOxto/full.png
En haal de localhost entry weg
http://tweakers.net/ext/f/xZPPjC1we8MuLxRAauhoanV3/full.png
Stap 5.
Maak een zone file aan voor de Adservers (ik gebruik /etc/bind/adservers)
http://tweakers.net/ext/f/mcM6gMoVzuBYOzZFW4wp0di4/full.png
Stap 6.
Plak hier het resultaat van stap 4 in en sla het bestand op
http://tweakers.net/ext/f/SHKtabTeQYUTJ8VFQ5cTHnFm/full.png
Stap 7.
Pas /etc/bind/named.conf.local aan en include de file /etc/bind/adservers
http://tweakers.net/ext/f/W2jwXHSOcQos6MvOjVA3yngM/full.png
Stap 8.
Maak het bestand /etc/bind/null.zone.file aan en zet hier de volgende data in:
$TTL 86400 ; one day

@ IN SOA [servernaam.localdomain]. hostmaster.[localdomain]. (
2002061000 ; serial number YYMMDDNN
28800 ; refresh 8 hours
7200 ; retry 2 hours
864000 ; expire 10 days
86400 ) ; min ttl 1 day
NS [servernaam.localdomain]

A [IP Adres van je BINDserver]

@ IN A 127.0.0.1
* IN A 127.0.0.1
Voor [servernaam.localdomain] voer je de naam en het locale domein in van je bind server
http://tweakers.net/ext/f/VBDGGD7E0FFZs1u3zKEc4riY/full.png
http://tweakers.net/ext/f/Ltuk6kaS6gQQyjd50XaOV72s/full.png
Stap 9.
Herstart Bind mbv het commando 'service bind9 restart'
http://tweakers.net/ext/f/UQlloMdT3OlnzgtU8C7QT96W/full.png
Stap 10.
Test :)
http://tweakers.net/ext/f/sinZ5eNQ716oO0ftUaHZNbE2/full.png

En hoe ziet het er dan uit?
http://www.hemmy.net/2006...sements-around-the-world/ :
http://tweakers.net/ext/f/nMS8OotFTCIdRynb3Efudw9v/full.png
ipv
http://tweakers.net/ext/f/g3jle2w2HPPtTMBMlPdcuOqN/full.png

nu.nl:
http://tweakers.net/ext/f/Gz5LBgkeQasQssCBsMGzGPlo/full.png
ipv
http://tweakers.net/ext/f/WdU92zrF2swgr4zwR3quzfS9/full.png

[Update]
Inmiddels heb ik er een tweede post aan besteed: Tomba's Hideout: Ads blocken met je eigen DNS server (2)

Volgende: Spotweb omzetten van Master install naar Github 07-'13 Spotweb omzetten van Master install naar Github
Volgende: Restitutie van je app aankopen bij MS geen centje pijn :) 06-'13 Restitutie van je app aankopen bij MS geen centje pijn :)

Reacties


Door Tweakers user GrooV, dinsdag 16 juli 2013 10:14

Krijg je nu niet overal van die error's ipv divjes die mooi verborgen worden?

Door Tweakers user Tomba, dinsdag 16 juli 2013 10:27

GrooV schreef op dinsdag 16 juli 2013 @ 10:14:
Krijg je nu niet overal van die error's ipv divjes die mooi verborgen worden?
Zie de screenshots die ik toegevoegd heb. Ik merk er helemaal niets van verder, behalve dat de sites sneller laden :)

[Reactie gewijzigd op dinsdag 16 juli 2013 10:28]


Door Tweakers user mtak, dinsdag 16 juli 2013 10:33

Een nadeel van deze domeinen als zones definieren is dat je alle subdomeinen ook 'blokkeert'. Om alleen deze FQDN's te filteren zou je gebruik kunnen maken van http://jpmens.net/2011/04...esponse-policy-zones-rpz/

Door Tweakers user vanaalten, dinsdag 16 juli 2013 10:33

Goede blog!

Echter nu.nl laadt ondanks dit nog steeds traag... die devvers daar zouden eens een cursus van Tweakers-devs moeten krijgen.

Ga vanavond er nog eens naar kijken - zou zomaar kunnen dat de door jou gebruikte hosts-file uitgebreider is dan degene die ik ooit gevonden heb.

Door Tweakers user Tomba, dinsdag 16 juli 2013 10:35

mtak schreef op dinsdag 16 juli 2013 @ 10:33:
Een nadeel van deze domeinen als zones definieren is dat je alle subdomeinen ook 'blokkeert'. Om alleen deze FQDN's te filteren zou je gebruik kunnen maken van http://jpmens.net/2011/04...esponse-policy-zones-rpz/
Dat ziet er zeer interessant uit! Ik sluit niet uit dat er een vervolgblogje komt ;)
vanaalten schreef op dinsdag 16 juli 2013 @ 10:33:
Goede blog!

Echter nu.nl laadt ondanks dit nog steeds traag... die devvers daar zouden eens een cursus van Tweakers-devs moeten krijgen.

Ga vanavond er nog eens naar kijken - zou zomaar kunnen dat de door jou gebruikte hosts-file uitgebreider is dan degene die ik ooit gevonden heb.
nu.nl is gewoon een bagger site, maar wel de aanleiding voor deze post :)

[Reactie gewijzigd op dinsdag 16 juli 2013 10:36]


Door Tweakers user Mattie112, dinsdag 16 juli 2013 11:58

Nu nog een mooi scriptje om automatisch nieuwe hosts toe te voegen en het is helemaal compleet :)

Door Tweakers user Tomba, dinsdag 16 juli 2013 12:08

Mattie112 schreef op dinsdag 16 juli 2013 @ 11:58:
Nu nog een mooi scriptje om automatisch nieuwe hosts toe te voegen en het is helemaal compleet :)
Haha you read my mind ;)

Door Tweakers user Eagle Creek, dinsdag 16 juli 2013 13:33

Er zal hoe dan ook meer aandacht gaan komen voor meer gecentraliseerde ad- en virusblocking. Er zijn al routers die dit aanbieden (Sitecome heeft bv. HitmanPro ge´ntegreerd). Tegenwoordig hebben mensen zoveel en ook zoveel verschillende apparaten thuis staan dat endpointbescherming op zichzelf niet meer voldoende is.

Overigens geldt voor adblocking wel dat naarmate meer en meer mensen dit soort trucs gaan toepassen, de advertentienetwerken ook slimmer gaan worden. Bijvoorbeeld de adcontent serveren vanaf dezelfde site als de daadwerkelijke sitecontent. Geen ads = geen site.

Leuke blogpost! Ga hem ook zeker delen.

[Reactie gewijzigd op dinsdag 16 juli 2013 13:34]


Door Tweakers user magiel, dinsdag 16 juli 2013 13:59

Mocht je gebruik maken van 'dnsmasq' ipv bind9 is het volgende voldoende:
wget http://winhelp2002.mvps.org/hosts.txt -O /var/misc/hosts.txt


Wijzig rond regel 111 in /etc/dnsmasq.conf naar het volgende:
# If you don't want dnsmasq to read /etc/hosts, uncomment the
# following line.
#no-hosts
# or if you want it to read another file, as well as /etc/hosts, use
# this.
addn-hosts=/var/misc/hosts.txt


Dan nog dit:
/etc/init.d/dnsmasq restart

En:
asdf:~ asdf$ ping ad.a8.net
PING ad.a8.net (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.041 ms
^C
--- ad.a8.net ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.041/0.041/0.041/0.000 ms
asdf:~ asdf$

Door Tweakers user zkiwi, dinsdag 16 juli 2013 14:12

Het bovenstaande werkt dus ook op dd-wrt routers :D

Door Tweakers user magiel, dinsdag 16 juli 2013 14:29

zkiwi schreef op dinsdag 16 juli 2013 @ 14:12:
Het bovenstaande werkt dus ook op dd-wrt routers :D
Dat had ik nog niet eens bedacht, maar dat is zeker het geval :).

Let wel op dat je voldoende storage hebt, die hosts.txt is 555KB. Op m'n WRT54GL zat ik altijd daaronder qua vrije ruimte

Door Tweakers user Tomba, dinsdag 16 juli 2013 14:52

magiel schreef op dinsdag 16 juli 2013 @ 13:59:
Mocht je gebruik maken van 'dnsmasq' ipv bind9 is het volgende voldoende:
wget http://winhelp2002.mvps.org/hosts.txt -O /var/misc/hosts.txt


Wijzig rond regel 111 in /etc/dnsmasq.conf naar het volgende:
# If you don't want dnsmasq to read /etc/hosts, uncomment the
# following line.
#no-hosts
# or if you want it to read another file, as well as /etc/hosts, use
# this.
addn-hosts=/var/misc/hosts.txt


Dan nog dit:
/etc/init.d/dnsmasq restart

En:
asdf:~ asdf$ ping ad.a8.net
PING ad.a8.net (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.041 ms
^C
--- ad.a8.net ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.041/0.041/0.041/0.000 ms
asdf:~ asdf$
Das ook een nette oplossing zeg! Ga ik eens onderzoeken ;)

Door Tweakers user JossKp, dinsdag 16 juli 2013 17:35

Eagle Creek schreef op dinsdag 16 juli 2013 @ 13:33:
Er zal hoe dan ook meer aandacht gaan komen voor meer gecentraliseerde ad- en virusblocking. Er zijn al routers die dit aanbieden (Sitecome heeft bv. HitmanPro ge´ntegreerd). Tegenwoordig hebben mensen zoveel en ook zoveel verschillende apparaten thuis staan dat endpointbescherming op zichzelf niet meer voldoende is.

Overigens geldt voor adblocking wel dat naarmate meer en meer mensen dit soort trucs gaan toepassen, de advertentienetwerken ook slimmer gaan worden. Bijvoorbeeld de adcontent serveren vanaf dezelfde site als de daadwerkelijke sitecontent. Geen ads = geen site.

Leuke blogpost! Ga hem ook zeker delen.
Voor geinteresserde is Untangle een leuk alternatief (de Lite, gratis versie).

http://www.untangle.com/

[Reactie gewijzigd op dinsdag 16 juli 2013 17:35]


Door Tweakers user MvandeK, dinsdag 16 juli 2013 18:12

Handig! Ik wist niet dat er een hele lijst van advertentienetwerken beschikbaar was.

Omdat Ghostery niet alles pakt is dit een mooie aanvulling :)

Door Tweakers user Tomba, woensdag 17 juli 2013 09:14

MvandeK schreef op dinsdag 16 juli 2013 @ 18:12:
Handig! Ik wist niet dat er een hele lijst van advertentienetwerken beschikbaar was.

Omdat Ghostery niet alles pakt is dit een mooie aanvulling :)
Kwam er ook bij toeval achter naar aanleiding van het nu.nl debacle....

Door Tweakers user kubi55, woensdag 17 juli 2013 15:52

Hostsman is een mooi alternatief voor op windows als je niet uitgebreid met dns servers aan de haal wil gaan :) In combinatie met Ghostery hou je de meeste troep wel buiten deur.


http://www.abelhadigital.com/hostsman

[Reactie gewijzigd op woensdag 17 juli 2013 15:52]


Door Tweakers user Tomba, donderdag 18 juli 2013 07:43

kubi55 schreef op woensdag 17 juli 2013 @ 15:52:
Hostsman is een mooi alternatief voor op windows als je niet uitgebreid met dns servers aan de haal wil gaan :) In combinatie met Ghostery hou je de meeste troep wel buiten deur.


http://www.abelhadigital.com/hostsman
Het probleem is dan wel weer dat je het niet centraal regelt en het op bv je GSMs en tablets niet werkt :)

Door Tweakers user Z500, donderdag 18 juli 2013 10:29

Zou je zoiets ook op een NAS kunnen regelen ipv router?

[Reactie gewijzigd op donderdag 18 juli 2013 10:29]


Door Tweakers user Tomba, donderdag 18 juli 2013 11:29

Z500 schreef op donderdag 18 juli 2013 @ 10:29:
Zou je zoiets ook op een NAS kunnen regelen ipv router?
Als die Bind (of het in de replies aangehaalde dnsmasq) erop draait wel :)
Bij mij draait het ook niet op de router, maar op een aparte Ubuntu machine.

[Reactie gewijzigd op donderdag 18 juli 2013 13:47]


Door Tweakers user Z500, donderdag 18 juli 2013 12:09

Ik heb BIND op mijn netgear router ge´nstalleerd inderdaad. Nu nog uitvogelen hoe het juist te installeren. Thanks ;)

Door Tweakers user Tomba, donderdag 18 juli 2013 12:10

Z500 schreef op donderdag 18 juli 2013 @ 12:09:
Ik heb BIND op mijn netgear router ge´nstalleerd inderdaad. Nu nog uitvogelen hoe het juist te installeren. Thanks ;)
Als je bind op je netgear router hebt draaien hoef je alleen bovenstaande zaken uit te voeren, al kan je dan natuurlijk wel in de knoei komen met opslag. (de hosts file hierboven is ~500k )

Door Tweakers user Z500, donderdag 18 juli 2013 13:11

Sorry ik bedoel netgear NAS (readynas), ruimte genoeg dus.

Door Tweakers user iChaos, vrijdag 19 juli 2013 00:28

Heb de methode met dnsmasq gebruikt, werkt prima! :) Maar op sommige sites zie je de melding dat de pagina niet gevonden kon worden in de ad-frame. Wellicht een lighttpd draaien die iedere pagina of bestand dat geladen wordt redirect naar een lage HTML, zodat je ook van die meldingen af bent.

Door Tweakers user Tomba, vrijdag 19 juli 2013 07:58

iChaos schreef op vrijdag 19 juli 2013 @ 00:28:
Heb de methode met dnsmasq gebruikt, werkt prima! :) Maar op sommige sites zie je de melding dat de pagina niet gevonden kon worden in de ad-frame. Wellicht een lighttpd draaien die iedere pagina of bestand dat geladen wordt redirect naar een lage HTML, zodat je ook van die meldingen af bent.
Als je idd ergens een website hebt draaien en in /etc/bin/null.zone.file
@ IN A 127.0.0.1
* IN A 127.0.0.1
vervangt door
@ IN A [IP Adres Website]
* IN A [IP Adres Website]
Heb je dat :)

Door Tweakers user Z500, vrijdag 19 juli 2013 10:16

Zowel BIND en DAP (dnsmasq) geprobeerd, het internetten via de NAS werkt. (moet alleen wel op de clients de DNS handmatig instellen) maar wat ik ook in de host files aanpas, het werkt helaas niet.

als ik een nslookup doet staat er ook server unknown, dus iets zit nog niet goed helaas. Iemand een idee in welke richting ik moet zoeken?

Door Tweakers user Tomba, vrijdag 19 juli 2013 10:28

Z500 schreef op vrijdag 19 juli 2013 @ 10:16:
Zowel BIND en DAP (dnsmasq) geprobeerd, het internetten via de NAS werkt. (moet alleen wel op de clients de DNS handmatig instellen) maar wat ik ook in de host files aanpas, het werkt helaas niet.

als ik een nslookup doet staat er ook server unknown, dus iets zit nog niet goed helaas. Iemand een idee in welke richting ik moet zoeken?
Vwb je DNS handmatig instellen; als je op je DHCP server (vermoedelijk je router) aangeeft dat hij een andere DNS doorgeeft is dat zo gefixt.
Wat werkt er nog niet verder? Als je server unknown terugkrijgt werkt het dus al, wellicht haalt ie ads uit je browser cache of gebruik je een proxy?

Door Tweakers user Z500, vrijdag 19 juli 2013 10:43

OkÚ ga ik dat proberen.

Ik gebruik geen proxy, als ik bijvoorbeeld in IE de cache verwijder, en voor de zekerheid op de knop opnieuw instellen klik. Dan krijg ik nog gewoon ads.

Krijg ook dit:

> ad.a8.net
Server: UnKnown
Address: 192.168.0.100

Non-authoritative answer:
Name: ad.a8.net
Address: 202.248.228.20

Dus dat lijkt ook niet te kloppen

[Reactie gewijzigd op vrijdag 19 juli 2013 10:45]


Door Tweakers user Tomba, vrijdag 19 juli 2013 11:13

Z500 schreef op vrijdag 19 juli 2013 @ 10:43:
OkÚ ga ik dat proberen.

Ik gebruik geen proxy, als ik bijvoorbeeld in IE de cache verwijder, en voor de zekerheid op de knop opnieuw instellen klik. Dan krijg ik nog gewoon ads.

Krijg ook dit:

> ad.a8.net
Server: UnKnown
Address: 192.168.0.100

Non-authoritative answer:
Name: ad.a8.net
Address: 202.248.228.20

Dus dat lijkt ook niet te kloppen
Het Unknown gedeelte is je DNS server zelf, je krijgt dus wel gewoon antwoord aangaande ad.a8.net. Je hebt toch iets fout gedaan vrees ik!

Door Tweakers user Z500, vrijdag 19 juli 2013 15:25

Ik ben er achter gekomen dat interne adressen gewoon werkt icm de hosts file. Echter extern niet.

192.168.0.200 sabnzbd
127.0.0.1 facebook.nl

Bovenste werkt, onderste niet.

[Reactie gewijzigd op vrijdag 19 juli 2013 15:26]


Door Tweakers user gjs, vrijdag 19 juli 2013 17:47

oneliner om de host.txt om te zetten in een bind zone file.

code:
1
curl -s http://winhelp2002.mvps.org/hosts.txt |grep -v localhost| grep ^127.0.0.1 |awk '{print $2}' |awk '{ sub(/\r$/,""); print "zone \""$0"\" { type master; notify no; file \"null.zone.file\"; };" }'

Wellicht kan het korter, maar dit heb ik ff snel geproduceerd :)

[Reactie gewijzigd op vrijdag 19 juli 2013 17:50]


Door Tweakers user Tomba, maandag 22 juli 2013 07:53

gjs schreef op vrijdag 19 juli 2013 @ 17:47:
oneliner om de host.txt om te zetten in een bind zone file.

code:
1
curl -s http://winhelp2002.mvps.org/hosts.txt |grep -v localhost| grep ^127.0.0.1 |awk '{print $2}' |awk '{ sub(/\r$/,""); print "zone \""$0"\" { type master; notify no; file \"null.zone.file\"; };" }'

Wellicht kan het korter, maar dit heb ik ff snel geproduceerd :)
Het enige nadeel (voor mij dan toch) is dat ik in de hosts file handmatig googleadservices.com verwijderd. (anders werken de gesponsorde links niet op google en gaat mijn vriendin piepen :P)

Door Tweakers user gjs, maandag 22 juli 2013 20:22

Tomba schreef op maandag 22 juli 2013 @ 07:53:
[...]

Het enige nadeel (voor mij dan toch) is dat ik in de hosts file handmatig googleadservices.com verwijderd. (anders werken de gesponsorde links niet op google en gaat mijn vriendin piepen :P)
Dan zet je achter de |grep -v localhost nog een |grep -v googleadservices.com en klaar is klara

Door Tweakers user Naxiz, maandag 22 juli 2013 22:33

Goed idee! Heb het op m'n VPS gezet met dnsmasq en werkt perfect! Meteen de DNS-servers aangepast in de DHCP-server en alle devices zijn nu verlost van ads. :)

Met een cronjob download ik automatisch een nieuwe lijst, vraag me alleen af of ik dnsmasq moet restarten na het downloaden van een nieuwe lijst?

Door Tweakers user Eewokney, woensdag 20 november 2013 11:29

Ik krijg in mijn log foutmeldingen zoals

code:
1
null.zone.file:14: *.222-33544_999.pub.adfirmative.com: bad owner name (check-names)

Kwam toen dit tegen op Inet

Zijn underscore's niet toegstaan?
Hebben jullie dit ook?

[Reactie gewijzigd op woensdag 20 november 2013 11:29]


Door Tweakers user Tomba, woensdag 20 november 2013 11:45

Naxiz schreef op maandag 22 juli 2013 @ 22:33:
Goed idee! Heb het op m'n VPS gezet met dnsmasq en werkt perfect! Meteen de DNS-servers aangepast in de DHCP-server en alle devices zijn nu verlost van ads. :)

Met een cronjob download ik automatisch een nieuwe lijst, vraag me alleen af of ik dnsmasq moet restarten na het downloaden van een nieuwe lijst?
Op mijn vervolgblog kun je zien hoe ik automagisch update :)

Door Tweakers user johnline, maandag 30 december 2013 14:31

Paar wijzigingen aan het update scriptje om de troep er uit te knippen:


code:
1
curl -s http://winhelp2002.mvps.org/hosts.txt |sed '/^#/ d' |grep -v localhost |grep -v 127.0.0.1 |sed '/^\s*$/d' |awk '{print $2}' |awk '{ sub(/\r$/,""); print "zone \""$0"\" IN { type master; file \"/etc/bind/null.zone.file\"; };" }' > /etc/bind/adservers

Door Tweakers user gjs, zondag 05 januari 2014 12:31

De lijst van http://winhelp2002.mvps.org/hosts.txt is aangepast
ipv 127.0.0.1 gebruiken ze nu 0.0.0.0, dus dat moet je ook aanpassen in je script !

Door Tweakers user Tomba, zondag 05 januari 2014 12:38

gjs schreef op zondag 05 januari 2014 @ 12:31:
De lijst van http://winhelp2002.mvps.org/hosts.txt is aangepast
ipv 127.0.0.1 gebruiken ze nu 0.0.0.0, dus dat moet je ook aanpassen in je script !
Dat heb ik ook beschreven in mijn 3e blog over dit onderwerp:
Tomba's Hideout: Ads blocken met je eigen DNS server (3)

Door Tweakers user gjs, zondag 05 januari 2014 14:18

Ok, wist niet dat die er ook was, deze heb ik ooit gebookmarked..

Reageren is niet meer mogelijk