Im 2. Artikel beschreibe ich die ersten Schritte des neuen Webservers sowie die Einrichtung des SSH Dienstes, mit welchem ich den Server über einen Anderen PC administrieren kann. I.d.R. stehen die Webserver nicht zuhause im Büro sondern in Rechenzentren. Eine entfernte Administration ist somit unumgänglich.
Die Beschreibung basiert auf dem Debian Webserver Installation Artikel.

BITTE BEACHTEN!
DIESER ARTIKEL BESCHREIBT U.A. WIE MAN DEN SSH DIENST ETWAS SICHERER MACHT. ER IST JEDOCH KEINE GARANTIE, DASS DER DIENST ODER GAR DER GESAMTE SERVER UNANGREIFBAR WIRD! ER SOLL LEDIGLICH EINIGE BASISINFORMATIONEN LIEFERN! FÜR SCHÄDEN JEGLICHER ART ÜBERNEHME ICH KEINE HAFTUNG!

Allgemeine Einstellungen

Startet euren virtuellen Server und logt euch am Besten als ROOT User ein, da wir nun ein paar allgemeine Einstellungen vornehmen werden.

Als ersten Schritt bearbeite ich meine Paketquellenliste. Der VI Editor sollte normal bereits installiert sein. Wie Ihr ihn bedient, könnt Ihr u.a. HIER sehen.

	vi /etc/apt/sources.list

Hier seht ihr die Quellen, welche ich eingebunden hab. Ich habe ebenso die Sicherheitsupdates von Debian eingetragen.

	#deb cdrom:[Debian GNU/Linux 6.0.2.1 _Squeeze_ - Official amd64 DVD Binary-1 20110626-16:33]/ squeeze contrib main
deb http://ftp.debian.org/debian/ squeeze main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb http://ftp.debian.org/debian/ squeeze-updates main contrib non-freemain

Wenn ihr die Datei speichert, könnt ihr im nächsten Schritt die Quellen neu einlesen, sowie das System grundsätzlich mal aktualisieren.

	apt-get update
apt-get upgrade

Diese Befehle werden euch über die komplette Einrichtung und auch spätere Administration verfolgen. Mit UPDATE aktualisiert ihr also immer Eure Listen, damit ihr mit UPGRADE eure Pakete aktualisieren könnt. Sofern neuere Versionen verfügbar sind, müsst ihr vor der eigentlichen Aktualisierung noch mit Ja bestätigen.

Anschließend können wir ein paar zusätzliche Pakete installieren. In meinem Beispiel sind NTP und NTPDATE dafür zuständig, dass die Serverzeit automatisch über das Internet aktualisiert wird. Mit MC installier ich den Dateimanager Midnight Commander und mit OPENSSH-SERVER den SSH-Dienst, welchen ich in diesem Artikel dann näher beschreiben möchte.

	apt-get ntp ntpdate mc openssh-server

Mit Ja werden die Dienste installiert. Der SSH sollte dann auch gleich gestartet werden. Sicherheitshalber könnt ihr mit:

	/etc/init.de/ssh status

nachsehen, ob der Dienst auch wirklich läuft.

Das Auswahlmenü beim Starten des Servers, benötigen wir eigentlich nicht. Wenn wir fernwarten, kostet er bei jedem Start nur unnötig die 5 Sekunden Wartezeit. Deshalb setzen wir die Wartezeit auf 0 Sekunden: (ich verwende aus Gewohnheit VI als Editor. Ihr könnt aber auch einen anderen verwenden)

	vi /boot/grub/grub.cfg

Hier ändert Ihr die Zeilen:

	set timeout=5
in
set timeout=0

Nun können wir uns einfach mal vom Client Rechner auf den Server einloggen. Startet hierzu eure Konsole.

	ssh root@SERVERIP

So könnt ihr euch mit dem Benutzer ROOT auf dem Server einloggen. Die IP Adresse bekommt ihr, wenn ihr auf dem Server den Befehl IFCONFIG eingebt.

Beim ersten Login, müsst ihr noch dem Server mit JA vertrauen. Anschließend noch das Passwort eingeben und der Begrüßungsbildschirm sollte erscheinen:

	Linux vs-debian 2.6.32-5-amd64 #1 SMP Thu Nov 3 03:41:26 UTC 2011 x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

