Kategorien
Betriebssysteme Infrastruktur Server

Serveradministration mit Webmin

Als NOVATREND Kunde kennst du das professionelle Paket cPanel von unseren Webhostings. In deiner persönlichen cPanel Installation bei NOVATREND ist alles individuell für dich eingerichtet und mit zahlreichen sinnvollen Zusatzfeatures kombiniert. Per Mausklick kannst du bequem dein Webhosting verwalten und wir sorgen im Hintergrund dafür, dass alles reibungslos funktioniert.

Wenn du einen dedizierten Server betreibst, aber kein cPanel benutzen möchtest, bietet sich Webmin an.

Webmin ist ein Open Source Projekt. Du kannst es auf deinem Server als Browser basierte Administrationsumgebung installieren. Diesen Verwendungszweck drückt auch bereits der Name des Projekts aus:
Web von World Wide Web und min von Administrator.

Wenn du Webmin nutzt, bist du natürlich immer noch dein eigener Administrator und musst dich eingehend mit dem Betriebssystem deines Servers und den Fähigkeiten und Hilfestellungen von Webmin beschäftigen. Aus diesem Grunde führt kein Weg an der offiziellen Webmin Dokumentation vorbei. Du findest sie auf http://doxfer.webmin.com/. Im besten Fall bist du in der Lage, alles was du mit Webmin machen kannst auch per Hand auf der Konsole zu erledigen. Webmin hilft dir, deinen Administrationsaufwand erheblich zu verkürzen. Für dich ist das eher ein „nice to have“ Feature, denn dir steht der User root und die Konsole zur Verfügung. Für deine Kunden und/oder Mitbenutzer des Servers ist es jedoch oft die einzige Art und Weise ihren Bereich des Servers verwalten zu können und somit ein „must have“.

Das Paket Webmin ist die Basisversion des Systems und hilft dir als Administrator eines Servers diesen zu verwalten. Wenn du den Nutzern auf deinem Server Administrationsmöglichkeiten geben willst, benötigst du zusätzlich das Paket Usermin.

Wenn du deinen Server als Shared Hosting Server aufbauen willst, benötigst du Virtualmin und/oder Cloudmin. Von Virtualmin und Cloudmin  gibt es jeweils eine freie Open Source Variante und eine Pro Version, für die Lizenzgebühren fällig werden. Die Pro Version entspricht dem Leistungsumfang von cPanel.

Nichtsdestotrotz ist es auch mit den kostenlosen Varianten möglich einen Server einfach zu verwalten.

Installation Webmin

Mein Testserver läuft mit Ubuntu 14.04. Um Webmin mittels Paketmanager installieren zu können, müssen die Installationsquellen angepasst werden, ein GPG Key geladen, die Installationsquellen aktualisiert und schließlich Webmin installiert werden.

Hier sind die notwendigen Befehle:

sudo sh -c 'echo "deb http://download.webmin.com/download/repository sarge contrib" > /etc/apt/sources.list.d/webmin.list'
wget -qO - http://www.webmin.com/jcameron-key.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install webmin

Webmin läuft danach mit einem selbst unterschriebenen Zertifikat auf Port 10,000. In meinem Fall also https://serverblogger.ch:10000. In allen Browsern erscheint eine entsprechende Zertifikatswarnung und du musst bestätigen, dass du wirklich auf die Seite zugreifen willst.

Webmin Anmeldung
Webmin Anmeldung

Nach der Anmeldung meldet sich Webmin mit den Systeminformationen

Webmin - Systeminformationen
Webmin – Systeminformationen

An dieser Stelle kann die eigentliche Arbeit beginnen. Abhängig vom Zweck des Servers können nun Programmpakete, wie beispielsweise ein LAMP Stack installiert und konfiguriert werden.

Usermin

Usermin ist ein Modul in Webmin. In der linken Seitenleiste gibt es dazu den Link un-used Modules – Usermin. Die Konfiguration wird angezeigt, aber es erscheint ein Hinweis, dass das Paket noch nicht installiert ist.

Webmin - Installation Usermin
Webmin – Installation Usermin

Ich installiere Usermin über die Paketverwaltung

sudo apt-get install usermin

Nach der Installation ist Usermin bereit!

Usermin Konfiguration
Usermin Konfiguration

Nun ist alles vorhanden, um Services, die du auf deinem Server anbietest, deinen Kunden zur Verfügung zu stellen.

Tip: Spätestens an dieser Stelle solltest du dich über die Konzepte und die Architektur von Webmin intensiver informieren. Einen guten (und freien) Einstieg in deutscher Sprache bietet nach wie vor das Webmin Kapitel des Debian Anwenderhandbuchs (Webbasierte Administration mit Webmin). Das Buch ist aus dem Jahr 2003 und Webmin war damals noch nicht so weit entwickelt wie heute. Die Grundkonzepte sind jedoch nach wie vor gültig.

Fazit

Webmin funktioniert einwandfrei und erleichtert tägliche Konfigurationsarbeiten an einem Server. Die Einrichtung der angebotenen Services für den Mehrbenutzerbetrieb setzt allerdings know how außerhalb von Webmin voraus.

Links


tl;dr: Mit Webmin es ist möglich, allen Benutzern eines dedizierten Servers eine Browser basierte Administration zur Verfügung zu stellen.

Kategorien
Betriebssysteme

Wie ausgelastet ist mein Server? Von Zombies und Waisen

Ihr Root-Server ist manchmal mehr und manchmal weniger ausgelastet. Verglichen mit der Dampflokomotive im Bild ist es gar nicht so einfach zu sagen, wie ausgelastet das System nun ist. Bei der Lokomotive sieht man den Dampf, bei Ihren PC zuhause hören Sie vielleicht den Lüfter surren, aber bei einem Root-Server in einem Rechenzentrum?

Um einen Überblick über die aktuelle Auslastung zu bekommen gibt es zwei Kommandos: ps und top.

Heute schauen wir uns ps an.

ps

Das Kommando ps erzeugt eine Liste von Prozessen. Der Name ps ist die Abkürzung von process status.

Stellt sich die Frage: Was ist überhaupt ein Prozess?

Zunächst mal ist ein Prozess ein Vorgang, der durch ein Programm kontrolliert wird, das zur Ausführung einen Prozessor benötigt. Zu einem Prozess gehören auch die notwendigen Daten im zugewiesenen Adressraum, die Inhalte von CPU Registern, wenn der Prozess ausgeführt wird und die Systemdaten (Metadaten), die das Betriebssystem aus seiner Sicht über den Prozess speichert, beispielsweise die laufende Nummer des Prozesses, die Startzeit, die verbrauchte CPU Zeit und den aktuellen Status des Prozesses. Das Kommando ps kann alle Metadaten aller Prozesse anzeigen.

