Kategorien
Cloud Server Shared Hosting Verschlüsselung

OwnCloud – Installation und Clients

In einer eigenen Cloud lagern Sie Ihre eigenen Daten, greifen mit verschiedenen Client darauf zu und synchronisieren die Datenbestände. Die Cloud Software ist auf Ihrem Root-Server installiert. Das Open Source Programm ownCloud ist gerade bei sensiblen oder auch allgemeinen Unternehmensdaten eine echt Alternative zu Dropbox, Google, iCloud und ähnlichen Programmen. Sie können über ihren PC, ihr Smartphone, Tablet oder über eine Weboberfläche auf die Daten zugreifen. Es gibt Clients für Linux, Mac OS, Windows, Android und iOS. OwnCloud bietet Benachrichtigungs- und soziale Netzwerkfunktionen für die Nutzer einer OwnCloud-Installation sowie zahlreiche Zusatzfunktionen, unter anderem einen Musikplayer, eine Fotogalerie und einen Editor zum gemeinsamen Bearbeiten von Dokumenten.

Die Daten können verschlüsselt übertragen und gespeichert werden. Das Programm existiert in einer Business- und einer Community Edition. Wir installieren die Community Edition. Das Serverprogramm ownCloud server ist Open Source Software und läuft in Ihrem LAMP Stack. Es ist über einen Browser nutzbar. Andere Dateimanager und Groupware Systeme können mit OwnCloud über eine Programmierschnittstelle (API) Kontakt aufnehmen. Die Client Software, die eine tiefere Verzahnung und eine Synchronisation von OwnCloud in Ihrem Desktop Betriebssystem erlaubt, wird von der Firma OwnCloud Inc. kostenlos herausgegeben. Für die Desktop Clients steht auch der Quellcode zur Verfügung. Bei den Apps für Smartphones gibt es die Android Version im Quellcode.

Installation

Sie können OwnCloud Server in einem virtuellen Apache Host (vhost) laufen lassen oder den Default Host Ihrer LAMP Installation nutzen. In diesem Beispiel nutze ich den Default Host, da auf diesem Root-Server nur die ownCloud laufen soll. Bevor etwas neues installieren, sollten Sie immer

apt-get update
apt-get upgrade

laufen lassen, damit Ihr System auf dem aktuellen Stand ist. Danach benötigen Sie den Apache Webserver, den MySQL Datenbankserver und die Programmiersprache PHP. Im Beitrag LAMP einrichten (LINK TODO) finden Sie die notwendigen Installationsschritte.

Notwendige PHP-Module

OwnCloud benötigt einige zusätzliche PHP-Module, die Sie mit dem Befehl

apt-get install php5-gd php5-json php5-curl php5-intl php5-mcrypt php5-imagick

installieren können.

  • php5-gd: ermöglicht die Ausgabe und Bearbeitung von Bildern im JPEG, GIF, PNG und anderen Formaten
  • php5-json: dieses Modul ermöglicht die Nutzung des „JavaScript Object Notation (JSON)“ Datenaustauschformats.
  • php5-curl: ermöglicht die Nutzung der libcurl Bibliothek aus PHP heraus. Diese Bibliothek bietet Möglichkeiten, unterschiedliche Server über gängige Protokolle zu verbinden. libcurl unterstützt u.a. HTTP, HTTPS, FTP, FILE, und das LDAP Protokoll.
  • php5-intl: ist das Internationalisierungsmodul von PHP
  • php5-mcrypt: ermöglicht die Nutzung der mcrypt Bibliothek. Sie unterstützt viele Verschlüsselungsalghorithmen.
  • php5-imagick: erlaubt Bilder in mehr als 100 verschiednenen Formaten zu erzeugen und zu verändern.

Starten Sie den Webserver neu

sudo service apache2 restart

Falls irgendetwas schiefgeht, schauen Sie in das Apache Error Log, vielleicht helfen Ihnen die Meldungen weiter (tail -f /var/log/apache2/error.log)

OwnCloud Quellcode herunterladen, überprüfen, auspacken

Unter https://owncloud.org/install/finden Sie die aktuellen Installationspakete. Kopieren Sie sich den Downloadlink der letzten stabilen Version ownCloud Server (in meinem Fall 7.02) und laden das Paket mit dem Befehl

wget https://download.owncloud.org/community/owncloud-7.0.2.tar.bz2

Da heutzutage nicht auszuschliessen ist, dass das Archiv tatsächlich das richtige Package ist, können Sie es überprüfen lassen. Sie können sich die Checksumme der Datei auf verschiedene Weise ausrechnen und überprüfen. Mit dem Befehl

