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

Jeg har fornyligt sat en SSD i en intern intel atom server her i huset, men har været i tvivl om hvorgodt ssd er undersøttet på linux.
her er nogle af de artikler jeg har været igennem, og dermed også nogle af de ting jeg har gjort.

Da det er en Intel 530 SSD så har jeg startet med at løbe denne blog post igennem.
https://communities.intel.com/community/itpeernetwork/blog/2013/12/11/ssd-misconceptions-on-linux--alignment-io-scheduler-trim

denne artikel har jeg også læst
http://blog.neutrino.es/2013/howto-properly-activate-trim-for-your-ssd-on-linux-fstrim-lvm-and-dmcrypt/

samt naturligvis på debian wiki.
https://wiki.debian.org/SSDOptimization?action=show&redirect=SSDoptimization



Jeg har flere Linux gateways stående rundt omkring, og i løbet af de sidste par dage har jeg lagt mærke til at der seriøst er mange ssh login forsøg, hvor man forsøger at gætte mine "brugers" password.

Her i dag. D 10.12.2014 har der siden midnat indtil ca. kl 14.15 således været over 140 ssh logon forsøg som er blevet blokkeret, jeg kan se at det er de samme ipaddresser som står bag forsøgene på flere at mine gateways.

[ssh] 2014-12-10 101.99.3.131
[ssh] 2014-12-10 109.169.75.126
[ssh] 2014-12-10 111.68.21.72
[ssh] 2014-12-10 122.225.97.73
[ssh] 2014-12-10 122.225.97.87
[ssh] 2014-12-10 123.30.135.226
[ssh] 2014-12-10 124.217.247.195
[ssh] 2014-12-10 1.246.219.50
[ssh] 2014-12-10 1.252.64.189
[ssh] 2014-12-10 130.192.119.163
[ssh] 2014-12-10 14.139.125.117
[ssh] 2014-12-10 175.184.42.167
[ssh] 2014-12-10 189.11.199.164
[ssh] 2014-12-10 194.63.140.243
[ssh] 2014-12-10 195.22.18.187
[ssh] 2014-12-10 201.245.165.116
[ssh] 2014-12-10 201.33.235.198
[ssh] 2014-12-10 201.77.127.31
[ssh] 2014-12-10 202.174.84.74
[ssh] 2014-12-10 202.174.84.74
[ssh] 2014-12-10 202.82.223.24
[ssh] 2014-12-10 202.82.223.24
[ssh] 2014-12-10 203.111.101.132
[ssh] 2014-12-10 203.149.62.225
[ssh] 2014-12-10 203.169.143.196
[ssh] 2014-12-10 203.186.202.169
[ssh] 2014-12-10 203.229.231.166
[ssh] 2014-12-10 203.229.231.166
[ssh] 2014-12-10 204.232.209.198
[ssh] 2014-12-10 208.96.12.52
[ssh] 2014-12-10 209.12.252.254
[ssh] 2014-12-10 210.14.133.144
[ssh] 2014-12-10 212.218.98.2
[ssh] 2014-12-10 212.227.20.35
[ssh] 2014-12-10 212.99.93.252
[ssh] 2014-12-10 213.229.71.229
[ssh] 2014-12-10 217.174.252.62
[ssh] 2014-12-10 217.174.252.62
[ssh] 2014-12-10 217.27.158.228
[ssh] 2014-12-10 218.145.70.16
[ssh] 2014-12-10 218.77.119.98
[ssh] 2014-12-10 219.144.222.244
[ssh] 2014-12-10 220.128.221.102
[ssh] 2014-12-10 220.232.241.212
[ssh] 2014-12-10 220.90.18.106
[ssh] 2014-12-10 221.163.252.76
[ssh] 2014-12-10 222.186.197.76
[ssh] 2014-12-10 222.255.236.49
[ssh] 2014-12-10 222.73.111.195
[ssh] 2014-12-10 27.112.106.74
[ssh] 2014-12-10 31.210.42.34
[ssh] 2014-12-10 31.210.99.186
[ssh] 2014-12-10 50.23.7.242
[ssh] 2014-12-10 50.23.7.242
[ssh] 2014-12-10 50.56.70.153
[ssh] 2014-12-10 58.206.126.28
[ssh] 2014-12-10 58.206.126.28
[ssh] 2014-12-10 58.215.188.16
[ssh] 2014-12-10 59.125.40.36
[ssh] 2014-12-10 59.4.98.43
[ssh] 2014-12-10 60.173.8.117
[ssh] 2014-12-10 61.128.122.76
[ssh] 2014-12-10 61.172.255.88
[ssh] 2014-12-10 61.174.50.208
[ssh] 2014-12-10 61.174.51.201
[ssh] 2014-12-10 61.174.51.214
[ssh] 2014-12-10 61.174.51.219
[ssh] 2014-12-10 61.174.51.219
[ssh] 2014-12-10 61.174.51.221
[ssh] 2014-12-10 61.174.51.228
[ssh] 2014-12-10 61.31.195.225
[ssh] 2014-12-10 62.103.152.104
[ssh] 2014-12-10 62.103.152.21
[ssh] 2014-12-10 62.141.38.177
[ssh] 2014-12-10 62.141.43.66
[ssh] 2014-12-10 62.14.247.220
[ssh] 2014-12-10 62.193.226.34
[ssh] 2014-12-10 62.2.85.57
[ssh] 2014-12-10 62.75.180.11
[ssh] 2014-12-10 62.80.26.69
[ssh] 2014-12-10 67.198.197.194
[ssh] 2014-12-10 68.171.206.55
[ssh] 2014-12-10 74.215.142.170
[ssh] 2014-12-10 74.79.230.104
[ssh] 2014-12-10 74.95.24.49
[ssh] 2014-12-10 76.12.164.12
[ssh] 2014-12-10 76.76.202.215
[ssh] 2014-12-10 78.111.117.234
[ssh] 2014-12-10 78.90.110.205
[ssh] 2014-12-10 79.187.62.161
[ssh] 2014-12-10 80.172.240.149
[ssh] 2014-12-10 80.244.185.36
[ssh] 2014-12-10 81.8.0.22
[ssh] 2014-12-10 82.116.79.92
[ssh] 2014-12-10 82.165.151.197
[ssh] 2014-12-10 82.165.27.17
[ssh] 2014-12-10 82.208.118.141
[ssh] 2014-12-10 8.225.197.7
[ssh] 2014-12-10 83.103.67.197
[ssh] 2014-12-10 83.222.5.173
[ssh] 2014-12-10 83.234.207.60
[ssh] 2014-12-10 83.3.193.238
[ssh] 2014-12-10 84.22.181.27
[ssh] 2014-12-10 84.246.224.147
[ssh] 2014-12-10 85.159.237.84
[ssh] 2014-12-10 85.25.137.52
[ssh] 2014-12-10 87.106.1.211
[ssh] 2014-12-10 87.106.132.188
[ssh] 2014-12-10 87.106.219.6
[ssh] 2014-12-10 87.106.219.6
[ssh] 2014-12-10 87.106.242.123
[ssh] 2014-12-10 87.106.251.42
[ssh] 2014-12-10 87.106.3.208
[ssh] 2014-12-10 87.106.65.80
[ssh] 2014-12-10 87.106.73.53
[ssh] 2014-12-10 87.118.118.236
[ssh] 2014-12-10 87.118.120.216
[ssh] 2014-12-10 87.118.120.90
[ssh] 2014-12-10 87.118.88.248
[ssh] 2014-12-10 87.162.146.16
[ssh] 2014-12-10 87.230.53.69
[ssh] 2014-12-10 89.171.118.227
[ssh] 2014-12-10 89.17.201.249
[ssh] 2014-12-10 91.102.65.201
[ssh] 2014-12-10 91.135.226.34
[ssh] 2014-12-10 91.135.238.186
[ssh] 2014-12-10 91.135.238.186
[ssh] 2014-12-10 91.142.209.68
[ssh] 2014-12-10 91.142.209.68
[ssh] 2014-12-10 91.142.209.68
[ssh] 2014-12-10 91.142.220.231
[ssh] 2014-12-10 91.217.151.130
[ssh] 2014-12-10 92.42.38.211
[ssh] 2014-12-10 92.48.90.97
[ssh] 2014-12-10 92.51.145.237
[ssh] 2014-12-10 92.61.37.180
[ssh] 2014-12-10 92.61.37.180
[ssh] 2014-12-10 92.61.37.95
[ssh] 2014-12-10 92.61.37.95
[ssh] 2014-12-10 92.61.46.110
[ssh] 2014-12-10 94.21.192.222
[ssh] 2014-12-10 94.23.213.168
[ssh] 2014-12-10 95.9.171.182
[ssh] 2014-12-10 98.191.25.65

