Überblick
Im letzten Teil der 10-teiligen Artikelserie möchte ich noch etwas auf das Thema Sicherheit am Rootserver eingehen. Ein Server der im öffentlichen Netz steht ist natürlich immer Angriffen ausgesetzt. Genau darum sollte man immer sehr auf die Sicherheit am Server achten, hierzu ist es sinnvoll, dass man bestimmte Konfigurationen vornimmt um es einem potentiellen Angreifer so schwer wie möglich zu machen. Eine wichtige Sicherheitsmaßnahme ist, dass man alles Hinweise auf verwendete Versionen entfernt.
PHP Version nicht anzeigen
Die Konfigurationsdatei für php ist die php.ini. Dort sollte man einstellen, das die verwendete Version nicht mitgesendet wird. Dazu editiert man die Zeile expose_php und stellt den Schalter dabei auf Off.
expose_php = Off
Apache Version nicht anzeigen
Selbes gilt natürlich auch für die verwendete Apache Version. Auch dort sollte man im jeweilen Virtual Host (vhosts) die Option ServerSignature auf off stellen.
ServerSignature Off
phpmyadmin Namen ändern
Sofern man seine Datenbank mit dem grafischen Tool phpmyadmin bearbeitet, lautet der Zugriff auf das Webinterface: IP-Adresse\phpmyadmin. Der Name phpmyadmin ist allerdings öffentlich bekannt, so das es ein leichtes ist den Zugriff darauf zu versuchen. Besser ist es, wenn man anstatt phpmyadmin einen anderen Alias verwendet. Die nötige Änderung hierfür nimmt man im Verzeichnis: /etc/phpmyadmin/apache.conf vor. Um phpmyadmin noch besser zu schützen, könnte man auch ein selbst-signiertes Zertifikat verwenden.
SSH Port ändern und Zertifikat verwenden
Der SSH Dienst ist wohl der, der am meisten verwendeter wird, wenn es um den Zugriff auf den Server geht und natürlich dessen Konfiguration. Umso wichtiger ist es, dass man diesen sehr gut absichert. Neben dem Programm Fail2ban, was weiter unter erläutert wird, sollte man auch noch weitere Sicherheitsmaßnahmen in Betracht ziehen. Dazu gehört u.a. dass man dem Root keinen Zugriff gestattet, den Standardport ändern und ein Zertifikat verwendet. Die Einstellungen für das Root Login und dem Port werden in der Datei /etc/ssh/sshd_config vorgenommen.
Benachrichtigung für das SSH Login einrichten
Wer sich wann per SSH am Server eingeloggt hat, kann man sich auch per Email mitteilen lassen. Hierfür erstellt man das folgenden Bash Script (name:ssh-login.sh) und speichert es z.B. im Verzeichnis /opt ab.
#!/bin/bash echo " SSH-Login auf $(hostname) am $(date +%Y-%m-%d) um $(date +%H:%M)" echo "User: $USER" echo finger
Anschließend muss man in der /etc/profile die folgende Zeile eintragen, welche für den Versand der Email verantwortlich ist.
/opt/ssh-login.sh | mailx -s "SSH Login auf SERVER-HOSTNAME" meine-emailadresse@beispiel.de
Das Script muss natürlich auch die entsprechenden Rechte besitzen, damit es auch ausgeführt werden kann. Ich habe die Rechte dabei auf 755 gesetzt.
Apticron für regelmäßige Sicherheitsupdate aktivieren
Ein Rootserver sollte natürlich regelmäßig mit Sicherheitsupdates versorgt werden. Um sich nicht manuell ständig darum kümmern zu müssen, gibt es das Debian Security Team, die das Tool apticron zur Verfügung stellen. Sofern man das Paket installiert, wird man nun regelmäßig per Mail über neue zu Verfügung stehende Updates informiert. Hierzu muss man natürlich in der /etc/apticron/apticron.conf seine Email Adresse eintragen. Das Programm liefert auch Auskunft darüber wie wichtig diese Updates sind.
Fail2ban einrichten
Mit Fail2ban kann man seinen Server hinsichtlich Brute Force Attacken absichern. Fail2ban kann dabei für viele verschiedene Dienste verwendet werden. Zunächst installiert man das Tool über:
sudo apt-get install fail2ban
Nach der Installation findet man die folgende Datei: /etc/fail2ban/jail.conf. Als erstes kopiert man diese und ändert dabei den Namen auf jail.local. Jetzt kann man diese bearbeiten und z.B angeben wie lange eine IP-Adresse nach einer bestimmten Anzahl an fehlgeschlagenen Anmeldeversuchen gesperrt werden soll. Sofern man Änderungen vornimmt, muss man natürlich den Dienst auch wieder neu starten.
/etc/init.d/fail2ban restart
Nicht benötigte Dienste abschalten
Alles was nicht unmittelbar für den Betrieb benötigt wird, sollte deaktiviert werden. Darunter fällt u.a. z.B. der vsftpd Dienst oder auch phpmyadmin. Man sollte den Grundsatz bedenken:
Je mehr läuft umso mehr Angriffsfläche bietet mein Server.
wp-login.php per Apache absicheren
Die Login Seite von WordPress ist natürlich die wichtigste Seite überhaupt. Aus diesem Grund sollte sir auch gut geschützt werden. Sinnvoll ist es auf jeden Fall, dass man den Zugriff darauf so sicher wie möglich gestaltet. Im Apache gibt es die Möglichkeit Verzeichnisse speziell zu schützen, so dass sie nur nach erfolgreicher Authentifizierung geöffnet werden können. Die Konfiguration erfolgt dabei in den einzelnen vhosts.
<Directory "var/www/webseite.de/wp-login.php" AuthType Basic AuthuserFile /var/www-zugang/passwords.pwd AuthName webseite.de Require user chef AllowOverride Fileinfo </Directory>
In dem obigen Beispiel wird also zum öffnen der Datei wp-login.php der Benutzer chef benötigt. Sein Passwort liegt dabei in der Datei passwords.pwd. Bevor jemand das Login File zu Gesicht bekommt, muss er sich erst am Apache Server Authentifizieren. Dies stellt auf jeden Fall einen weiteren Zugriffsschutz dar. Übrigens kann man so eine Absicherung auch über die httaccess Datei vornehmen.
Fazit
Wie ersichtlich gibt es doch einige Konfigurationen, auf welche man acht geben sollte um den Rootserver sicherer zu machen. Gerade die einfachen Dinge wie z.B. das Verbergen der Versionen wird doch immer leicht vergessen. Solltet ihr noch Ideen haben, welche hier eurer Meinung unbedingt dazu gehören, so gebt mir doch einfach bescheid und ich nehme diese in den Artikel mit auf.










