Schlagwort-Archive: Härten

MySQL Server Absichern

Oft gewünscht – bei MySQL vorhanden: Das mach mich sicher Skript! Um einen MySQL server im ersten Schritt abzusichern gibt man als root folgenden Befehl ein:

Danach folgen eine Handvoll Fragen die natürlich mit dem MySQL-root-Benutzer anfangen:

image

image

image

image

image

Hat man die Fragen alle richtig beantwortet, so sind die Testdaten und Zugänge aus dem System entfernt, der root Benutzer abgesichert und die entsprechenden Privilegien richtig gesetzt. Zusätzlich empfehle ich den Datenbankport nicht auf der Firewall freizuschalten damit ganz sicher keiner von außen auf das System kommt. Wie man das mit Hilfe von iptables macht erkläre ich hier.

Debian Webserver – Einstellungen für die Mailzustellung (MTA)

Ein Webserver soll in aller Regel auch die Fähigkeit besitzen eMails zu senden. Ich bin ein großer Freund davon diese Systeme zu trennen und auf den Webservern den MTA (in unserem Fall exim4) so einzustellen, dass er ausgehende Mails an einen dedizierten Webserver (Smarthost) zum Versand weiter gibt. Auf diesem Weg umgeht man zum einen die Komplexität der umfänglichen Konfiguration eines Mailserver und zum anderen muss man sich nicht mit Problemen wie SPAM-listen etc. herumschlagen. Auf unserem System starten wir die Konfiguration wie folgt (vorausgesetzt exim4 ist schon installiert – sonst muss man dies mit apt-get install exim4 noch erledigen):

SNAGHTMLa8d3bfdimage image image image image image image

Nach der Grundkonfiguration von exim müssen wir noch die Zugangsdaten für unseren Smarthost hinterlegen (heute sollte es keinen offenen Mailserver mehr geben – und wenn steht er mit Sicherheit auf allen SPAM listen und sollte nicht verwendet werden). Hierzu fügen wir in der Konfigurationsdatei /etc/exim4/passwd.client unsere Zugangsdaten ein:

Da mein Mailserverprovider noch immer auf SSL (Port 465) setzt und noch kein STARTSSL (Port 587) anbietet, muss ich EXIM noch beibringen sich auch entsprechend mit dem Server zu verbinden. Dies erledigt man in der Konfigurationsdatei /etc/exim4/exim4-conf-template. Dort sucht man nach dem String (der Doppelpunkt am Ende ist wichtig):

remote_smtp_smarthost:

und fügt danach folgendes ein:

SNAGHTMLac113d7

Mails an den Root Benutzer weiterleiten

Es gibt diverse Services (z. B. cron) welche Nachrichten an den root-Benutzer des Systems schicken. Um diese Nachrichten in angemessener Zeit verarbeiten zu können ist es ratsam diese an eine Mailadresse weiterzuleiten

in diese Datei fügt man die Zeile:

ein und lässt danach die Aliase neu erstellen

Nun sollten die Maileinstellungen des Server vollständig funktionsfähig sein und ausgehende Mails (z. B. von einem Blog-System oder cron) an die dafür vorgesehenen Adressen versendet werden.

Kernel für einen Webserver härten

Die Standards der meisten Debian Vorlagen von Hostern enthalten oft schon einige Verbesserungen der Sicherheitseinstellungen. Es schadet aber nicht diese zu prüfen und ggf. zu justieren. Der einfachste Weg besteht dabei darin eine Kopie der Konfigurationsdatei sysctl.conf zu erstellen und dort die eigenen Einstellungen zu hinterlegen (so behält man immer die Standards und bekommt keine Probleme bei Systemupdates):

In der kopierten Datei sollten folgende Werte (fett) angepasst bzw. auskommentiert werden. Die Beschreibungen über den Werten selbst sind recht aussagekräftig. Ich verzichte jetzt mal dies alles zu wiederholen:

SSH-Zugang Absichern und Härten

Normalen (nicht root) Benutzer anlegen

Bevor wir uns um das Absichern/Härten des SSH Zugangs kümmer können ist es wichtig einen regulären Benutzer auf dem System anzulegen. Dies erledigt man auf der Kommandozeile mit folgendem Befehl:

SSH Schlüssel erzeugen und einbinden

Als nächsten Schritt legen wir uns einen private und einen public-key an um diesen für die Anmeldung via ssh verwenden zu können. Passwörter sind schon lange nicht mehr wirklich sicher und die Verwendung von solchen keys ist zudem deutlich praktischer als die Verwendung von vermeintlich sicheren Passwörtern. Die Schlüssel erstellen Sie entweder über die Linux Kommandozeile oder über das Windows tool Putty Key Generator.

Den Private-Key schützt man auf seinem lokalen System am besten weiterhin mit einem Passwort und speichert ihn an einem sicheren Ort. Der Schlüssel sollte nach Möglichkeit wirklich privat sein und nicht aus den Händen gegeben werden. Den Public-key zu veröffentlichen ist dagegen kein wirkliches Problem (wie der Name schon impliziert).

Hier fügen wir nun den public key zu dem Schlüsselpaar welches wir gerade erstellt haben ein.
Danach fügen wir den neu angelegten Benutzer der Gruppe sudo hinzu damit dieser sich jederzeit via sudo root Rechte besorgen kann.

Sollte sudo noch nicht installiert sein so erledigt dies ein:

Wenn ihr für die Benutzer der Gruppe sudo nicht wollt, dass diese ein Passwort eingeben müssen um sich root Rechte zu besorgen, dann erreicht man dies über folgende Zeile in der /etc/sudoers (Änderungen an dem file über visudo!)

Härten der SSH-config

An sich sollte sich ein root-Benutzer nie direkt remote an einem System anmelden können und auf einem Server benötigt man auch keine grafische Oberfläche (X11). Ich poste nachfolgend meine sshd-config mit allen Werten (die geänderten fett gedruckt). Je nach System und Version müssen ggf. mehr Werte angepasst werden um zu dieser Konfiguration zu kommen. Die Änderungen an der Konfiguration müssen mit root-Rechten und folgendem Befehl durchgeführt werden:

Damit die Einstellungen wirksam werden muss der SSH Dienst neu gestartet werden. Dies erreicht man mit dem Befehl:

Damit sind die Grundlagen für einen sicheren SSH-Zugang zu dem eigenen Server gelegt.