Absichern eines Linux Servers

Linux, Apache2 und NGINX

Server absichern

Immer wieder werde ich gefragt, ob man überhaupt einen Server überhaupt absichern muss. Die Antwort ist definitiv Ja. Egal ob für Größere Projekte oder einfach nur wenn er als Teamspeak Server genutzt wird. Problematisch ist auch, das Ihr, als Serverbesitzer für Schäden haftbar gemacht werdet. Egal welche Größe der Server nun hat, ist er nicht ausreichend gesichert, kann  ein Angreifer Schadprogramme installieren, Spam-Attacken starten, Daten anzapfen oder Hintertüren für spätere Zugriffe einrichten und vieles mehr.

Es bleibt bei einem Einbruch nichts anderes übrig, als das System oder den Server komplett neu einzurichten. Wer ein aktuelles Backup hat, darf sich erst mal freuen.

Logs Analysieren, nachforschen woher oder was den Angriff verursacht hat, Lücken beseitigen und Einspielen des Backups. Dies alleine kann je nach Größe schon einige Tage in Anspruch nehmen.

Wer kein aktuelles Backup hat, der hat dementsprechend einen erheblich Größeren Zeitaufwand.

Tut euch also selber einen gefallen, und sichert euren Server dementsprechend ab. Das wichtigste zu SSH und Webserver werde ich hier durch gehen. Nach und Nach werde ich diesen Artikel erweitern.

Shell absichern (SSH)

Auch wenn gesagt wird, den SSH Port zu ändern würde nichts bringen, den wer will bekommt Ihn auch raus, so verhindert dies alleine schon Hintergrundrauchen und hält die Serverlogs kleiner. Den ein Angriff auf den Standard Port 22 kann schnell die Logs zumüllen so das ein späteres zurechtfinden schwierig wird. Es hilft aber auch gegen Brute-Force Angriffe. Mit einer automatischen Passwort-Suche auf den bekannten Port 22 kann man so lange auf den Server “einhämmern” bis man Zugriff erlangt.

Öffnen wir nun auf unseren Server die Datei

/etc/ssh/sshd_config

und suchen die folgenden Part

Port 22

Dies ändern wir auf Port XXXX wobei XXXX ihr definieren könnt. Der Wert muss aber über 1023 liegen da bis dort Ports liegen welche fest vergeben sind.

Jetzt starten wir den SSH neu und prüfen ob wir über den neuen Port Zugriff erhalten

/etc/init.d/ssh restart

root Login verbieten

Es empfiehlt sich den root Login zum Server zu sperren. Das hat den Vorteil das nicht nur 1 User, sondern gleich 2 User benötigt werden um root Zugang zum Server zu erlangen.

Man meldet sich mit den “normalen” Benutzer an und erlangt anschließend über den Befehl su root Root Zugang.

Wir legen uns erst mal einen neuen User Names newhost an.

adduser newhost

und werden direkt aufgefordert ein Passwort zu vergeben. Die anderen Daten können, müssen aber nicht ausgefüllt werden.

adduser

Wir öffnen nun die Datei /etc/ssh/sshd_config und sperren den root Zugang. Dazu stellen wir folgenden Parameter auf no

PermitRootLogin no

Jetztstarten wir den SSH dienst neu und öffnen eine zweite Console und versuchen uns über den User root und newhost einzuloggen.

/etc/init.d/ssh restart

Nun solltet Ihr nur noch über den User newhost Zugang bekommen. Mit dem Befehl su root erhaltet Ihr root Zugriff.

Webserver absichern

Durch Anzeige des eingesetzten Webservers wie Apache, NGINX oder andere und der Versionsnummer des Dienstes hat ein Angreifer schon Informationen darüber welche Schwachstellen es in der Version gibt.

apache

Dies wollen wir verhindern. Dafür gehen wir an die Apache conf Dataien.

Apache Absichern

Wir öffnen die Datei /etc/apache2/conf-enabled/security.conf und passen folgende Werte an.

ServerTokens Prod
ServerSignature Off
TraceEnable off

Der Wert ServerSignature Off schaltet die Server Signatur aus.
Der Wert ServerTokens bestimmt die Art der Serversignatur, Full gibt alles aus und Prod die wenigsten Informationen.
TraceEnable off wird für Test- und Diagnoseanfragen im Proxymodus gebraucht. Für uns also nicht brauchbar, somit können wir es auch abschalten.

Da wir auch keinen Inhalt ausgeben lassen wollen wenn mal keine index.htm oder php zur Verfügung steht, stellen wir das auch aus- Dazu öffnen wir die /etc/apache2/apache2.conf und Suchen folgenden Abschnitt

	
	Options Indexes FollowSymLinks
	AllowOverride None
	Require all granted

Vor das Indexes setzen wir ein –

	
	Options -Indexes FollowSymLinks
	AllowOverride None
	Require all granted

Somit werden keine Dateien oder Ordner mehr aufgelistet.

Jetzt starten wir den Apache neu.

/etc/init.d/apache2 restart

NGINX absichern

Auch den NGINX Webserver können wir absichern. Dazu öffnen wir die /etc/nginx/nginx.conf und passen folgenden Teil an

server_tokens off;

Damit wird verhindert das die Serverversion angezeigt wird.

Nun starten wir ihn neu

/etc/init.d/nginx restart

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.