Zu den laufenden Prozessen, die von ps angezeigt werden, gehören auch sogenannte Zombie Prozesse. Ein Zombie Prozess ist ein beendeter Prozess, der aber trotzdem noch in der Prozesstabelle auftaucht und Systemressourcen belegt.

Beispiel für einen Zombie Prozess:

Wenn Sie Ihren Apache Webserver automatisch bei einem Neustart des Rechners starten lassen, aber beim TLS Zertifikat ein Passwort verlangen, das per Hand eingeben werden muss, so führt dies zu einem Zombie Prozess. Der Webserver versucht zu starten, kann aber nicht, weil das Passwort fehlt. Sie können die Aufforderung nicht sehen, weil Sie die Konsolenmeldungen normalerweise nicht sehen.

Ausser den Zombie Prozessen gibt es noch verwaiste Prozesse.

Ein Prozess kann einen neuen Prozess starten. Man nennt diese Kombination Eltern-Kind Prozesse.

Beispiel für einen verwaisten Prozess:

Wir bleiben beim Apache Webserver. Wenn der Webserver gestartet wird startet damit normalerweise ein einzelner Steuerprozess. Wenn nun viele Besucher die Websites besuchen, die der Apache Webserver ausliefert, startet dieser Steuerprozess zusätzliche Kind-Prozesse um mehr Systemressourcen verwalten zu können und schneller auf Anfragen zu reagieren. Wenn die Last nachlässt und/oder der Webserver neugestartet wird, müssen alle Kind-Prozesse wieder beendet werden. Normalerweise klappt das gut, aber manchmal bleibt einer der Kind-Prozesse aus unterschiedlichsten Gründen erhalten. Dieser Waise hat keinen Eltern-Prozess mehr und kann zu erheblichen Problemen im System führen, weil einfach nicht berechenbar ist, was passieren kann.

Aber lassen Sie uns zunächst die Ausgaben des Befehls etwas näher ansehen.

Parameter

Das Kommando ps kann mit unterschiedlichen Parametern aufgerufen werden. Diese Parameter können auch kombiniert werden.

l – Langes Format

novatrend@server1:~$ ps l
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
0  1000  2352  2351  20   0  26912  7980 wait   Ss   pts/0      0:00 -bash
0  1000  2450  2449  20   0  12676  1220 wait   Ss+  pts/1      0:00 bash -c cd /srv/pump.io; npm start
0  1000  2451  2450  20   0 964624 35396 ep_pol Sl+  pts/1      0:00 npm
0  1000  2457  2451  20   0   4448   660 wait   S+   pts/1      0:00 sh -c ./bin/pump
0  1000  2458  2457  20   0 674584 37712 ep_pol Sl+  pts/1      0:00 node ./bin/pump
0  1000  2460  2458  20   0 859432 66768 ep_pol Sl+  pts/1      0:01 /usr/bin/nodejs /srv/pump.io/bin/pump
0  1000  4642  2352  20   0  10240  1004 -      R+   pts/0      0:00 ps l

u – User Format (Mit User und Startzeit)

novatrend@server1:~$ ps u
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
novatre+  2352  0.0  0.3  26912  7980 pts/0    Ss   11:00   0:00 -bash
novatre+  2450  0.0  0.0  12676  1220 pts/1    Ss+  11:01   0:00 bash -c cd /srv/pump.io; npm start
novatre+  2451  0.0  1.7 964624 35396 pts/1    Sl+  11:01   0:00 npm
novatre+  2457  0.0  0.0   4448   660 pts/1    S+   11:01   0:00 sh -c ./bin/pump
novatre+  2458  0.0  1.8 674584 37712 pts/1    Sl+  11:01   0:00 node ./bin/pump
novatre+  2460  0.0  3.2 859432 66768 pts/1    Sl+  11:01   0:01 /usr/bin/nodejs /srv/pump.io/bin/pump
novatre+  4651  0.0  0.0  18672  1212 pts/0    R+   15:47   0:00 ps u

a – Alle Prozesse, auch die anderer User

Hier werden auch die TTY-Prozesse angezeigt. TTY bezeichnet das Text-Terminal aus dem der Prozess gestartet wurde. Linux hat normalerweise sechs Text-Terminals, auch virtuelle Konsolen oder Terminalemulationen genannt, an denen man sich anmelden kann.

novatrend@server1:~$ ps a
  PID TTY      STAT   TIME COMMAND
  743 tty4     Ss+    0:00 /sbin/getty -8 38400 tty4
  746 tty5     Ss+    0:00 /sbin/getty -8 38400 tty5
  751 tty2     Ss+    0:00 /sbin/getty -8 38400 tty2
  752 tty3     Ss+    0:00 /sbin/getty -8 38400 tty3
  755 tty6     Ss+    0:00 /sbin/getty -8 38400 tty6
1975 tty1     Ss+    0:00 /sbin/getty -8 38400 tty1
2352 pts/0    Ss     0:00 -bash
2450 pts/1    Ss+    0:00 bash -c cd /srv/pump.io; npm start
2451 pts/1    Sl+    0:00 npm
2457 pts/1    S+     0:00 sh -c ./bin/pump
2458 pts/1    Sl+    0:00 node ./bin/pump
2460 pts/1    Sl+    0:01 /usr/bin/nodejs /srv/pump.io/bin/pump
4668 pts/0    R+     0:00 ps a

x – Auch Daemon-Prozesse (Ohne eigene TTY-Leitung)

Daemon Prozesse sind so etwas wie der Webserver Prozess. Diese Prozesse werden normalerweise mit Root-Rechten gestartet und tauchen hier nicht auf. Wenn Sie den Befehl mit root Rechten aufrufen sudo ps x, sehen Sie auch die Daemon Prozesse

novatrend@server1:~$ sudo ps x
[sudo] password for novatrend:
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:01 /sbin/init
    2 ?        S      0:00 [kthreadd]
...
1441 ?        S      0:00 /bin/bash /usr/share/apache2/ask-for-passphrase serverblogger.ch:443 RSA
1918 ?        Ss     0:00 /usr/sbin/apache2 -k start
1975 tty1     Ss+    0:00 /sbin/getty -8 38400 tty1
2303 ?        Ss     0:00 sshd: novatrend [priv]
4129 ?        S<     0:00 [kworker/u3:1]
4800 pts/0    S+     0:00 sudo ps x
4801 pts/0    R+     0:00 ps x

f – Forest (Wald) Format – Der Prozessbaum wird dargestellt

Hier sieht man gut die Eltern und Kind Struktur.

novatrend@server1:~$ ps f
  PID TTY      STAT   TIME COMMAND