En forsøg på at sætte Suriata op på Debian Jessie  a'la  https://robert.penz.name/849/howto-setup-a-mikrotik-routeros-with-suricata-as-ids/

debian Jessie benyttes da denne har suricata 2.0 versionerne liggende som apt-get pakker.

Fixing Issue: "suricata: error while loading shared libraries: libhtp-0.5.12.so.1: cannot open shared object file: No such file or directory når suricata startes.

suricata -c /etc/suricata/suricata-debian.yaml -i eth1"
suricata: error while loading shared libraries: libhtp-0.5.12.so.1: cannot open shared object file: No such file or directory

Manuelt download og installer libhtp1 i den rigtige version
wget http://ftp.acc.umu.se/mirror/cdimage/snapshot/Debian/pool/main/libh/libhtp/libhtp1_0.5.12-1_amd64.deb
dpkg -i libhtp1_0.5.12-1_amd64.deb

Fixing Issue:  suricata opening snort rules path

9/12/2014 -- 13:57:33 - <Error> - [ERRCODE: SC_ERR_OPENING_RULE_FILE(41)] - opening rule file /e9/12/2014 -- 13:57:33 - <Error> - [ERRCODE: SC_ERR_OPENING_RULE_FILE(41)] - opening rule file /e9/12/2014 -- 13:57:33 - <Error> - [ERRCODE: SC_ERR_OPENING_RULE_FILE(41)] - opening rule file /e9/12/2014 -- 13:57:33 - <Error> - [ERRCODE: SC_ERR_OPENING_RULE_FILE(41)] - opening rule file /e9/12/2014 -- 13:57:33 - <Error> - [ERRCODE: SC_ERR_OPENING_RULE_FILE(41)] - opening rule file /e9/12/2014 -- 13:57:33 - <Error> - [ERRCODE: SC_ERR_OPENING_RULE_FILE(41)] - opening rule file /e9/12/2014 -- 13:57:33 - <Error> - [ERRCODE: SC_ERR_OPENING_RULE_FILE(41)] - opening rule file /e9/12/2014 -- 13:57:33 - <Error> - [ERRCODE: SC_ERR_OPENING_RULE_FILE(41)] - opening rule file /e9/12/2014 -- 13:57:33 - <Notice> - This is Suricata version 2.0.4 (rev 86371ad)