Diesen wollen wir nun auch gleich umstellen, da hieraus für einen möglichen Angreifer schonmal hilfreiche Informationen herausgehen.

Wie Ihr Konfigurationsdateien aufruft, sollte von den vorherigen Aufrufen bereits bekannt sein. Der Begrüßungstext steht in /etc/motd. Ich lösche hier einfach alles heraus und schreibe stattdessen einfach nur "Welcome..."

So nun wollen wir den SSH Dienst etwas sicherer machen. Im Gegenzug zum TELNET Befehl, ist zwar SSH von sich aus schon sicherer, dennoch sind bereits jetzt schon 2 Fakten offensichtlich, welcher Jedermann innerhalb kürzester Zeit ergoogeln kann. 1. der Port, auf welchem der SSH Dienst standardmäßig läuft (22) und 2. dass vor allem Linux Systeme einen standard Benutzer (ROOT) haben. Die IP eures Servers ist ja sowiso kein Hindernis, da ja eure Webseite später erreichbar sein soll und alleine mit einem PING die IP ermittelt werden kann.

Insofern sind 3 von 4 notwendige Daten bekannt. Server-IP, Port und Benutzer. Es fehlt lediglich noch das Passwort.

In meinen nächsten Schritten, verlege ich den Port des Dienstes auf einen anderen, als den 22er. Es ist sinnvoll, keine Portnummern <1023 zu verwenden, da diese sog. Well Known Ports von der IANA bestimmten Applikationen zugewiesen sind. Die Ports 1024 bis 49151 sind sog. Registered Ports, welche wir für eigene Protokolle verwenden können. Um nun auf unsere 16Bit zu kommen, gibt es von 49152 bis 65535 noch die sog. Dynamic bzw. Private Ports, die keiner Anwendung gehören und variabel gesetzt werden können. Ich wähle einfach mal einen Port im 20000er Bereich. Ich denke es ist nachvollziehbar, dass 5 Zahlen besser sind als 4.

Ein wichtiger Schritt an dieser Stelle ist das Anlegen eines neuen Benutzers. Ansonsten würdet ihr euch mit der Änderung, dass Root keinen Zugriff hat, selbst aussperren.

useradd -g users -d /home/EUERBENUTZER -s /bin/bash EUERBENUTZER
passwd EUERBENUTZER

Hier legen wir den neuen Benutzer an und geben ihm ein Passwort.

Nun Ändern wir die SSH Konfiguration, welche unter /etc/ssh/sshd_config zu finden ist:

	Port XXX
PermitRootLogin no

Hier setze ich meinen Port und verbiete auch gleich dem User ROOT sich einzuloggen. Um den Dienst neu zu starten reicht ein:

	/etc/init.d/ssh restart

Schließt eure Konsole bzw. loggt euch mit EXIT bzw. LOGOUT aus dem Server aus.

Mit obigen Befehl sollte nun keine Verbindung mehr zu dem Server möglich sein. Ihr müsst der Zeile jetzt natürlich auch den korrekten Port mitgeben, da der Befehl allein immer auf den Standardport 22 leitet.

	ssh root@SERVERIP -p PORT

Mit dem Root solltet Ihr so zumidnest zur Passworteingabe gelangen. Jedoch wird der Zugriff verweigert, denn ihr habt ja dem Root den Login gesperrt.

	ssh EUERBENUTZER@SERVERIP -p PORT

So solltet Ihr wieder auf euer System gelangen. Natürlich mit dem Passwort des Benutzers.
I.d.R könnt Ihr als normaler User nicht viel anfangen. Braucht ihr also wieder ROOT Rechte, könnt ihr diese mit SU und dem Root Passwort erlangen.

Nun ist der SSH-Dienst schonmal bisschen sicherer. Im nächsten Update werde ich euch noch aufzeigen, wie ihr Ausschließlich mit einem eigenen Schlüssel auf das System kommt und die Sache dann nochmal Sicherer macht.

 

Kommentar schreiben
Ich habe den Datenschutz gelesen. Ich stimme zu, dass meine Angaben und Daten zur elektronisch erhoben und gespeichert werden. Alternativ kann ich als Namen auch ein Pseudonym eintragen. Hinweis: Sie können Ihre Einwilligung jederzeit für die Zukunft per E-Mail an widerrufen.

Anzeige