novatrend@server1:~$ md5sum owncloud-7.0.2.tar.bz2
4af57e093878917d80004f7151f9282e  owncloud-7.0.2.tar.bz2

erzeugen Sie beispielsweise die md5 Checksummer für das Package. Die ausgegebenen Ziffern müssen mit dem Inhalt der Datei https://download.owncloud.org/community/owncloud-7.0.2.tar.bz2.md5 übereinstimmen. Sie können diese Datei auf Ihren lokalen PC laden und in einem Editor öffnen um die die Ziffern zu vergleichen. Packen Sie das Archiv mit dem Befehl

sudo tar -xvf owncloud-7.0.2.tar.bz2 -C /var/www/html

in das Dokumentenverzeichnis des Default Webservers aus. Es wird ein neues Verzeichnis owncloud angelegt, dass alle notwendigen Dateien enthält. Machen Sie den Benutzeraccount unter dem der Webserver läuft zum Eigentümer der Dateien.

sudo chown www-data:www-data -R /var/www/html/owncloud/

DB Datenbank und Benutzer anlegen

Rufen Sie den MySQL Monitor auf und erzeugen Sie ein Benutzerkonto und eine Datenbank. Im folgenden Beispiel heisst der Benutzer ownclouduser und die Datenbank ownclouddb.

mysql -u root -p
Enter password:
mysql> CREATE USER 'ownclouduser'@'localhost' IDENTIFIED BY 'IHRPASSWORT';
mysql> CREATE DATABASE ownclouddb;
mysql> GRANT ALL ON ownclouddb.* TO 'ownclouduser'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> exit

OwnCloud Webinstallation

Sie können nun auf Ihrem Root-Server das ownCloud Verzeichnis aufrufen und der ownCloud Webinstaller erscheint. In meinem Fall mit einer Sicherheitswarnung. http://[IP-Adresse]/owncloud

Webinstaller ownCloud
Webinstaller ownCloud
In diesem Formular müssen Sie das Verzeichnis eintragen, in dem Ihre Dateien liegen werden (bereits vorbelegt), den DB-Benutzernamen, das Password und den Namen der Datenbank. Danach müssen Sie noch Benutzernamen und Passwort des Administrators festlegen. Der Webinstaller konfiguriert automatisiert das Programm und Sie landen in der ownCloud Weboberfläche.
ownCloud Webclient
ownCloud Webclient
Sie können nun Ordner anlegen, Dateien hochladen, zusätzliche benutzer anlegen, die eigene Dateien verwalten und vieles andere mehr. Schauen Sie sich in Ruhe um. Bevor Sie sensible Dateien hochladen, sollten sie die Admin-Seite http://[IP-Adresse]/index.php/settings/admin aufrufen. Wir müssen uns um zwei Dinge kümmern:

  1. Schutz des Datenverzeichnisses
  2. Verschlüsselte Kommunikation

1. Schutz des Datenverzeichnisses

Security Warning Your data directory and files probably accessible from the internet because the .htaccess files does not work. For information how to properly configure your server, please see the documentation.

OwnCloud speichert alle Daten in einem Datenverzeichnis namens data. Damit keine unberechtigten Benutzer auf die Daten zugreifen können, schützt man solche Verzeichnisse mit einer sogenannten .htaccess Datei. Sie enthält Konfigurationsanweisungen für den Apache Webserver. Bei meiner Installation nutze ich als Datenverzeichnis /var/www/html/owncloud/data. In diesem Verzeichnis hat das ownCloud Programm eine .htaccess Datei erzeugt, die Befehler für den Apache Webserver enthält, um den öffentlichen Zugriff einzuschränken. Leider führt der Apache Webserver diese Datei offensichtlich nicht aus und es kommt zur Fehlermeldung. In diesem Fall liegt die Lösung in der Apache-Konfigurationsdatei /etc/apache2/apache2.conf. Der Standard Webserver ist aus Sicherheitsgründen so konfiguriert, dass keine .htaccess Dateien ausgeführt werden. Sie können das Problem nun auf mehrere Arten lösen

  1. Die Apache Konfigurationsdatei ändern
  2. Das Datenverzeichnis an einen Platz legen, der nicht öffentlich, aber für den Webserver erreichbar ist
  3. Einen virtuellen Host (vhost) erstellen und die entsprechenden Anweisungen angeben