2450 pts/1    Ss+    0:00 bash -c cd /srv/pump.io; npm start
2451 pts/1    Sl+    0:00  \_ npm
2457 pts/1    S+     0:00      \_ sh -c ./bin/pump
2458 pts/1    Sl+    0:00          \_ node ./bin/pump
2460 pts/1    Sl+    0:01              \_ /usr/bin/nodejs /srv/pump.io/bin/pump
2352 pts/0    Ss     0:00 -bash
4686 pts/0    R+     0:00  \_ ps f

w – Wide (breite) Ausgabe – Zeilen werden nicht abgeschnitten

Hat in diesem Fall keinen Effekt, da die Zeilen relativ kurz sind

novatrend@server1:~$ ps w
  PID TTY      STAT   TIME COMMAND
2352 pts/0    Ss     0:00 -bash
2450 pts/1    Ss+    0:00 bash -c cd /srv/pump.io; npm start
2451 pts/1    Sl+    0:00 npm
2457 pts/1    S+     0:00 sh -c ./bin/pump
2458 pts/1    Sl+    0:00 node ./bin/pump
2460 pts/1    Sl+    0:01 /usr/bin/nodejs /srv/pump.io/bin/pump
4687 pts/0    R+     0:00 ps w

Ausgabe einschränken

Hier ein Beispiel für alle Prozesse, auch die anderer User und die Daemon Prozesse, mit dem Komando grep gefiltert auf Apache. In diesem erhalten wir keine Überschrift, da nur die Zeile, die den String „apache“ enthalten, ausgegeben werden.

novatrend@server1:~$ sudo ps ax | grep apache
1441 ?        S      0:00 /bin/bash /usr/share/apache2/ask-for-passphrase serverblogger.ch:443 RSA
1918 ?        Ss     0:00 /usr/sbin/apache2 -k start
1928 ?        S      0:20 /usr/sbin/apache2 -k start
1929 ?        S      0:20 /usr/sbin/apache2 -k start
1988 ?        S      0:19 /usr/sbin/apache2 -k start
2126 ?        S      0:19 /usr/sbin/apache2 -k start
2127 ?        S      0:19 /usr/sbin/apache2 -k start
2129 ?        S      0:19 /usr/sbin/apache2 -k start
2132 ?        S      0:20 /usr/sbin/apache2 -k start
2299 ?        S      0:19 /usr/sbin/apache2 -k start
2300 ?        S      0:19 /usr/sbin/apache2 -k start
2302 ?        S      0:19 /usr/sbin/apache2 -k start
4809 pts/0    S+     0:00 grep --color=auto apache

Die 10 Prozesse, die am meisten Speicher benötigen

ps -auxf | sort -nr -k 4 | head -10

Die 10 Prozesse, die am meisten CPU Zeit benötigen

ps -auxf | sort -nr -k 3 | head -10

Ausgabe verstehen und einordnen

Am Beispiel des u – Parameters (Mit User und Startzeit) gehe ich mal die Ausgabe durch

novatrend@server1:~$ ps u

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
novatre+  2352  0.0  0.3  26912  7980 pts/0    Ss   11:00   0:00 -bash
novatre+  2450  0.0  0.0  12676  1220 pts/1    Ss+  11:01   0:00 bash -c cd /srv/pump.io; npm start
novatre+  2451  0.0  1.7 964624 35396 pts/1    Sl+  11:01   0:00 npm
  • User: Der Benutzername der den Prozess gestartet hat
  • PID: Prozess-ID
  • %CPU: Auslastung der CPU. Der Wert ist die gesamte CPU Zeit geteilt durch die Laufzeit des Prozesses ausgedrückt als Prozentzahl (Auf dem Testserver ist also wenig los 🙂 )
  • %MEM. Das Verhältnis zwischen den vom Prozess genutzen Speicher und dem gesamten Speicher der Maschine ausgedrückt in Prozent
  • VSZ: Die Grösse des virtuellen Speichers in KiloBytes.
  • RSS: Die Grösse des residenten Speichers in KiloBytes.
  • TTY: Terminal von dem aus der Prozess aufgerufen wurde
  • STAT: Der Status des Prozesses. D für uninterruptable sleep (wartet auf Eingabe), R für running (laufend), S für sleeping (schlafend), T für traced (angehalten), X für dead (tot) und Z für einen Zombie-Prozess. In unserem Fall steht da Ss, Ss+ und Sl+. Das grosse S steht dafür, dass diese Prozesse schlafen, das kleine sagt aus, dass diese Prozesse ein session leader Prozesse sind (also potentielle Eltern). Das + Zeichen steht für einen Prozess der im Vordergrund läuft, das l für einen multi-threaded Prozess
  • START: Die Zeit, wann der Prozess gestartet wurde. Je nachdem, wie lange der Zeitpunkt her ist, wird er in Minuten, Stunde oder Tagen angegeben.
  • TIME: Die CPU Zeit, die dieser Prozess bisher „verbraucht“ hat
  • COMMAND: Das ist die Programmzeile, mit der der Prozess aufgerufen worden ist

Die wirklich gute und komplette Übersicht über die einzelnen Parameter, Ausgaben und deren Bedeutungen gibt die die Handbuchseite des Debian Projekts – http://manpages.debian.org/cgi-bin/man.cgi?query=ps

Was kann ich mit den Prozessen machen?

Ich kann mit den Prozessen kommunizieren indem ich Ihnen Signale schicke. Dazu bietet Linux Befehle wie kill, skill, renice und viele andere mehr.

kill

Wie der Name schon andeutet, geht es darum einen Prozess zu beenden. Um ihn zu nutzen, muss ich die Prozess-ID kennen. Allerdings weiss ich als Administrator nicht, wie das Programm auf verschiedene Parameter des kill Befehls reagieren wird, da die Reaktion abhängig von der Programmierung ist. Einzig das Signal 9 ist festgelegt und beendet einen Prozess. Der Befehl, der einen Prozess beendet lautet also

kill -9 [pid]

skill

In diesem Fall brauche ich keine Prozess-ID sondern den Namen von Benutzern, Programmen oder TTY Leitungen.

skill -9 [name]

renice

Der nice Wert gibt die Priorität von Prozessen im Bereich von -20 bis 19 an.

renice 15 -p 5678

verändert beispielsweise die Priorität des Prozesses mit der pid 5678 auf 15.

Interprozesskommunikation

Unter Interprozesskommunikation versteht man alle Methoden zum Informationsaustausch zwischen Prozessen. Da geht es um solche Buzzwords wie Multitasking, Multithreading, Shared memory, Pipes und Datenströme im Allgemeinen.

Im Grunde geht es also um fast alles, was mit Betriebssystemen zu tun hat. Und der Befehl ps listet all diese Prozesse auf. Zum Glück werden Sie vermutlich nur den „kill -9“ Befehl hin- und wieder brauchen


tl;dr: Der Befehl ps bietet Ihnen eine Übersicht über alle Prozesse Ihres Systems.

