Sicherheit durch hosts-deny

Installations-Anleitung für hosts-deny

1. 

Verzeichnis anlegen:

Hosts-Deny läuft in einem beliebigen Verzeichnis. Wir gehen in dieser Beschreibung davon aus, daß Sie hosts-deny in /root/scripte/hosts-deny installieren.

Die Befehle dafür lauten:
cd ROOT            (vor dem Wort ROOT ein Dollarzeichen einfügen !)
mkdir scripte
cd scripte
mkdir hosts-deny
cd hosts-deny

2. 

3.

4. 

Entpacken Archiv-File / Einkopierung der hosts-deny - Programme:

Sofern Ihnen der Befehl wget zur Verfügung steht, können Sie hosts-deny direkt laden via:

wget hosts-deny.eu/files/hosts-deny_de_2.1.1.zip  (ggf. andere Versions-Nummern verwenden)

Das Entpacken erfolgt nach erfolgreichem Download wie folgt:

unzip hosts-deny_de_2.1.1.zip (ggf. andere Versions-Nummern verwenden)

Legen Sie für hosts-deny eine separate Datenbank unter MySQL an

Sofern Sie phpMyAdmin verwenden, legen Sie eine Datenbank an, z.B. hostsdeny und einen User hostsdeny, der nur Zugriff auf die Datenbank hostsdeny erhält!

ansonsten unter Linux ist dies auch möglich mit:
mysql -u root -p 
Geben Sie Ihr MySQL-Root-Passwort ein
Sie erhalten dann als Rückmeldung den MySQL-Prompt: mysql>

Geben Sie nun folgende Befehle ein, wobei Sie bitte PASSWORT mit dem Ihrer Wahl ersetzen! (ACHTUNG: 2 mal das gleiche!) :
CREATE DATABASE hostsdeny;

CREATE USER 'hostsdeny'@'localhost' IDENTIFIED BY 'PASSWORT';

GRANT USAGE ON * . * TO 'hostsdeny'@'localhost' IDENTIFIED BY 'PASSWORT' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , INDEX , ALTER , CREATE TEMPORARY TABLES , CREATE VIEW , SHOW VIEW , CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON `hostsdeny` . * TO 'hostsdeny'@'localhost';

quit;

Sicherung der bestehenden hosts.deny - Datei

Wir empfehle Ihnen die gesonderte Sicherung der hosts.deny und hosts.allow Dateien. Diese finden Sie im Verzeichnis /etc.

Die Befehle dafür lauten:
cd /etc
cp hosts.deny hosts.deny.sic
cp hosts.allow hosts.allow.sic

5. 

Erweitern der hosts.allow - Datei 

Wir empfehlen Ihnen eine Erweiterung der hosts.allow - Datei. Diese finden Sie im Verzeichnis /etc.

Sie sollten in dieser Datei für Ihre Administration eine Hintertür öffnen, die Ihnen erlaubt von Ihrem Computer generell auf Ihren Server zu zu greifen, selbst, wenn Sie sich aussperren würden! Alle IPs, die eigentlich über die hosts.deny blockiert werden, werden über die hosts.allow frei gegeben, sofern die Einträge richtig sind!