Es gibt in diesem Fall kein richtig oder falsch. Jede Möglichkeit ist für sich gesehen ok. Ich nehme die Variante 1 und ändere die /etc/apache2/apache2.conf

sudo vi  /etc/apache2/apache2.conf

Fügen Sie nach Zeile 168 (nach den Anweisungen für das Verzeichnis /var/www/) folgende Anweisungen ein:

<Directory /var/www/html/>
        AllowOverride All
</Directory>

Der Befehl AllowOverride All bedeutet, dass es in diesem Verzeichnis erlaubt ist, die Apache Konfigurationseinstellungen zu überschreiben. Starten Sie den Webserser neu

sudo service apache2 restart

Die Fehlermeldung ist verschwunden. Der Webserver führt nun die OwnCloud Befehle aus und das Verzeichnis ist geschützt. Ein kurzer Blick auf die Admin Seite (Admin-Seite http://[IP-Adresse]/index.php/settings/admin) bestätigt das. Auch hier ist die Warnung verschwunden.

2. Verschlüsselte Kommunikation

Security Warning You are accessing ownCloud via HTTP. We strongly suggest you configure your server to require using HTTPS instead.

Dieses Thema ist sehr wichtig. Momentan werden Ihre Daten unverschlüsselt übertragen. Jeder, der Zugriff auf den Netzwerkverkehr zwischen Ihrer ownCloud Installation und Ihrem Client hat, kann Ihre Daten im Klartext mitlesen. Glücklicherweise wird Ubuntu 14.04 mit einer Lösung für dieses Problem ausgeliefert. Sie müssen nur die entsprechenden Module im Webserver aktivieren

sudo a2enmod ssl
sudo a2ensite default-ssl
sudo service apache2 reload

Die Standard Apache SSL Konfiguration können Sie mit dem folgenden Befehl einsehen cat /etc/apache2/sites-available/default-ssl.conf Wenn Sie nun Ihre ownCloud Installation im Webserver mit https:// anstelle von http:// aufrufen, wird der Netzwerkverkehr verschlüsselt. Je nach Browsertyp müssen Sie bestätigen, auf die Seite zugreifen zu wollen. Bei der Installation von Ubuntu wurde ein Zertifikat erzeugt, um die verschlüsselte Verbindung zu ermöglichen. Dieses Zertifikat ist von keiner offiziellen Stelle bestätigt und daher fragt der Browser nach.

Selbst erstelltes Zertifikat
Selbst erstelltes Zertifikat
Sie können auch jederzeit ein Zertifikat kaufen und auf Ihrem Root-Server installieren. Dann werden alle Browser ohne Nachfrage den Zugriff auf Ihre Seite ermöglichen.

Ausprobieren

Laden Sie ein paar Dateien per Browser in Ihre Owncloud Installation und machen Sie sich mit der Oberfläche vertraut

OwnCloud Clients

Auf die von Ihnen genutzten PC, Telefone und Tablets können Sie nun die entsprechenden ownCloud Clients installieren und mit Ihrer Server Installation verbinden. Die Downloads finden Sie unter http://owncloud.org/install/.

Beispiel Mac OS

Die OwnCloud App erzeugt einen zusätzlichen Ordner, der im Finder angezeigt wird. Alle Dateien, die sich in diesen Ordnern befinden werden mit Ihrem ownCloud Server synchronisiert. Die Einstellungen können im ownCloud menü im oberen Bildschirmrand vorgenommen werden.

ownCloud App Mac OS
ownCloud App Mac OS

Beispiel Android

Ich habe ein Android Telefon mit CyanogenMod Distribution. Es gibt mehrere ownCloud Clients, hier ein Screenshot vom original ownCloud client, herausgegeben von ownCloud Inc. Für diesen Client wird auch der Quellcode zur Verfügung gestellt (https://github.com/owncloud/android).

ownCloud Client für Android
ownCloud Client für Android

tl:dr ownCloud ist eine vollwertige Dropbox Alternative mit voller Kontrolle, gehostet auf eigenen Root-Servern

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.

Kategorien
News

Hallo Welt

Dies ist der erste Blogeintrag. Wir haben es geschafft, ein Drupal Content Management System auf einem Root-Server zu installieren.

Als CSS Framework benutzen wir Bootstrap.

Das Blog wird nach und nach ausgebaut und spätestens jeden Montag erscheint ein neuer Artikel.

Am Montag, den 03. November geht es los!

Hier gibt es schon ein wenig mehr zu lesen → über uns.

UPDATE: Seite März 2016 benutzen wir WordPress→ Von Drupal nach WordPress.