Kategorien
Betriebssysteme Infrastruktur Server Webserver

LAMP einrichten

LAMP ist eine Abkürzung für Programme, die Sie benötigen um dynamische Websites von Ihrem Root-Server aus anzubieten. Die Buchstaben stehen für das Betriebssystem Linux, den Webserver Apache, die Datenbank MySQL und die Programmiersprache PHP. Man nennt diese Kombination von Programmen auch Stapel (engl. Stack), weil ein Programm auf dem anderen aufbaut, bzw. die Programme eng zusammenarbeiten. Der Begriff wurde 1998 durch einen Artikel der Zeitschrift c’t geprägt. 16 Jahre später ist der LAMP-Stack immer noch sehr populär und der de facto Standard für das Anbieten einer Website. In diesem Beitrag wollen wir den LAMP Stack auf einem Root-Server mit Linux Ubuntu 14.04 einrichten. Das L für Linux ist schon erledigt, der Apache Webserver, die MySQL Datenbank und die Programmiersprache PHP fehlen noch. Nach der Installation können Sie beliebig viele Websites auf Ihrem Root-Server hosten.

Installation von Apache, MySQL und PHP

Vor 16 Jahren war die Installation noch eine kleine Herausforderung. Heute ist Sie mit einem Befehl auf der Konsole erledigt. Installiert werden müssen die folgenden Programmepakete. Das geht in einem Befehl

sudo apt-get install apache2 php5 
     php5-mysql mysql-client mysql-server

Nach drücken der Enter Taste erscheinen viele Installationsmeldungen auf dem Bildschirm. Die Datenbank MySQL benötigt ein Root-Passwort, das im Laufe der Installation abgefragt wird.

Root Passwort für MySQL Server setzen
Root Passwort für MySQL Server setzen
Wenn Sie sich diese Meldungen näher anschauen, sehen Sie, dass viel installiert wird und Sie erhalten einige Hinweise, Warnungen und teilweise auch Fehlermeldungen: Beispiel für Hinweise:

Setting up apache2 (2.4.7-1ubuntu4.1) ...
Enabling module mpm_event.
Enabling module authz_core.
Enabling module authz_host.
Enabling module authn_core.
Enabling module auth_basic.

Der Webserver wird konfiguriert und etwa 20 Module des Webservers werden aktiviert. Sie können später weitere Module bei Bedarf hinzufügen. Eine Liste aller Module und deren Funktion finden Sie im Module Index auf httpd.apache.org/docs/2.4/mod/. Beispiel Warnung: Auf meinem Root-Server gab es folgende Warnung:

140827 15:30:03 [Warning] Using unique option prefix key_buffer 
            instead of key_buffer_size is deprecated and will 
            be removed in a future release. 
            Please use the full name instead.

Ubuntu nutzt MySQL in der Version 5.5. Die Installationsoptionen key_buffer ist „deprecated“. Deprecated heisst, dass es momentan noch funktioniert, aber in zukünftigen MySQL Versionen nicht mehr funktionieren wird. Die Warnung enthält auch die Lösung des Problems. In der Zukunft heisst der Befehl key_buffer_size. Sie können alles belassen, wie es ist, da es ja funktioniert. Sie können auch die MySQL Installation anpassen (Lösung). Ich würde nichts an der Konfiguration ändern, mir die Sache aber irgendwie merken, damit ich mich später dran erinnere. Beispiel Fehlermeldungen: Diese Fehlermeldung kam ein paarmal:

 locale: Cannot set LC_CTYPE to default locale: No such file or directory
 locale: Cannot set LC_ALL to default locale: No such file or directory

Locale enthält die Einstellungen für bestimmte Gebiete, beispielsweise die Sprache, das Land, die Zahlen-, Währungs-, Datums- und Zeitformate. In Linux werden diese Informaton in Variablen abgelegt und können von User zu User und von Programm zu Programm unterschiedlich sein. Mit dem Befehl locale sehen Sie Ihre aktuellen Einstellungen (und die beiden Fehlermeldungen).

novatrend@server1:~$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=UTF-8
...
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

LC_ALL und LANGUAGE sind tatsächlich nicht gesetzt. Lösen lässt sich das Problem, indem Sie die Werte der Variablen mit den folgenden Befehlen setzen.

export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales

Die Fehlermeldung verschwindet beim nächsten Aufruf von locale.

Was wurde nun installiert?

Auf Ihrem Root-Server System gibt es nun zwei zusätzliche Server. Einen Webserver, der Webseiten ausliefert und einen Datenbankserver der über die Programmiersprache PHP angeforderte Daten in diese Webseiten integriert. Mit den Befehlen

novatrend@server1:~$ service apache2 status
 * apache2 is running
novatrend@server1:~$ service mysql status
mysql start/running, process 9455

können Sie nachsehen, ob die Server laufen. Die selbsterklärenden Parameter start, stop, restart, reload, force-reload starten entsprechende Aktionen. Beide Server sind nun unter einer bestimmten Portnummer erreichbar. Der Apache-Server belegt Port 80, der MySQL-Server Port 3306. Beim Apache können Sie das leicht nachprüfen, wenn Sie in einem Browser diese URL

http://[Root-Server-IP-Adresse]:80/

eingeben. Sie erhalten eine freundliche Begrüssungsseite Ihres Webserver (It works!) mit einem Überblick über die Konfiguration. Lesen Sie diese Seite!

Ubuntu Apache 2 Default Page
Ubuntu Apache 2 Default Page
Da ausser Ihnen nun jeder, der mit dem Internet verbunden ist, diese Seite lesen kann (wenn er denn Ihre IP-Adresse) kennt, sollten Sie aus Sicherheitsgründen, bevor Sie weitermachen, diese Begrüssungsmeldung von Ihrem Server entfernen oder umbenennen (Entfernen ist sicherer 🙂 ). Um den Inhalt zu erinnern, können Sie die Seite ausdrucken oder lokal speichern.

novatrend@server1:$ sudo rm /var/www/html/index.htm

Nachdem Sie die Seite entfernt haben, wird ein leeres Verzeichnis angezeigt, sowie Informationen über Ihren Root-Server angezeigt.

Leeres Verzeichnis mit Serverinformationen
Leeres Verzeichnis mit Serverinformationen
Alle Dateien, die in diesem Verzeichnis liegen, können von jedem gelesen werden. Wenn Sie beispielsweise eine PDF- oder Zip-Datei in dieses Verzeichnis legen, kann jeder sie herunterladen. Wenn sich im /var/www/html/ Verzeichnis eine Datei index.html befindet, wird das Verzeichnis nicht angezeigt, sondern die index.html Datei an Ihren Browser geschickt. Mit der Begrüssungsseite funktionierte das so, bevor wir sie gelöscht haben. Um sicher zu gehen, dass niemals der Inhalt eines Verzeichnisses angezeigt wird, können Sie dieses Verhalten auch ausschalten. Die sicherste Variante ist, wenn Sie in der Datei /etc/apache2/apache2.conf den folgenden Befehl einfügen und danach den Server neu starten Editoraufruf

