Grundlegende Serveradministration

Aus EUserv Wiki

Wechseln zu: Navigation, Suche

Grundlegende Serveradministration

Inhaltsverzeichnis

Grundlegende Serveradministration

Die Inhalte des nachfolgenden HowTos wurden sorgfältig auf ihre Richtigkeit hin geprüft. 
Dennoch übernehmen wir keine Haftung für Schäden, die aufgrund der Verwendung dieses HowTos 
entstehen.

In diesem HowTo zeigen wir Ihnen, wie die grundsätzliche Administration und Sicherung Ihres Servers bzw. vServers ablaufen kann. Die Administration eines Servers unterscheidet sich grundlegend von der Administration eines „gewöhnlichen“ PC's mit graphischer Benutzeroberfläche (wie z.B. Windows). Zwar gibt es graphische Oberflächen wie beispielsweise Plesk/Confixx oder SysCP zum Verwalten von Domains und Mail-Adressen auf dem Server, viele Tasks (z.B. Sicherung von Dateien, Programminstallationen) können aber nur in einer Kommandozeile (auch „Shell“ genannt) durchgeführt werden. Nachfolgend sehen Sie die grundsätzlichen Schritte, die nötig sind, sobald Ihr Server bestellt und erfolgreich bereitgestellt worden ist.

Wahl des Betriebssystems

Loggen Sie sich ins Kundencenter ein und wählen Sie ein Betriebssystem aus, das auf dem Server installiert werden soll. Wählen Sie dazu Ihren Server-Vertrag aus und gehen Sie auf „Initialisieren".Entscheiden Sie sich nun für ein Betriebssystem, z.B. „Debian 5.0r5 SysCP 64 Bit“. Damit wird ein Debian-Linux mit einem graphischen Admin-Interface (SysCP) installiert. Wenn das Betriebssystem installiert worden ist, können Sie unter „Serverdaten“ Ihre Zugangsdaten einsehen. Wichtig für die Serveradministration sind zunächst nur die „Haupt IP-Adresse“ sowie das „Default-Passwort für SSH oder Webpanel (admin/root)“. Nachfolgend erfahren Sie, wie Sie mittels SSH auf Ihren Server zugreifen können. SSH steht für „Secure Shell“ und stellt ein Netzwerkprotokoll dar, mit dem gesicherte Verbindungen zu entfernten Rechnern hergestellt werden können.

Zugriff auf den Server - SSH

Um mit SSH auf Ihren Server zugreifen zu können, benötigen Sie ein entsprechendes Programm. Für Windows-User empfiehlt sich „PuttY“, welches unter www.putty.org heruntergeladen werden kann. Die Konfiguration von PuttY ist in wenigen Schritten erledigt:

Starten Sie PuttY. Bei Host Name or IP address tragen Sie die IP-Adresse (eine Zahlenfolge, die Ihrem Server eindeutig zugeordnet ist) aus dem Kundencenter ein (siehe oben). Sofern nicht voreingestellt, tragen Sie bei Port eine 22 ein. Klicken Sie nun auf Open, um die Verbindung herzustellen. Beim allerersten Verbindungsaufbau erscheint ein Fenster, das Sie fragt, ob Sie dem digitalen Schlüssel des entfernten Rechners vertrauen. Bestätigen Sie hier mit Ja. Hinweis: wenn Sie Linux statt Windows benutzen, öffnen Sie ein Terminal und geben dort folgendes ein:

ssh root@<Ihre IP-Adresse>

Nun sollten Sie ein Konsolenfenster sehen, dessen einziger Inhalt „login as:“ ist. Hier geben Sie root ein (der Benutzername der in Ihren Serverdaten angezeigt wird). Als nächstes werden Sie nach dem Passwort gefragt. Geben Sie hier das Default Passwort aus den Serverdaten ein. Falls Sie sich wundern, dass die Passworteingabe nicht sichtbar erfolgt: dies geschieht aus Gründen der Sicherheit. Sofern Sie alle Daten korrekt eingegeben haben, sollten Sie nun auf Ihrem Server eingeloggt sein. Dies erkennen Sie daran, dass die Befehlszeile nun mit root@<Ihre IP-Adresse> beginnt und eine entsprechende Botschaft anzeigt (z.B. „Welcome to Debian GNU/Linux“ o.ä.).