til føj Default-rule-path til suricata-debian.yaml under Classification-file og reference-config-file.

vi /etc/suricata/suricata-debian.yaml

classification-file: /etc/suricata/rules/classification.config

reference-config-file: /etc/suricata/rules/reference.config

default-rule-path: /etc/suricata/rules


Mindre opdatering:
jeg er på vej overpå port mirroring trafikken til Suricata, måden mad at "streame" trafikken fik min Mikrotik router til Suricata til at brug 60 - 70 % af den cpu kraft når jeg havde en 10 MB overførsel igang ud i verden, dvs. at routen ikke ville kunne klare at jeg brugte min totale båndbredte.....

OBS:  pas på dependencies hvis der kigges på snortby som frontend gui.

Jeg har en loadbalancer (haproxy) foran mine web-server / web-services, primært fordi jeg kun har 1 offentlig ip til rådighed, dette giver lidt forskellige udfordringer.
I laaaangtid har jeg kunne klare mig med en apache reverse proxy, men da jeg pt. roder / tester nogle Microsoft Rpc_over_http(s) ting, som apache2 ikke understøtter/vil understøtte, er HAproxy kommet i spil, hvilket er helt fint, når man lige lære den lidt af kende.

Et par ting jeg har lært.

Klassisk har jeg haft nogle <Directory>  som er blokkeret sådan de ikke kan tilgåes ude fra internettet eller kun meget få offentlige ipaddresser f.eks. administrations sider, dette er ingen problem sålangt tid at den gamle Apache reverse proxy videre gav client site ipaddressen til backenden, men da jeg nu er afhængig af Haproxy og  X-Forwarded-For mulighederne, ser en <Directory> nu lidt anderledes ud.

De 2 nestående er eksemple IP, samt intern lan som vil få adgang til websiden "/admin" 

<Directory /var/www/mitweb/admin>
        SetEnvIF X-Forwarded-For "192.168.1.[1-254]|173.12.19.2" AllowIP
        Options Indexes Multiviews FollowSymLinks
        AllowOverride All
        Order Deny,Allow
        Deny from all
        Allow from env=AllowIP
</Directory>

For at dette kan lade sig gøre skal Option forwardfor være i Haproxy's Backend config til webserveren.

backend bk_webhotel
mode http
option forwardfor
option http-server-close
cookie JSESSIONID prefix
server webhotel 192.168.2.2:80 check

Naturligvis skal apache2.conf på Debian ændres sådan man ser client ipaddresse  apache log'en også, på debian skal følgende linjer ændres, hvilket blot er at følge hvad der er angivet i conf filen.

vi /etc/apache2/apache2.conf

# If you are behind a reverse proxy, you might want to change %h into %{X-Forwarded-For}i
#
#LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
#LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
#LogFormat "%h %l %u %t \"%r\" %>s %O" common

LogFormat "%v:%p %{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O" common

Herefter skal apache2 naturligvis en tur rundt før dette får en effekt.