sudo vi /etc/apache2/apache2.conf

mit i Einfügemodus einschalten, runterscrollen bis Zeile 165 (siehe Screenshot) und die Zeile mit dem Inhalt

Options Indexes FollowSymLinks

ersetzen durch

Options -Indexes +FollowSymLinks
Konfiguration Apache
Konfiguration Apache
Mittels Escape Taste den Einfügemodus und VI mit :wq und Enter beenden und den Webserver neu starten

sudo service apache2 reload

Die Verzeichnisanzeige ist nun verschwunden. Was man aber immer noch sieht ist folgendes:

Apache/2.4.7 (Ubuntu) Server at 46.232.178.78 Port 80

Diese Information steht in der Datei /etc/apache2/conf-enabled/security. Rufen Sie die Datei auf und ändern Sie die Werte für ServerTokens und ServerSignature

sudo vi /etc/apache2/conf-enabled/security.conf

...
ServerTokens Prod
...
...
ServerSignature Off
...

Sie können auch ohne Browser mit dem Befehl curl schnell nachsehen, was der Webserver an Informationen ausliefert. In meinem Fall sieht es so aus

novatrend@server1:/var/www/html$ sudo curl -I http://46.232.178.78/
HTTP/1.1 403 Forbidden
Date: Wed, 27 Aug 2014 17:02:12 GMT
Server: Apache
Content-Type: text/html; charset=iso-8859-1

Jetzt gibt es weder Verzeichnisse noch Versions- und Distributionshinweise.

PHP

Sie können auf einfache Art feststellen, ob PHP angesprochen wird. Legen Sie sich eine Datei info.php im öffentlichen Dokumenten Verzeichnis an, und rufen die Funktion phpinfo() auf. Anlegen der Datei:

novatrend@server1:$ sudo touch /var/www/html/info.php
novatrend@server1:$ sudo vi /var/www/html/info.php

Fügen Sie die folgenden Befehle ein und speichern Sie die Datei

<?php
phpinfo();
?>

Rufen Sie im Browser

http://46.232.178.78/info.php

auf . Sie erhalten eine lange Liste mit Infomationen über Ihren LAMP Stack

PHP Info
PHP Info

MySQL

Ihr MySQL Server läuft und Sie können nun daran gehen, eine Anwendung zu installieren, die auf PHP und MySQL aufsetzt, wie beispielsweise die Content Management Systeme WordPress, Joomla und Drupal. oder die Dropbox Alternative ownCloud.


tl:dr Sie können mit einem Befehl eine Umgebung für eine Website wie beispielweise ein Content Management System auf Ihrem Root-Server installieren. Mit ein paar mehr Handgriffen können Sie auch noch die Sicherheit erhöhen.

Kategorien
Betriebssysteme Server

Welcome to Ubuntu 14.04.1 LTS

Das Aufmacherbild dieses Eintrags sieht nicht ganz so hochglanzpoliert aus, wie die typische Produktwerbung. Das liegt einfach daran, dass die Benutzeroberfläche Ihres Root-Servers seit Jahrzehnten vermutlich einfacher zu bedienen ist, als jedes Smartphone. Am blinkenden Cursor einen Befehl eingeben, Enter drücken und das wars. Bumm-Zack-Return 🙂 In diesem Beitrag geht es daher auch um Befehle, die nahe liegen, wenn Sie sich das erste (oder auch zweite) Mal mit Ihrem Root-Server verbinden (siehe auch: Root-Server ich bin drin). Linux ist sehr einfach aufgebaut. Alles ist eine Datei. Sie benötigen fast immer Befehle, die etwas mit dem Anzeigen und Organisieren von Dateien zu tun haben. Wenn Sie einen frisch eingerichteten Root-Server haben (Stand (8/2014), so begrüsst er Sie mit folgenden Worten:

Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64)
 * Documentation:  https://help.ubuntu.com/
  System information as of Wed Aug 20 16:07:38 CEST 2014
  System load:  0.0               Processes:           69
  Usage of /:   2.3% of 47.12GB   Users logged in:     0
  Memory usage: 3%                IP address for eth0: 46.232.178.78
  Swap usage:   0%
  
31 packages can be updated.
17 updates are security updates.
Last login: Wed Aug 20 16:07:39 2014 from 83.158.144.134

Oft lässt man solche Meldungen ohne Aufmerksamkeit vorbeihuschen. Wir wollen uns die Sache mal näher anschauen. Ubuntu 14.04.1 LTS ist eine Linux Distribution. Die Ziffern geben die Version an, die Buchstaben LTS bedeuten Long Term Support. Diese Version ist beispielsweise am 24.07.2014 erschienen und der Support läuft am 24.07.2019 aus (https://wiki.ubuntu.com/Releases). Sie können also Ihren Root-Server die nächsten fünf Jahre mit diesem System betreiben. Nach diesen fünf Jahren können Sie übrigens auf eine neue Version automatisch updaten! Haben Sie schon mal nachgeschaut, wie lange der Support für das Betriebssystem auf Ihrem PC daheim, Ihrem Tablet oder gar Ihrem Smartphone läuft? Vermutlich finden Sie keine verbindliche Aussage. GNU/Linux 3.13.0-32-generic x86_64 bedeutet, dass Ubuntu auf GNU/Linux Kernel der Version 3.13 basiert. Der wurde am 20.01.2014 veröffentlicht. X86_64 ist die Prozessorarchitektur. Sie können diese Informationen auch über die Befehle uname -a oder arch anzeigen lassen. help.ubuntu.com ist die offizielle Dokumentation für Ubuntu Distributionen. Von hier gelangen Sie auch auf das Community Wiki und zahlreiche andere Ressourcen. Als deutschsprachige Ressource bietet sich das wiki.ubuntuusers.de an. System information zeigt Ihnen Werte Ihres Root-Servers, die Sie in der Zukunft vermutlich sehr interessieren werden. Momentan hat Ihr System 0% Last und Sie müssen sich damit noch nicht beschäftigen. Updates sind ein sehr wichtiges Thema. Mein Server hier hat bemerkt, dass 21 Software Pakete upgedatet werden können und davon sind 17 Sicherheitsupdates. Last Login zeigt den Zeitpunkt und die IP Adresse des letzten Zugriffs. Mit verschiedenen Online-Services können Sie in Erfahrung bringen, wem diese IP Adresse gehört (Beispiel). Sie können das auch erfahren in dem Sie auf Ihrem Server den Befehl traceroute 83.158.144.134 aufrufen. Wenn Sie das ausprobieren, so erhalten Sie einen Hinweis, dass das Programm, das hinter dem Befehl traceroute steckt, noch nicht installiert ist und Hinweise zur Installation.

Updates

Bevor Sie irgendetwas anderes tun, sollten Sie die Updates für Ihren Root-Server einspielen. Zu diesem Zweck brauchen Sie den Befehl Apt-Get. Apt ist die Software Paket Verwaltung Ihrer Linux Distribution. Von wo Ihr Server diese Updates und auch die Programmpakete lädt, erfahren Sie, wenn Sie den Befehl

cat /etc/apt/sources.list

aufrufen. In der Datei sind die gängigen Quellen angegeben und Sie können hier festlegen, von wo Ihr Root-Server herunterladen soll. Um nun upzudaten, benötigen Sie zwei Befehle. Der erste liest die Paketquellen neu ein (apt-get update), der zweite startet das eigentliche Update (apt-get upgrade). Momentan nutze ich einen normalen User Account und verfüge über keinerlei Root-Rechte. Der Update Vorgang benötigt aber natürlich Root-Rechte und die können wir mit dem Befehl sudo einfach an den Aufruf übergeben.

novatrend@server1:~$ sudo apt-get update
[sudo] password for novatrend:
Ign http://security.ubuntu.com trusty-security InRelease
... [Hier stehen noch mindesten 20 Zeilen]
Get:1 http://us.archive.ubuntu.com trusty-updates Release.gpg [933 B]
Fetched 1356 kB in 7s (176 kB/s)
Reading package lists... Done

Nun sind die Listen komplett und ich kann mit apt-get upgrade das eigentliche Update starten.

novatrend@server1:~$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  accountsservice apport byobu gir1.2-glib-2.0 libaccountsservice0
  libgirepository-1.0-1 libpam-systemd libsystemd-daemon0 libsystemd-login0
  libudev1 net-tools python3-apport python3-distupgrade python3-gi
  python3-problem-report systemd-services ubuntu-release-upgrader-core udev
18 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2187 kB of archives.
After this operation, 5120 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main udev amd64 204-5ubuntu20.4 [735 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main libudev1 amd64 204-5ubuntu20.4 [33.2 kB]
...
Fetched 2187 kB in 4s (514 kB/s)
...
Unpacking libpam-systemd:amd64 (204-5ubuntu20.4) over (204-5ubuntu20.3) ...
Preparing to unpack .../systemd-services_204-5ubuntu20.4_amd64.deb ...

Zunächst mal die gute Nachricht. Ich musste das Passwort nicht noch einmal eingeben. Innerhalb einer Session wird es temporär gespeichert. Der Befehl liest die Quellen aus, schaut sich Abhängigkeiten zwischen den Softwarepaketen an und zeigt dann, was upgedatet werden werden muss. Sie müssen explizit mit y (Yes) zustimmen und dann läuft der Update Vorgang los. Unser Root-Server ist jetzt auf dem neuesten Stand.

Wichtige Befehle für den Anfang

whoami – liefert den Username des Users, unter dem Sie angemeldet sind

novatrend@server1:~$ whoami
novatrend

df – zeigt den verfügbaren Platz auf den „eingehängten“ Dateisystemen an

Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1       49409840 1686408  45190520   4% /
none                   4       0         4   0% /sys/fs/cgroup
udev             1014188       4   1014184   1% /dev
tmpfs             205008     500    204508   1% /run
none                5120       0      5120   0% /run/lock
none             1025028       0   1025028   0% /run/shm
none              102400       0    102400   0% /run/user

Mein Server hat 45GB Plattenplatz und knapp 4% davon belegt die Ubuntu Distribution. pwd – zeigt das aktuelle Verzeichnis an

novatrend@server1:~$ pwd
 /home/novatrend

Diese Parameter helfen oft weiter, da man sich die Einzelheiten der Befehle meist nicht merken kann:

  • kurzer Hilfetext zum Befehl [BEFEHL] –help
  • Die Handbuchseite eines Befehls man [BEFEHL]

Probieren Sie einfach ein wenig aus. Ich habe ein paar grundlegende Befehle zusammengestellt. Es kann sein, dass manche Befehle nicht das gewünschte Ergebnis bringen, weil Sie als User angemeldet sind. In diesem Fall sollten Sie nochmal überlegen, was der Befehl wirklich tut und wenn Sie ihn immer noch ausführen wollen, einfach ein sudo voranstellen. Die folgenden Beispiele stammen von der Website Linux-fuer-alle.de.

  • Abmelden logout
  • Root-Server neustarten: shutdown -r now
  • Nach Datei auf Server suchen (Locate-Datenbank): locate [DATEI]
  • Nach Text suchen innerhalb einer Datei: grep [SUCHSTRING] [DATEI]
  • Ins Hauptverzeichnis wechseln: cd /
  • Ins übergeordnete Verzeichnis wechseln: cd ..
  • In ein bestimmtes Verzeichnis wechseln: cd [VERZ]
  • Den Inhalt einer Datei auf dem Bildschirm anzeigen: cat [DATEI]
  • Den Inhalt einer Datei auf dem Bildschirm seitenweise anzeigen: more [DATEI]
  • Den Inhalt einer Datei auf dem Bildschirm seitenweise mit Möglichkeit zum hochblättern anzeigen: less [DATEI]
  • Datei kopieren (kopiert Datei 1 in Datei 2): cp [DATEI1] [DATEI2]
  • Datei umbenennen (benennt Datei 1 in Datei 2 um): mv [DATEI1] [DATEI2]
  • Datei verschieben (verschiebt Datei 1 ins Verzeichnis): mv [DATEI] [VERZ]
  • Datei löschen: rm [DATEI]
  • Eine leere Datei erzeugen: touch [DATEI]
  • kurze Liste des Verzeichnisinhaltes: ls
  • ausführliche Liste des Verzeichnisinhaltes: ls -l
  • alle Dateien des Verzeichnisses: ls -la
  • neues Verzeichnis erstellen: mkdir [VERZ]
  • leeres Verzeichnis löschen: rmdir [VERZ]
  • alle Dateien/Verzeichnisse unterhalb des Verzeichnisses löschen: rm -rf
  • Anzeige von Datum und Uhrzeit: Date
  • gibt die Nutzung des Arbeitsspeichers aus: free
  • Laufzeit und Prozessorauslastung: uptime
  • zeigt die höchsten Ressourcenverbraucher an: top
  • zeigt Informationen über laufende Prozesse an: ps ax
  • wer ist alles eingeloggt?: who
  • Passwort ändern: passwd

Es gibt natürlich noch wesentlich mehr Befehle, aber das ist schon mal ein gute Grundlage für den Anfang.

Programm installieren und deinstallieren

Vorhin wollten wir das Programm traceroute benutzen. Das ging aber nicht, weil es nicht installiert war.

novatrend@server1:~$ sudo apt-get install traceroute

Jetzt ist das Programm installiert und wir können nach der IP-Adresse von vorhin schauen

novatrend@server1:~$ traceroute 83.158.144.134
traceroute to 83.158.144.134 (83.158.144.134), 30 hops max, 60 byte packets
 1  46.232.178.1 (46.232.178.1)  0.322 ms  0.314 ms  0.397 ms
 2  gw-novatrend.init7.net (82.197.164.33)  73.224 ms  73.201 ms  73.145 ms
 3  r1zrh2.core.init7.net (77.109.128.237)  5.466 ms r1zrh1.core.init7.net (77.109.128.177)  0.337 ms r1zrh2.core.init7.net (77.109.128.237)  5.344 ms
 4  r1fra1.core.init7.net (77.109.128.250)  15.191 ms  15.153 ms  15.108 ms
 5  r1fra1.core.init7.net (77.109.128.250)  15.062 ms  15.016 ms  15.030 ms
 6  strasbourg-6k-1-po101.intf.routers.proxad.net (212.27.56.29)  18.034 ms decix.proxad.net (80.81.192.223)  13.996 ms  13.918 ms
 7  strasbourg-6k-1-po101.intf.routers.proxad.net (212.27.56.29)  21.075 ms p11-crs16-1-be1109.intf.routers.proxad.net (194.149.160.197)  23.685 ms  26.451 ms
 8  bzn-9k-4-be1004.intf.routers.proxad.net (78.254.249.2)  23.740 ms  23.736 ms  24.270 ms
 9  bzn-6k-5-po6.intf.routers.proxad.net (194.149.162.2)  23.119 ms * *
10  lns-bzn-4.routers.proxad.net (212.27.55.114)  22.981 ms *  22.969 ms
11  * * lns-bzn-4.routers.proxad.net (212.27.55.114)  23.423 ms
12  * * *
13  * * *
14  * * *

Aufgezeichnet wird der Weg von jeweils drei IP-Paketen, die Traceroute abschickt. Sie sehen das an den drei Millisekunden Angaben in jeder Zeile. Bekommt traceroute eine Antwort, schickt es wieder drei Pakete und so weiter. Drei Sternchen bedeuten, dass es kein Antwort erhält. Das kann unterschiedliche Gründe haben. In diesem Fall ist die letzte IP-Adresse die meines ADSL Anbieters und intern sind die Wege scheinbar geblockt für unser traceroute. Mit dem Befehl sudo apt-get remove traceroute können Sie das Programm wieder von Ihrem Root-Server entfernen. Bei einem so einfachen Programm wie traceroute funktioniert das schnell und problemlos. Komplexer wird es, wenn Sie grössere Programmpakete nutzen, die wiederum auf anderen Pakten aufbauen. Hier kann es sein, dass Sie zunächst Abhängigkeiten beachten müssen. Auch hierüber finden Sie Informationen im Ubuntu Wiki (apt-get).

Editoren

Jedes Linux System hat den Editor VI installiert. Es gibt hunderte anderer Editoren aber VI ist wirklich überall zu finden. Allein das macht es hilfreich, in der Lage zu sein, eine Datei zu öffnen, zu ändern und wieder abzuspeichern. Lassen Sie uns ein Beispiel machen: Ich erstelle eine Datei in /home/novatrend, füge die Worte hallo Welt ein, speichere Sie ab und zeige sie auf dem Bildschirm an:

novatrend@server1:~$ touch vi.txt

erzeugt eine neue Datei im Verzeichnis /home/novatrend/

novatrend@server1:~$ vi vi.txt

Ruft den VI Editor auf. Stellen Sie ihre innere Uhr jetzt um etwa 50 Jahre zurück. Um etwas zu schreiben, müssen Sie in den Einfügemodus. Das machen Sie, indem Sie die Taste i drücken. Es erscheint eine Statuszeile, in der links das Wort insert steht. Geben Sie nun Hello World ein und verlassen Sie den Einfügemodus durch drücken der Escape Taste. Drücken Sie dann die : (Doppelpunkt) Taste um in den Kommandomodus zu gelangen. Jetzt noch einmal w für write und q für quit. Dann auf Enter, und Sie habe die Aufgabe erfüllt. Der Befehl

novatrend@server1:~$ cat vi.txt
Hello World

Gibt den Inhalt der Datei aus. rm vi.txt löscht die Datei wieder und mit ls können Sie schauen, ob sie wirklich verschwunden ist. War doch einfach, oder? Sie können auch mit Emacs, JED, joe, Medit, Nano oder Vim arbeiten. Jeder von diesen Editoren wird Sie auf seine eigene Weise nerven oder zufriedenstellen. Die Diskussion über den besten Editor hält seit 50 Jahren an und ist nicht gelöst. Lernen Sie einfach die Grundlagen Befehle in VI und die Sache ist erledigt.


tl;dr: Ubuntu Linux ist weit verbreitet, einfach zu bedienen und der Editor VI ist auch nicht wirklich kompliziert.

Kategorien
Betriebssysteme Server

Root-Server – ich bin drin!

In diesem ersten Beitrag gehe ich davon aus, dass Sie einen Root-Server angemietet haben und im Besitz der Zugangsdaten sind. Ausserdem gehe ich davon aus, dass sich auf Ihrem Root-Server das Open-Source Betriebssystem Linux befindet. Bevor wir zur Installation und Nutzung von zusätzlichen Programmen kommen, gebe ich Ihnen ein paar Informationen zu Linux und der Art undWeise, wie Sie mit Ihrem Root-Server Kontakt aufnehmen. Linux gilt als stabil, einfach zu warten und je nach Quelle und Zählweise hat Linux im Serverbereich einen Marktanteil von 30% bis 60%.

Linux besteht aus vier Teilen:

  1. der Kernel stellt eine einheitliche Schnittstelle zur Hardware dar. Programme, die über diese Schnittstelle die Linux Funktionen ansprechen, müssen die Hardware Ihres Root-Servers nicht kennen.
  2. zusätzliche Programme können über den Kernel auf Dateien and andere Ressourcen zugreifen. Es gibt tausende von Programmen für nahezu jeden Anwendungszweck.
  3. die Shell ist die textbasierte Benutzerschnittstelle. Der Benutzer gibt dort Befehle ein und das System führt sie aus.
  4. X ist die grafische Benutzerschnittstelle mit Fenstern und Mauszeiger. Auf einem Root-Server ist sie normalerweise nicht installiert.

Da keines der einzelnen Teile alleinstehend funktioniert, werden Installationspakete zu sogenannten Distributionen zusammengestellt. Es gibt zahlreiche Distributionen für jeden nur denkbaren Anwendungszweck. Viele Hosting Provider bieten die Möglichkeit eine Distribution Ihrer Wahl zu installieren. In unseren Beispielen hier im Blog gehen wir davon aus, dass Sie Ubuntu benutzen.

Root-Server mieten

Wenn Sie einen Root-Server mieten, so benötigen Sie theoretisch genau zwei Dinge um anzufangen:

  1. Die IP-Adresse des Servers
  2. Das root Passwort

Stellen Sie sich das wie bei einer Wohnung vor. Sie benötigen eine Adresse und den Schlüssel. Die IP-Adresse ist die Adresse und das root Password Ihr Schlüssel. Im Gegenzug überweisen Sie dem Vermieter eine monatliche Miete. Ein Hosting Provider stellt Ihnen meistens noch viel mehr zur Verfügung, beispielsweise eine webbasierte Administrationsoberfläche, zusätzlichen Speicher, die Möglichkeit Domainnamen zu mieten und auf Ihren Server zeigen zu lassen, physikalisch vom Server getrennten Backup Space, SSL Zertifikate, zusätzliche IP-Adressen, etc. Je nach Wunsch können Sie diese Zusatzangebote nutzen. Sie können aber auch unterschiedliche Services von unterschiedlchen Anbieter kombinieren.

Kontakt mit dem Server aufnehmen

Sie sind jetzt stolzer Besitzer einer IP-Adresse und eines Passworts. Nun wollen Sie Kontakt mit Ihrem Server aufnehmen. Als Endgerät benutzen Sie vermutlich einen PC mit einem Betriebssystem von Microsoft, Apple oder ebenfalls Linux. Auf Ihrem PC nutzen Sie eine grafische Benutzeroberfläche mit Fenstern und Maussteuerung. Um auf Ihren Server zugreifen zu können, benötigen Sie auf Ihrem PC eine Terminalemulation. Terminals sind Endgeräte der Vor-PC-Ära, die vor mehr als 30 Jahren auf vielen Schreibtischen standen. Sie waren eine Art Endgerät für den Zugriff auf zentrale Grossrechner. Und genau das wollen wir haben. Ein Endgerät für einen … nunja … Grossrechner – unseren Root-Server.

Televideo 925 Terminal - 1981
Televideo 925 Terminal – 1981
Ich benutze das Apple Betriebssystem OSX und dort wird die Terminal.app mitgeliefert. (In Windows können Sie Putty benutzen). Wenn ich die Terminal App aufrufe, öffnet sich ein Fenster und ich sehe:

Last login: Wed Aug 20 09:58:19 on ttys000
grunzi:~ hagengraf$

Mein letztes Login war am 20.August um 9:58 Uhr auf ttys000. ttys steht übrigens für teletypewriters (Fernschreiber). Bis heute heissen serielle Schnittstellen in Betriebssystemem tty nach der Firma Teletype, die 1930 den Fernschreiber entwickelte. Die nächste Zeile gibt Auskunft über den Namen meines PC und in welchem Verzeichnis ich mich befinden. Mein PC heisst grunzi und ~hagengraf bedeutet, das ich mich in meinem Home Verzeichnis befinde. Um mich nun mit dem Root-Server zu verbinden, muss ich den Befehl ssh aufrufen. ssh steht für Secure Shell und stellt mit dem entfernten Root-Server eine sichere Verbindung her. Als Benutzername benutze ich nicht root sondern den von NOVATREND aus Sicherheitsgründen angelegten Benutzer novatrend.

grunzi:~ hagengraf$ ssh novatrend@46.232.178.78

Als Antwort bekomme ich folgende Nachricht

The authenticity of host '46.232.178.78 
(46.232.178.78)' can't be established.
RSA key fingerprint is 
18:c6:9a:3f:ef:49:62:69:d2:fe:4a:96:b4:34:d5:ee.
Are you sure you want to continue connecting (yes/no)?

Der Root-Server identifiziert sich mit einem öffentlichen Schlüssel (RSA-Kryptosystem) gegenüber dem Client (unsere Terminal Emulation).

Kleiner Exkurs

Das RSA-Kryptosystem stammt aus dem Jahr 1977 und ist ein asymetrisch kryptographisches Verfahren, bei dem der Root-Server den öffentlichen Schlüssel sendet und unsere Terminal.app einen geheimen Schlüssel erzeugt und optional lokal speichert. Der private Schlüssel wird dabei nicht übertragen. Der Verbindungsaufbau zwischen den beiden wird über kleinere Datenpakete abgewickelt. Die drei Mathematiker, die das Verfahren in den siebziger Jahren entdeckten, gründeten 1986 die Firma RSA Security. RSA Security gehört seit 2006 der EMC Corporations und stand im Dez 2013 in den Schlagzeilen, da sie 10 Millionen US$ für die Errichtung einer Krypto-Backdoor in ihren Produkte entgegenommen hat. Die Backdoor ermöglicht dem amerikanischen Geheimdienst NSA, sich root Rechte auf Servern zu verschaffen, die die Bibliothek BSafe einsetzen. Ubuntu nutzt diese Library nicht. Das SSH Protokoll nutzt das RSA Kryptosystem. Ubuntu wiederum benutzt mit der OpenSSH Library ( die Teile der OpenSSL Library nutzt) eine freie Implementierung beider Protokolle, die auch scheinbar vom Heartbleed-Bug der OpenSSL Library nicht betroffen sind.

Bei der ersten Verbindung kennt unser Terminal den Server noch nicht und fragt nach. Ich antworte mit yes,

Warning: Permanently added '46.232.178.78' (RSA) 
to the list of known hosts.
novatrend@46.232.178.78's password:

Aus Gründen der Bequemlichkeit speichert die Terminal.app den Root-Server in die Liste der bekannten Hosts. Daher die Warnung vor der Nachricht. Nun fragt der Server nach dem Passwort Nach der Eingabe des Passworts schickt der Root-Server eine freundliche Willkommensmeldung und ich bin drin!

Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64)
System information as of Wed Aug 20 15:29:01 CEST 2014
System load:  0.0               Processes:           75
 Usage of /:   2.3% of 47.12GB   Users logged in:     0
 Memory usage: 3%                IP address for eth0: 46.232.178.78
 Swap usage:   0%Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
 novatrend@server1:~$

Der Root-Server meldet sich, der Cursor blinkt wie in alten Science Fiction Filmen und nun kann es losgehen. Sie können Befehle eintippen und das gesamte Internet liegt Ihnen gewissermassen zu Füssen.

Abmelden

Um sich abzumelden, geben Sie einfach den Befehl exit ein und sie befinden sich wieder auf der lokalen Konsole Ihrer Terminal Emulation.


tl;dr: Mit einer IP Adresse und dem root password kann man über eine Terminalemulation per SSH Protokoll eine sichere Verbindung zu seinem Root-Server von jedem Endgerät aus aufbauen.