Nun sollten Sie zu Ihrer eigenen Sicherheit einen neuen User anlegen. Dies sollte unbedingt geschehen, da es auf Dauer zu leichtsinnig ist, den Server als „root“ zu administrieren. Seinen Grund hat dies in der Rechteverwaltung von Linux, in der verschiedene User verschiedene Zugriffsrechte haben (Datei lesen/schreiben/ausführen). Der root-User hat den vollen Zugriff auf das System und kann somit schwerwiegende und zum Teil irreparable Eingriffe in das System vornehmen – denkbar wäre beispielsweise, dass Sie als root versehentlich wichtige Daten löschen etc. Damit dieses Risiko minimiert wird, werden wir jetzt 2 Dinge tun. Zuerst legen wir einen neuen User an und anschließend deaktivieren wir die Möglichkeit eines Root-Logins.

Zu 1.) Geben Sie folgenden Code ein, um einen neuen User anzulegen:

useradd -g users -d /home/USER -s /bin/bash USER

(statt USER geben Sie einen frei wählbaren Namen ein)

Nun setzen Sie noch ein Passwort für den neuen User, indem Sie folgendes eingeben:

passwd USER

(statt USER geben Sie den Namen des eben erstellten Benutzers ein) Sie werden nun aufgefordert, ein Passwort zu vergeben sowie dies noch einmal zu bestätigen. Sie können sich nun, wie vorhin beschrieben, beim nächsten SSH-Login statt root und Ihrem Server-Passwort mit dem neuen Usernamen und dem dazugehörigen Passwort anmelden.

Nun wollen wir noch verhindern, dass der Login als root möglich ist. Dazu geben wir folgendes ein:

nano /etc/ssh/sshd_config

Suchen Sie mit den Pfeiltasten die Zeile PermitRootLogin = yes und ändern Sie yes auf no. Die Änderungen speichern Sie mit Strg+O, danach drücken Sie Strg+X, um den Editor zu schließen. Um die Änderungen zu übernehmen, ist noch ein Neustart von SSH vonnöten. Geben Sie dazu folgendes ein und bestätigen Sie durch Drücken von Enter:

/etc/init.d/sshd restart

Der Login als Root-User ist nun nicht mehr möglich. Um zu prüfen, ob die Änderung erfolgreich übernommen wurde, öffnen Sie ein zusätzliches PuttY-Fenster (das alte lassen Sie bitte geöffnet) und versuchen, sich als root mit Ihrem Server-Passwort anzumelden. Wenn dies fehlschlägt, war die Konfiguration erfolgreich. Wiederholen Sie diese Prozedur, indem Sie sich mit den Daten des neuen Users anmelden. Gelingt dies, ist die Konfiguration ebenfalls erfolgreich verlaufen. Sollten bestimmte Aktionen dennoch root-Rechte erfordern, können Sie dies innerhalb der SSH-Sitzung mit

su root

erreichen. Wollen Sie zu Ihrem „normalen“ Benutzer zurückwechseln, geben Sie

exit

ein. Um die SSH-Sitzung komplett zu beenden, geben Sie anschließend

logout

ein.

SSH-Sicherheit

Ändern des Standardports

Um Ihren Server bis zu einem bestimmten Grad gegen unbefugten Zugriff abzusichern, besteht die Möglichkeit, den Standardport von SSH (22) auf einen anderen Port umzulegen sowie den Zugriff nach mehrmaliger Falscheingabe des Passworts zu unterbinden.Das Ändern des Standardports ist folgendermaßen möglich: Loggen Sie sich wie oben beschrieben mit PuttY oder dem Terminal auf Ihren Server ein und geben Sie anschließendes folgendes ein:

nano /etc/ssh/sshd_config

Suchen Sie mit den Pfeiltasten nun nach folgender Zeile:

Port 22

An dieser Stelle können Sie den Port nun ändern. Achten Sie hier darauf, keinen Systemport (0-1023) zu vergeben, da diese meist von anderen Systemdiensten benutzt werden. Denkbar wären hier User Ports im oberen Bereich (oberhalb 40000) bzw. Dynamic Ports (49152–65535). Wenn Sie den Port geändert haben, stellen Sie bitte sicher, dass die Zeile

Protocol 2

vorhanden ist. Speichern Sie nun mit Strg+O und schließen den Editor mit Strg+X. Starten Sie nun den SSH-Server neu:

/etc/init.d/ssh restart

Wenn Sie sich von der SSH-Sitzung abmelden, können Sie sich das nächste Mal unter Linux mit folgendem Befehl anmelden:

ssh -p <PORT_NUMMER> <USER>@<SERVER_IP>

Falls Sie PuttY benutzen, passen Sie den Port in den Verbindungseinstellungen an (wie oben beschrieben).

Beachten Sie bitte, dass das Umlegen des SSH-Ports keinen absolut zuverlässigen Schutz darstellt, da mit sogenannten „Port-Sniffern“ der neue SSH-Port auch ausfindig gemacht werden könnte. Außerdem sollten Sie sich natürlich den neuen Port sowie Ihr Passwort grundsätzlich merken.

Blockieren von Brute-Force-Angriffen

iptables

Eine bestimmte Methode, Passwörter zu knacken, stellt ein Brute-Force-Angriff dar. Hacker versuchen durch das massenhafte Austesten verschiedener Passwortkombinationen, an Ihr Passwort zu gelangen. Um solche Angriffe abzuschwächen, kann man mit der Linux-Firewall

iptables

beispielsweise folgende Regeln aufstellen (Eingabe in PuttY bzw. Terminal):

iptables -N ssh_block
iptables -A INPUT -p tcp --dport 22 -s <IHRE_IP> -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ssh_block
iptables -A ssh_block -m recent --set --name SSH
iptables -A ssh_block -m recent --update --seconds SEKUNDEN --hitcount ANZAHL --name SSH -j DROP
/etc/init.d/iptables save
/etc/init.d/iptables restart 

Das Ausführen dieser Befehle bewirkt, dass Sie sich nur von der bei <IHRE_IP> angegebenen IP-Adresse an Ihrem Server mit SSH einloggen können. Außerdem werden innerhalb der unter SEKUNDEN gesetzten Zahl nur ANZAHL neue Verbindungsversuche zugelassen.

DenyHosts

DenyHosts ist ein in Python geschriebenes Tool, welches Login-Versuche über SSH auf Ihren Server überwacht. Wenn dieses Programm mehrmalige fehlgeschlagene Login-Versuche von der gleichen IP-Adresse aufspürt, blockiert DenyHosts weitere Login-Versuche dieser IP-Adresse, indem es sie in der Datei /etc/hosts.deny einträgt. DenyHosts kann als Cronjob oder Daemon ausgeführt werden. In dieser Anleitung wird DenyHosts als Daemon ausgeführt.

DenyHosts wird durch den folgenden Befehl installiert:

Ubuntu/Debian:

 apt-get install denyhosts

CentOS 6:

 sudo rpm -Uvh http://mirror.metrocast.net/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
 sudo yum install denyhosts

Nachdem das Programm heruntergeladen wurde, wird DenyHosts auf Ihrem Server installiert, konfiguriert und als Daemon gestartet. Stellen sie danach sicher, dass Ihre eigene IP-Adresse erlaubt wird. Wenn Sie diesen Schritt überspringen, besteht das Risiko, dass Sie sich selbst auf Ihren eigenen Server blocken.

Erstellen Sie dazu eine Liste mit den erlaubten Hosts auf Ihrem Server, indem Sie die folgende Datei bearbeiten:

 nano /etc/hosts.allow

