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