dnsmasq Blacklists mit PHP aktualisieren

Status
Für weitere Antworten geschlossen.

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Ich habe mir zu Hause einen dnsmasq Server aufgesetzt, der den Part des DNS Servers für die Clients in meinem LAN macht. dnsmasq bietet die Möglichkeit DNS Informationen via HOSTS Datei oder dnsmasq-DNS Record einzulesen.
Dies bietet die Möglichkeit Listen von bekannten Malware- resp Werbedomains im DNS zu hinterlegen und damit den Zugriff darauf zu unterbinden. Testweise habe ich mal den Virenscanner ausgeschaltet und eine Virenseite angesurft (natürlich mit dem IE). Der JS Loader wurde zwar geladen, aber als der Loader den Payload runterladen wollte, konnte der DNS Name der Ressource nicht aufgelöst werden.
Das Konzept funzt also sogar als primitiver Virenschutz, obwohl es keinen Virenscanner ersetzen kann!!!
Das schöne daran ist aber auch, dass damit Werbung im Internet Geschichte ist :D

HOST
Eine HOSTS Datei ist eine simple Textdatei mit einer IP-Host-Zuordnung pro Zeile. Dabei steht links die IP Adresse und rechts der zugehörige Host/Domainname. Getrennt werden IP und Name normalerweise mit einem TAB.
Kommentare in HOSTS Dateien sind mittels # als erstes Zeichen einer Zeile möglich
Code:
# Ich bin ein Kommentar
127.0.0.1    DOMAIN.TLD
127.0.0.1    OTHER-DOMAIN.TLD
Obige Einträge sorgen dafür, dass DNS Anfragen nach den beiden Namen mit der ungültigen IP für localhost beantwortet werden d.h. diese beiden Domains sind nicht mehr erreichbar.

Diese Einträge kann man direkt in /etc/hosts vornehmen. Zusätzlich bietet dnsmasq in seiner conf (/opt/etc/dnsmasq.conf) die Möglichkeit über die Variable
Code:
addn-hosts=/PATH/TO/FILE
ein alternatives HOSTS Files festzulegen, welches zusätzlich zum default File (/etc/hosts) verarbeitet wird. Mehrere Files können angegeben werden, indem man die Variable mehrfach setzt

dnsmasq Records
Neben dem HOSTS Format versteht dnsmasq auch Einträge in seinem eigenen nativen DNS Format. Diese sind folgendermassen aufgebaut
Code:
# Ich bin auch ein Kommentar
address="/DOMAIN.TLD/127.0.0.1"
address="/OTHER-DOMAIN.TLD/127.0.0.1"
Die Einträge können in einer beliebigen Datei erstellt und dann via Variable (/opt/etc/dnsmasq.conf)
Code:
conf-file=/PATH/TO/FILE
gesetzt werden. Mehrere Files können angegeben werden, indem man die Variable mehrfach setzt.

Um diese Listen automatisiert zu erstellen, habe ich ein PHP Script geschrieben welches bei mir regelmässig via cron aufgerufen wird und die Listen aktualisiert.
Bitte lest die Kommentare im Code bevor ihr damit loslegt


Hier also der Code für das PHP Script. Leider ist der Code zu lang, um ihn direkt hier in den Post einzufügen...
Um das Script regelmässig auszuführen habe ich einen cronjob dafür angelegt. Ein kleines Shell Script wird von cron aufgerufen und dieses ruft das PHP Script via Konsole (also via ipkg-php) auf. Das Shellscript brauche ich, damit ich die neu erstellten Files in den dnsmasq laden und diesen auch gleich neustarten kann (braucht root Rechte)
Code:
#!/opt/bin/bash
/opt/bin/php /volume1/web/www/main/test.php >> /dev/null
cp -f /volume1/web/www/main/dns* /opt/etc/ >> /dev/null
sh /opt/etc/init.d/S56dnsmasq start >> /dev/null
exit
 

Anhänge

  • blacklists.zip
    3,3 KB · Aufrufe: 4
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat