SSH absichern

SSH

Der Root muss sich nicht per SSH einloggen können. Es ist besser, wenn sich nur Benutzer einloggen und hinterher zum Root machen. Um das zu ändern muss in der

der entsprechende Parameter von

auf

geändert werden. Das kann man entweder von Hand machen oder zu Übung mit sed:

Mit dieser Zeile wird die Originaldatei gesichert, der Parameter ersetzt und alles in eine neue Datei geschrieben. Diese neue Datei ersetzt dann durch Kopieren die Original-Datei. Hinterher sind folgende Dateien vorhanden:

so dass jederzeit auf die gewünschte Konfiguration gewechselt/zurückgesetzt werden kann.

Jetzt noch ein

damit die Konfiguration noch aktiv wird. Durch den Reload bleiben aktuell aufgebaute Sessions aktiv!

Grub absichern

Um sicherzustellen, dass ein Benutzer, der das System rebootet und Zugriff auf die Konsole hat, nicht einfach am Bootprompt

eingibt und sich damit eine Single-User-Shell erschleicht und einfach in das System einbrechen kann, sollte man den Bootprompt absichern. Nichts einfacher als das.

Zuerst sollte man sich einen md5-Hash für das Grub-Passwort erzeugen. Schön, dass Grub dafür gleich das entsprechende Werkzeug mitbringt:

Dazu also einfach den o.g. Befehl aufrufen, zwei Mal das gewünschte Passwort eingeben und man erhält einen md5-Hash, den Grub verwenden kann. Wer es gerne ausprobieren möchte, das Passwort ist „test“.

Jetzt zur Konfiguration. Die erfolgt in

Hier unter dem Bereich

folgende Zeile hinzufügen

Als MD5-Passwort-String ist der vorher generierte zu verwenden. Wie man der Beschreibung des Bereiches entnehmen kann, kann man das Passwort auch im Klartext setzen. Aber warum ein Sicherheitsrisiko eingehen, wenn es nicht notwendig ist.

Damit kann man die Boot-Prompt-Zeilen nicht mehr ohne Passwort editieren.

Schön und gut. Aber den Single-User-Modus, der automatisch von Grub immer mit eingerichtet wird kann immer noch gestartet werden. Um das zu verhindern, muss folgender Parameter geändert werden:

Von

auf

Damit muss dass Passwort auch für das Starten aller nicht-Default-Zeilen eingegeben werden.

Zum Schluss noch ein

damit Grub, die lockalternative-Direktive übernimmt.

Webserver absichern

Ein Apache-Webserver gibt standardmäßig auftretende Fehler auf der Webseite aus. Dass kann durch provozierte Aufrufe zur Preisgabe von unerwünschten Informationen wie

  • lokaler Verzeichnispfad des Webservers
  • Apache-Version
  • PHP-Version
  • Patchlevel von Apache2/PHP

führen.

Daher sollten diese Informationen auf Produktivsystem nicht öffentlich angezeigt werden.

PHP

Dazu muss man nur in der entsprechenden php.ini (hier: /etc/php5/apache2/php.ini) das Anzeigen der Fehler abschalten (Off).

Für den Administrator sind diese Fehler natürlich trotzdem wichtig. Daher sollte man das Logging der Fehler einschalten (On).

Die Fehlermeldungen werden in das error-Log der jeweiligen vHost- oder Standard-Konfiguration geschrieben.

Apache2

Auch der Apache2 kann noch etwas schweigsamer konfiguriert werden. Und damit das nicht so schwer fällt, ist es sogar schon vorbereitet.

Im Pfad „/etc/apache2/conf.d/“ existiert in Debian die Datei „security“. In dieser sind bereits die wichtigsten Einstellung vorhanden und müssen für Produktivsysteme nur noch aktiviert werden.

iptables personal firewall

Personal Firewall einrichten

Die angegebenen Werte sind nur Beispiel-Werte und müssen natürlich angepasst werden.

Hier mal eine Beispiel-Konfiguration:

Eigene Logdateien

Log-Präfix einstellen

Damit man die Logs, die iptables erzeugt, vom normalen syslog trennen kann, muss man die Logging-Einträge erst einmal eindeutig kennzeichnen. Dazu am besten eigene Ketten erstellen:

oder die vorhandenen anpassen:

Der entsprechende Präfix ist natürlich frei wählbar.

rsyslogd konfigurieren

Jetzt muss man nur noch eine entsprechende Konfigurations-Datei unter /etc/rsyslog.d/iptables.conf anlegen und folgende Zeilen einfügen:

Damit werden alle Einträge die „FW-ACCEPT: „, „FW-DROP: “ oder „FW-LAST-DROP: “ enthalten in separate Logdateien geschrieben. Man muss sich auch keine Gedanken um das Anlegen der Dateien machen. Das erledigt der RSyslog-Daemon bei dem obligatorischen Neustart von alleine:

Die letzte Zeile mit dem Inhalt „& ~“ bedeutet, dass diese Nachrichten nicht mehr in das Standard-Log geschrieben werden.

In neueren rsyslog-Versionen ist die Tilde „~“ deprecated, weshalb man sie ersetzen sollte. Die neue Schreibweise sieht so aus:

Logs rotieren

Damit die Logdateien nicht irgendwann die Festplatte zulaufen lassen, sollte auch eine entsprechende logrotate-Konfiguration nicht fehlen. Siehe Logrotate/iptables.