Sikkerheden på nettet ændre sig hele tiden, dvs. måden man beskytter sig på skal følge med, de senere år er DNS blocklister / BlackHole også blevet en populær måde at beskytte klient pc'er på, tidligere har det primært været brugt til at beskytte sig imod Email spam.

Skulle man vælge et alternative til DNS-BH ville det ofte være en Proxy, hvor alt internet trafik så skulle køre igennem og man så her blokkerede de usikre URL'er, der kræver dog en setup hvor man både tager alm. port 80 samt ssl krypteret port 443 trafik, hvilket vil medføre et "større" setup, hertil vil det ikke stoppe trafik på alternative porte, hvis der er åben for dette ud til internettet.

Mit lille DNS-BH er lavet på en debian lxc instans, på en atom mikro computer, alternativ hardware kunne være en raspberry pi.
software jeg benytter mg er af er dnsmasq pakken samt Url blocklist fra https://isc.sans.edu/suspicious_domains.html og http://www.malwaredomains.com/ samt dnslookup hos www.opendns.com, hvilket også filetere malware og andet snavns fra default.

Installer dnsmasq og konfigurere.

apt-get install dnsmasq

herefter skal der ændres lidt i config filen.
vi /etc/dnsmasq.conf

Følgende har jeg ligenu slået til.

# Never forward plain names (without a dot or domain part)
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-priv

# Change this line if you want dns to get its upstream servers from
# somewhere other that /etc/resolv.conf
# her defineres at dnsmasq skal benytte opendns som upstream navne server.
resolv-file=/etc/dnsmasq.conf.resolv

# Set the cachesize here.
# sikre at dnsmasq har en fornufting dns cache, hvilket vil give hurtigere dns resolve tid.
cache-size=1500

# For debugging purposes, log each DNS query as it passes through
# dnsmasq.
# jeg vil gerne kunne følge med i om nogle af mine klienter laver dns opslag mod et blokkeret URL, da dette kunne indikere at maskinen har et problem
log-queries
# da LXC ikke har en syslog, og for at gøre det nemmere at parse loggen, har jeg defineret at dnsmasq benytter sin egen logfile. ( husk logrotate eller ligende )
log-facility=/var/log/dnsmasq.log

# Include a another lot of configuration options.
#conf-file=/etc/dnsmasq.more.conf
#åben op for at blacklists kan smides i dnsmasq.d mappen.
conf-dir=/etc/dnsmasq.d

Kort så indeholder min /etc/dnsmasq.conf.resolv blot dns serverne hos opendns, men det kunne også godt være Google's 8.8.8.8 samt 8.8.4.4 eller alle 4 dns hoste som står i den.

vi /etc/dnsmasq.conf.resolv

nameserver 208.67.222.222
nameserver 208.67.220.220

på debian skal dnsmasq lige genstartes før configurationen køre.

/etc/init.d/dnsmasq restart

Sikre at servicen køre og svare.
 netstat -nat

samt

host isc.sans.edu 127.0.0.1

Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:

isc.sans.edu has address 66.35.59.249
isc.sans.edu has IPv6 address 2607:f1c0:846:9100::15c
isc.sans.edu mail is handled by 15 smtp21a.sans.org.
isc.sans.edu mail is handled by 20 smtp31a.sans.org.
isc.sans.edu mail is handled by 25 smtp21b.sans.org.
isc.sans.edu mail is handled by 30 smtp31b.sans.org.

Next step er blocklisten fra http://www.malwaredomains.com/
hvis wget og md5sum ikke allerede er installeret skal de installeres

Her tager jeg den lette vej og har fundet denne site som har en fint script som håndere dette: http://www.mbse.eu/linux/malwarehosts/
Det man skal være opmærksom på i scriptet er følgende linje som give mening, for det Linux os man køre på.
   [ -x /etc/rc.d/rc.dnsmasq ] && /etc/rc.d/rc.dnsmasq restart >/dev/null

på debian vil det i stedet for være være
  [ -x /etc/init.d/dnsmasq ] && /etc/init.d/dnsmasq restart >/dev/null

 samt at ipaddressen  denne linje, bliver ændret til en intern webserver, f.eks på DNS-BH selv

echo "address=/$2/10.126.151.231" >> $DNSMASQFILE

sidst men ikke mindst skal scriptet lægges i crontab, sådan blocklisten bliver opdateret en gang i døgnet.
malwaredomains opdateret ikke deres liste hverdag, dvs. det kan ikke betale sig at forsøge har hente flere gange i døget.

Crontab -e
45 05 * * * /bin/sh /usr/local/sbin/malwaredomains

Herefter er det blot at få https://isc.sans.edu/suspicious_domains.html listen med ind, her benytter jeg "high", og har så lavet en tilpasset version af scriptet fra http://www.mbse.eu/linux/malwarehosts/

vi /usr/local/sbin/sansdomains

--------------------  script start ---------------

#!/bin/sh
# master download from http://www.mbse.eu/linux/malwarehosts/
# change for the sans suspicios domain by lwh - www.net-help.dk
# Update list of malware domains from sans

DNSMASQPATH="/etc/dnsmasq.d/"
DNSMASQFILE="70-sans-domains"

install_malwarezones() {

  rm -f $DNSMASQFILE

  echo "#" > $DNSMASQFILE
  echo "# $DNSMASQFILE generated $(date)" >> $DNSMASQFILE
  echo "# do not edit this file, your changes will get lost" >> $DNSMASQFILE
  echo "#" >> $DNSMASQFILE

tail -n +18 suspiciousdomains_High.txt | head -n -10 > suspiciousdomains_workfile

filename='suspiciousdomains_workfile'
filelines=`cat $filename`
for line in $filelines ; do
    echo "address=/"$line"/192.168.1.53" >> $DNSMASQFILE
done

  mkdir -p $DNSMASQPATH
  cp -p $DNSMASQFILE $DNSMASQPATH/$DNSMASQFILE.new
  mv $DNSMASQPATH/$DNSMASQFILE.new $DNSMASQPATH/$DNSMASQFILE
  [ -x /etc/init.d/dnsmasq ] && /etc/init.d/dnsmasq restart >/dev/null
}

cd /var/malwaredomains/sans
 wget -N  --no-check-certificate  https://isc.sans.edu/feeds/suspiciousdomains_High.txt

rc=$?

if [ $rc -eq 0 ]; then

  if [ -f sansdomains.md5 ]; then

    OLD=$(cat sansdomains.md5)
    NEW=$(md5sum suspiciousdomains_High.txt)

    if [ "$OLD" != "$NEW" ]; then
      md5sum suspiciousdomains_High.txt > sansdomains.md5
      install_malwarezones
    fi

  else
    md5sum sansdomains.zones > sansdomains.md5
    install_malwarezones
  fi
fi

--------------------  script slut --------------- 

crontab -e

45 14 * * * /bin/sh /usr/local/sbin/sansdomains

herefter bør man lige manuelt køre de 2 scripts samt teste  et par ad de dns entris som finde i at dns forspørgelser nu bliver sendt til den interne ipaddresse ( 192.168.1.53 )

Der findes flere blocklists som man kan benytte, taktikken er den samme.

f.eks.


http://www.malwaredomainlist.com/hostslist/hosts.txt
http://malc0de.com/bl/ZONES  ( denne kan være farligt, da de ikke filtere kommercielle url væk, f.eks amazonaws og Skype.com )
http://cybercrime-tracker.net/all.php

Øvrigt er http://www.scumware.org/stats.scumware sjov at kigge med på, her kan man også se danske sider, som hoster malware