You are not logged in.

  • Login

Monday, January 31st 2011, 11:13pm

Content

Tags

debian, Linux, sicherheit, webserver

Abstract

(IN BEARBEITUNG) In diesem Artikel geht es darum einen möglichst sicheren Webserver mit Debian aufzusetzen. Bei den meisten Artikeln die eine Webserverinstallation beschreiben, wird die Sicherheit außer Acht gelassen, womit es ein leichtes wäre z. Bsp, Zugangsdaten beim Zugriff auf die MySQL-Datenbank mittels PHPMyAdmin "mitzusniffen". Dieser Artikel versucht jedoch an jeder möglichen Stelle verschlüsselte Alternativen aufzuzeigen, welche oft schon ohne großen Aufwand benutzbar sind.

Article

1. Vorwort


Diese Anleitung ist für fortgeschrittene Linuxbenutzer gedacht. Ich werde keinerlei Grundlagen erklären und auch nicht auf jede Einzelheit eingehen. Manche Befehle können in neueren Versionen abweichen, z. Bsp, Downloadlinks. Diese sollten dann bei Bedarf durch die neueren ersetzt werden. Dabei würde ich mich freuen, wenn man die Links dann auch direkt im Artikel abändern würde.

2. SSH


Für die Kommunikation zwischen dem Server und dem Administrator kommt der SSH-Dienst zum Einsatz. Normalerweise sollte dieser schon auf dem Server installiert sein. Falls nicht, kann dies mit

Bash

1
aptitude install ssh-server

nachträglich gemacht werden.
Die SSH-Konfiguration sollte so angepasst werden, dass sich der Benutzer root nicht mehr direkt per SSH anmelden kann. Dazu wird die Zeile

Source code

1
PermitRootLogin yes

in

Source code

1
PermitRootLogin no

geändert. Dies hat den Vorteil, dass die meisten Login-Versuche fremder schon fehlschlagen und man für das erfolgreiche ***Kompremettieren*** mindestens zwei Passwörter braucht, das des normalen Benutzers und dass von root. Andererseits underbindet es die Faulheit des Administrators, wenn dieser nur eine kleine Aufgabe zu erledigen hat, welche auch un unpreveligierter Benutzer ausführen kann.
Weiterhin sollte der SSH-Daemon gegen Bruteforce-Attacken gesichert werden. Dies lässt sich einfach mit dem Programm denyhosts bewerkstelligen. Es sperrt einfach die IP-Adresse des PCs der sich mehrmals erfolglos versucht anzumelden.
Installiert wird denyhosts mit

Bash

1
aptitude install denyhosts

Danach sollte die Konfigurationsdatei von denyhosts, welche unter /etc liegt, bearbeitet werden.
Zuerst wird die Frist definiert, nach der die Einträge wieder gelöscht werden sollen. Dazu verändern wir die Zeile

Source code

1
PURGE_DENY = 

in

Source code

1
PURGE_DENY = 5d

Damit werden Einträge, die älter als fünf Tage sind gelöscht. Dann sollte noch die Zeile mit dem Inhalt

Source code

1
DENY_THRESHOLD_INVALID = 5

überprüft werden. Hier wird die Anzahl der Versuche definiert, die man hat, bevor denyhosts die IP auf die Sperrliste setzt.

3. Apache


Jetzt wird der Webserver. hier Apache2, mit PHP und MySql installiert. Dazu gibt man in der Shell folgendes ein:

Bash

1
aptitude install apache2 php5 mysql libapache2-mod-php5

Damit wird ein solides Grundsystem installiert, welches den meisten Anforderungen erst einmal ausreichen sollten.
Für die komfortable Administration bzw. Konfiguration des MySQL-Datenbanksystems wird PHPMyAdmin mit dem Befehl

Bash

1
aptitude install phpmyadmin
installiert.
Jetzt wird PHPMyAdmin entsprechend abgesichert, so dass niemand mehr das übertragene Passwort entschlüsseln kann. Dazu muss man ein SSL-Zertifikat erstellen. Für den privaten Gebrauch sollte es ausreichen, wenn man das Zertifikat selbst signiert. Dadurch wird zwar z. Bsp. der Firefox eine entsprechende Warnung anzeigen, wenn wir auf die Seite gehen möchten, diese kann jedoch getrost ignoriert werden.
Wer sein Zertifikat für andere glaubwürdiger machen möchte, kann auf CaCert als kostenlose Certificate Authority nehmen, jedoch werden die Warnungen erst nach dem Import des Rootzertifikates von CaCert verschwinden. Alternativ kann man natürlich auch ein Zertifikat von Thawte oder VeriSign für mehrere Hundert Euro im Jahr nehmen.
Das Zertifikat wird mit

Bash

1
make-ssl-cert generate-default-snakeoil --force-overwrite

erzeugt und gleichzeitig unterschrieben.
Genaueres kann man in /usr/share/doc/apache2.2-common/README\Debian.gz nachlesen.

Lexikon 4.1.5, developed by www.viecode.com