Fügen Sie hier unter der Beschreibung jede IP-Adresse ein, welche von DenyHosts erlaubt werden soll. Sie können jede IP-Adresse in einer Zeile mit dem folgenden Format einfügen:

 sshd: xx.xx.xx.xx

Nachdem Sie die Änderungen vorgenommen haben, stellen Sie sicher, dass Sie DenyHosts neustarten, damit die Änderungen wirksam werden:

 /etc/init.d/denyhosts restart

Wenn Sie das Verhalten von DenyHosts auf Ihren Server ändern möchten, können die Änderungen in der Konfigurationsdatei mittels folgenden Befehls vornehmen:

 nano /etc/denyhosts.conf

Die Datei /etc/deny.hosts wächst in der Standardkonfiguration kontinuierlich. Jedoch kann in der Konfigurationsdatei von DenyHosts /etc/denyhosts.conf festgelegt werden, dass IP-Adressen in der Liste von /etc/deny.hosts nach einer definierten Zeitspanne wieder gelöscht werden. Dazu kann z.B. die Option PURGE_DENY = 1d festgelegt werden. Somit wird die Zeitspanne auf einen Tag gesetzt. Mit der Option DAEMON_PURGE = 1d veranlasst man, automatisch einmal täglich den Löschprozess auszuführen.

Update der Paketquellen

Damit Ihr System bzgl. verfügbarer Software auf dem neuesten Stand bleibt, sollten Sie die Paketquellen Ihres Betriebssystems aktualisieren. Dies geschieht, in Abhängigkeit von der jeweiligen Linux-Distribution, mit den folgenden Befehlen:

Ubuntu/Debian/Proxmox:

aptitude update          [Aktualisiert die Paketquellen]
aptitude upgrade         [Aktualisiert das gesamte System]
aptitude install <paket> [Installiert das gewünschte Paket]

CentOS, FedoraCore

yum update          [Aktualisiert die Paketquellen]
yum install <paket> [Installiert das gewünschte Paket]

OpenSuSE

zypper up            [Aktualisiert bereits installierte Pakete]
zypper up -t package [Installiert alle verfügbaren Updates] 

Daten sichern mit rsync und scp

Da Sie für die Sicherung Ihrer Daten selbst verantwortlich sind, sollten Sie regelmäßig Backups durchführen. In diesem Fall gehen wir davon aus, dass Sie bestimmte Daten vom Server auf Ihrem Heimrechner sichern wollen. Der Befehl rsync synchronisiert den Inhalt eines entfernten Ordners mit dem Inhalt eines lokalen Ordners. Angenommen, das Verzeichnis /home/backup auf Ihrem Server soll gesichert werden. Folgender Befehl sichert das Verzeichnis, löscht lokal unter /home/benutzer/sicherung alle Dateien, die seit der letzten Sicherung in /home/backup gelöscht worden sind und speichert gelöschte und veränderte Daten in einem zusätzlichen Backup-Verzeichnis /home/benutzer/last_backup:

rsync --delete -avzbe ssh benutzer@ServerIP:/home/backup \
/home/benutzer /sicherung --backup-dir=~/last_backup

Wenn Sie einzelne Dateien oder Verzeichnisse kopieren möchten, können Sie den Befehl scp („Secure Copy“) verwenden. Der Aufruf gestaltet sich recht einfach. Starten Sie PuttY (bzw. unter Linux ein Terminal) und geben folgendes ein:

scp <User>@<ServerIP>:/pfad/zur/datei /zielpfad/lokaler/rechner

bzw. für das Kopieren von Verzeichnissen:

scp -r <User>@<ServerIP>:/pfad/zur/datei /zielpfad/lokaler/rechner

Für <User> und <ServerIP> setzen Sie natürlich die entsprechenden Daten ein.

Externe Links

Fail2ban: http://blog.check-and-secure.com/fail2ban-effektiver-schutz-gegen-cyber-attacken-auf-server/