Ermitteln Sie die IP, von der Sie generell auf den Server zugreifen, bei einer statischen IP, ist dies simpel, fügen Sie sofern keine Zeile mit ALL: beginnt, eine neue an, die wie folgt aussieht: (Sie können auch mehrere IPs getrennt jeweils mit einem Leerzeichen einfügen. Sollten Sie über dynamische IPs zugreifen, finden Sie hier weitere Hinweise

ALL: IP1 IP2 IP3

6.

Rechte setzen für folgende Dateien:

hosts-deny benötigt LESE-ZUGRIFF auf die alert.log-Datei von Snort. Diese wird gewöhnlicher weise unter /var/log/snort gespeichert.
Ferner benötigt hosts-deny LESE-UND SCHREIBZUGRIFFE auf die Datei hosts.deny. Diese wird gewöhnlicher weise unter /etc gespeichert.
Diese Rechte sind zu setzen, wenn Sie hosts-deny unter einem anderen User als root einrichten!

7. 

Prüfen ob Ihre Nameserver-Einstellungen korrekt sind! 

Prüfen Sie mit

whois IrgendEineDomain.de

, jedoch nicht Ihre eigene Domain, ob Sie korrekte whois-Informationen erhalten! Sollte Ihr Server keine korrekte Information erhalten, dann sollten Sie Ihre resolv.conf prüfen, diese befinet sich unter /etc und sollte korrekte Nameserver-Einträge enthalten! Die Kommunikation muß sauber erfolgen, um später auch Updates für snort und hosts-deny erhalten zu können!

8.

Voreinstellungen für hosts-deny vornehmen:

Sofern Sie das erste mal hosts-deny einspielen, wird noch keine hdeny.setting.php existieren, dafür aber eine hdeny.setting.new

Benennen Sie die Datei um:

mv hdeny.setting.new hdeny.setting.php 

Ansonsten prüfen Sie, ob in der hdeny.setting.php folgende Variablen vorhanden sind:

_email='IhreMail@server.de' // neuer Parameter: tragen Sie Ihre Mail ein
_update='0' // neuer Parameter: _update = "0"; // 1 nur nach Aufforderung setzen, sonst immer 0 !!!!

Ändern Sie die hdeny.setting.php Datei und passen Sie, sofern Pfad-Abweichungen vorliegen, diese entsprechend an. Passen Sie auch das Passwort für die hosts-deny-Datenbank an!

9.

Rufen Sie das Install-Programm von hosts-deny auf. 

Das Programm kann beliebig oft aufgerufen werden und prüft die einzelnen Vorgaben, richtet die Datenbank ein, sofern nicht vorhanden, legt die Tabellen an und speichert die Lizenz-Informationen. Sofern irgend etwas noch falsch gesetzt ist, erhalten Sie eine Fehlermeldung und können dann das Problem beseitigen und das Programm erneut starten.

Der Aufruf erfolgt mit: php install.php   

10. 

hosts-deny das erste mal starten

Beim Start von hosts-deny, ruft hosts-deny zuerst die Log-Daten von der alert.log aus dem Verzeichnis /var/log/snort/alert.log ab und speichert alle alerts (Warnungen) in der hosts-deny-Datenbank, wertet diese in der Datenbank aus und bei zu vielen Alerts vom gleichen Angreifer oder einer Angreifer-Gruppe, wird ein Eintrag in der hosts.deny vorgenommen. Die Blockierungen werden jedoch auch nach Ablauf vordefinierter Zeiten wieder aufgehoben. Dieser Vorgang dauert in der Regel ein Bruchteil einer Sekunde und belastet das System nur sehr gering!

Der Aufruf erfolgt mit: php hosts-deny.php

Sie sollten keine Fehlermeldung erhalten, ansonsten setzen Sie sich bitte mit unserem Support-Team über das Kontakt-Formular unter hosts-deny.eu in Verbindung!

Prüfen Sie als nächstes Ihre Datei hosts.deny, die Sie gewöhnlicherweise im Verzeichnis /etc finden, nach Einträgen. Selbst, wenn Sie in der alert.log - Datei, die von snort gefüllt worden ist, Einträge finden, so müssen diese nicht unbedingt zu Einträgen in der hosts.deny geführt haben! Lesen Sie später hierzu mehr!

Sie werden in jedem Fall eine Erweiterungs-Zeile finden, die wie folgt aussieht:
### begin auto-denied ###

Alle durch hosts-deny blockierten IPs werden unterhalb dieser Zeile eingetragen oder wieder entfernt, nach Ablauf definierter Zeiten. Ihre eigenen Einträge z.B.

SSHD: ALL

werden nicht verändert!

1. 

hosts-deny daß erste mal via Shell-Script starten

Als nächstes muß geprüft werden, ob der Aufruf von hosts-deny auch mit dem shell-Script funktioniert. Sie sollten keine Fehlermeldung bei diesem Aufruf erhalten, ansonsten setzen Sie sich bitte mit unserem Support-Team über das Kontakt-Formular unter hosts-deny.eu in Verbindung!

Der Aufruf erfolgt über:
sh hosts-deny.sh

ACHTUNG: Es ist wichtig, daß hosts-deny über dieses Shell-Script aufgerufen wird, da über dieses Script geprüft wird, ob das Script noch aus einem vorherigen Aufruf läuft. Dadurch wird eine generell Überlastung des Servers, z.B. zuviele geöffnete Tabellen in MySql oder zuviele geöffnete Dateien verhindert!

12. 

hosts-deny in Autostart und in den Ausführungsplan einbinden:

Wenn alles obere sauber und korrekt durchgeführt worden ist, können Sie hosts-deny in die generelle Zeitsteuerung einbauen. Sollte Ihr Server extrem überlastet sein, evtl. durch Angriffe, so empfehlen wir ein Start alle 5 Minuten. Sofern Sie feststellen, daß die Resourcen sich minimieren, empfehlen wir einen Start alle 3 Minuten (am 2. Tag) und ab dem 3. Tag, sollten Sie hosts-deny alle 2 Minuten starten! hosts-deny selbst verbraucht extrem wenig Resourcen und durch das Shell-Script wird eine Mehrfach-Verarbeitung ausgeschlossen!

Die Einbindung erfolgt in der crontab:

crontab -e

Fügen Sie nun folgende Zeile ein:
*/5 * * * * sh /root/scripte/hosts-deny/hosts-deny.sh

*/5 bedeutet alle 5 Minuten
*/2 bedeutet alle 2 Minuten

Snort®, Sourcefire™, the Snort logo and the Sourcefire logo are trademarks of Sourcefire. All other product names, company names, marks, logos, and symbols may be the trademarks of their respective owners.