Kategorien
Allgemein Betriebssysteme Infrastruktur

F-Droid – Was ist das eigentlich?

Die Smartphone Welt teilt sich ja in Google Android NutzerInnen, Apple iOS NutzerInnen und den „Rest“. In der Schweiz nutzen 56 Prozent ein Android-Gerät, 44 Prozent ein iPhone. Der „Rest“ hat einen Anteil von weniger als einem Prozent und spielt daher momentan keine grosse Rolle.

Wenn man sein Smartphone gekauft hat, installiert man Apps um mit dem Gerät etwas anfangen zu können, beispielsweise eine Navigations App, eine Messenger App, oder, oder …

Dem iOS Benutzer werden die zur Verfügung stehenden Apps über den Apple Store angeboten, den Android Benutzern normalerweise über den Google Play Store. In beiden Stores werden die Apps nach bestimmten Kriterien überprüft bevor sie freigegeben werden. Manchmal werden auch Apps wieder aus dem Store entfernt, weil sie gegen die jeweiligen Geschäftsbedingungen verstossen.

Während Apple für seine Smartphones das „Store Monopol“ hat, ist es beim Android System durchaus möglich, Apps auch aus anderen Quellen als dem Google Play Store zu installieren.

Kategorien
Services

Lies es später in wallabag

Mit Lies es später Services wie Pocket und Instapaper können Sie Online Artikel mehr oder weniger einfach zu einer Liste hinzufügen. Diese Liste wird beim entsprechenden Service Provider verwaltet. Dieser bietet Clients und Apps für alle gängige Telefone, Tabletts und sonstige Computer an und so haben Sie die Möglichkeit, immer wenn Sie mal Zeit haben, einen Artikel auf der Liste zu lesen.
Soviel zur Theorie 🙂

Als die Mozilla Foundation im Mai 2015 beschloss, den proprietären Service „Pocket“ in den Firefox Browser einzubauen, stellte sich die Frage, warum nicht die Open Source Variante wallabag genommen wurde. Prompt meldeten User einen Fehler im Firefox Bugtracker System (Bug 1163434 – Provide other read it later services than Pocket). Die Verwendung von proprietären Elementen in Mozilla Produkten ist umstritten und in diesem Fall werden auch noch Benutzerdaten bei Dritten gespeichert. Bis heute (Juli 2015) ist das Thema nicht gelöst. Zeit sich nach Alternativen umzusehen.

Wallabag ist die Free and Open Source Alternative zu Pocket. Es gibt Clients für Windows, Mac OS, Android, iOS und Windows Phone.

In diesem Artikel zeige ich exemplarisch die Installation von wallabag auf einem Root Server (Verwalten der Liste) im Firefox Browser (Hinzufügen von Artikeln) und auf einem Android Telefon (Hinzufügen von Artikeln).

Installation auf dem Server

Wallabag benötigt im einfachsten Fall nur PHP und keinen Datenbankserver. Falls Sie ein Datenbank Server wie MySQL e nutzen wollen, müssen eine entsprechenden Datenbank, sowie ein Benutzerkonto anlegen.

Ich beschreibe die Variante ohne Datenbank Server.

Sie können optional einen virtuellen Host anlegen, ich installiere wallabag in einem Verzeichnis auf serverblogger.ch

Download und entpacken

wget http://wllbg.org/latest
unzip latest

Es entsteht ein Unterverzeichnis mit dem Namen wallabag-1.9. Dieses Unterverzeichnis benenne ich in wallabag um, verschiebe es in mein Dokumentenverzeichnis und mache den Benutzernamen des Apache Webservers (www-data) zum Eigentümer.

mv wallabag-1.9 wallabag
sudo mv wallabag /var/www/serverblogger.ch/public_html/
sudo chown -R www-data:www-data /var/www/serverblogger.ch/public_html/wallabag/

Installer

Rufen Sie nun im Browser die entsprechende URL auf, in meinem Fall https://serverblogger.ch/wallabag.

In meinem Fall würde es für eine Installation ausreichen, aber ein Hinweis erscheint, dass ich doch besser Composer installieren sollte.

Installation - Server Compatibility Test
Installation – Server Compatibility Test

Die Lösung ist ebenfalls vorgegeben, also zurück auf die Konsole. Die Installation muss mit dem root User erfolgen.

cd /var/www/serverblogger.ch/public_html/wallabag/
curl -s http://getcomposer.org/installer | php
php composer.phar install

Nach einem reload der Seite fehlt nun noch die Erweiterung für eine PostgreSQL Datenbank. Da ich die aber nicht nutzen will, spielt das keine Rolle. Ich lege einen Benutzernamen und Passwort fest und klicke auf den Button install wallabag.

Installation - Benutzer anlegen
Installation – Benutzer anlegen

Erfolgreiche Installation
Erfolgreiche Installation

Nach dem erfolgreichen Login sehe ich die Oberfläche mit drei Beispielartikeln.

Wallabag Web
Wallabag Web

Im config Bereich finden Sie Hinweise und Links zu den Themen

  • Speichern eines Artikels
  • Links zur mobilen Apps
  • Erzeugung von Feeds
  • Wechseln des Themes und der Sprache (Deutsch ist verfügbar)
  • Benutzer hinzufügen
  • Import und Export (beispielsweise als ePub, Mobi oder PDF ebook)
  • Upgrade-Informationen

Die Serverkomponente ist nun installiert und funktionsfähig

Mozilla Firefox Add-On

Auf der config Seite finden Sie den Link zum Firefox Add-On. Installieren Sie es und tragen Sie in den Preferences die Server URL ein.

Wallabag - Firefox Add On
Wallabag – Firefox Add On

Nun benötigen Sie noch einen Button zum Klicken, wenn Sie eine Website zum später lesen markieren wollen. Rufen Sie wieder den Konfigurationsbereich auf und ziehen Sie den bag it! Link in die Lesezeichenzeile des Browsers.

bag it! Link erstellen
bag it! Link erstellen

Wenn Sie nun Webseiten finden, die Sie später lesen wollen, klicken Sie einfach in der Lesezeichen auf den bag it! Link. Wallabag sammelt die Seiten und stellt Sie im unread Bereich dar. Damit das funktioniert, müssen Sie auf Ihrer wallabag Installation auf dem Server eingeloggt sein.

Wallabag - unread
Wallabag – unread

Android Telefon

Um auf Ihrem Telefon Zugriff auf den unread Bereich zu bekommen, könnten Sie einfach die Webanwendung auf dem Server aufrufen oder die wallabag App herunterladen. Die Links zu F-Droid und Google Play Store finden Sie auch im config Bereich der Administration oder mittels Suche in den Stores. Damit die App Verbindung zum Server aufnehmen kann, müssen Sie im Konfigurationsbereich die Feeds aktivieren. Nach der Aktivierung wird ein Token und die User-ID angezeigt.

wallabag Feed mit User-ID und Token
wallabag Feed mit User-ID und Token

Rufen Sie die Einstellungen der App auf und tragen Sie die entsprechenden Werte ein. Klicken Sie anschliessend auf Synchronize. Die zwei nicht gelesenen Artikel werden nun in einer Liste und einer Einzelansicht angezeigt.

Wallabag - Android - unread Liste
Wallabag – Android – unread Liste

Wallabag - Android - einzelner Artikel
Wallabag – Android – einzelner Artikel

Um auf dem Telefon Webseiten speichern zu können, müssen Sie sich ebenfalls in der Serverkomponente einloggen. Danach können Sie aus allen Android Anwendungen Artikel an bag it! schicken.

Link

http://wallabag.org

Fazit

Mit dieser Kombination haben Sie eine mehrbenutzerfähige „Lies mich später“ Umgebung und damit Ihren eigenen Service aufgebaut, der in meinem Fall sogar noch TLS/SSL abgesichert ist!


tl;dr: wallabag ist eine vollwertige Free and Open Source Alternative zu Pocket und Instapaper

Kategorien
Allgemein Groupware Open-Xchange OX

Photostream zwischen Handy und OX App Suite

Jeder NOVATREND Hosting Kunde kann kostenlos die OX App Suite nutzen.

Heute will ich Ihnen zeigen, wie Sie einen Photostream zwischen Ihrem Mobiltelefon und der OX App Suite einrichten. Dieser Photostream sorgt dafür, dass alle Bilder, die Sie mit Ihrem Mobiltelefon aufnehmen, automatisch an die Komponente OX Drive der OX App Suite übertragen werden.

Download und Installation

Laden Sie sich die OX Drive App aus dem jeweiligen App Store (Android, Apple) und installieren Sie auf Ihrem mobilen Gerät.
Ich zeige im weiteren Verlauf die Android Version. Auf dem iPhone und iPad sieht alles noch schicker aus 🙂

Nach dem Starten der App müssen Sie die Server URL unserer OX App Suite eintragen:

https://ox1.tophost.ch
OX Drive - Server URL

Die App nimmt mit dem Server Kontakt auf und fragt als nächstes nach Ihrer E-Mail und dem Passwort.

OX Drive - Anmeldung
OX Drive – Anmeldung

Im nächsten Konfigurationsschrift wird gefragt, welche Ordner und Dateien neben dem Photostream syncronisiert werden sollen. Sie haben die Wahl zwischen allen Dateien und Ordnern und den Favoriten. Ich benötige nicht alle Dateien auf dem Telefon, daher wähle ich Favorites aus. Die App zeigt mir dann alle existierenden Dateien an, synchroniert aber nur die automatisch, die ich mit einem Sternchen als Favorite gekennzeichnet habe.
OX Drive - Dateiauswahl
OX Drive – Dateiauswahl

Im letzten Konfigurationsschritt können Sie den automatischen Upload Ihrer Fotos einschalten. Sie können alle Fotos syncen oder nur die neuen Fotos, die sie nach diesem Konfigurationsschritt aufnehmen werden. Der Background Upload sorgt dafür, dass Ihre Fotos direkt nach der Aufnahme hochgeladen werden.
OX Drive - Photostream Einstellungen
OX Drive – Photostream Einstellungen

Sie werden nun in dem Images Bereich der App weitergeleitet. Die vorgebene Sortierung ist zeitlich und in sinvollen Schritten unterteilt. Sie können in den Einstellungen auch eine Sortierung nach Name oder Dateigrösse wählen.
OX Drive - Images
OX Drive – Images

Nach einem Klick auf ein Bild können Sie durch ihre Bilder „wischen“. Hier mal ein Beispiel im Querformat:

OX Drive - Galerie
OX Drive – Galerie

Ausser dem Image Tab gibt es noch das Document Tab und die kombinierte Ansicht All. Im All Tab können Sie durch einen Klick auf das Pluszeichen neue Ordner, sowie neue Fotos und Videos erstellen. Durch einen Klick auf die Lupe können Sie nach Dateien suchen. Über das Menu links oben erreichen Sie die Settings in denen Sie auch sehen können, wieviel Platz Sie in Ihrem OX Drive Konto bereits belegt haben.
OX Drive - Settings
OX Drive – Settings

Nach mehreren Wochen des Ausprobieren kann ich bestätigen, dass die Android App stabil läuft und auch der Background Upload Prozess zuverlässig seine Arbeit verrichtet. Dateien können umbenannt, gelöscht, geteilt, als Favorit markiert und mit anderen Apps geöffnet werden. Die OX Drive App bietet den gleichen Komfort wie Dropbox oder OwnCloud und darüberhinaus die nahtlose Verknüpfung mit den anderen Groupware Elementen der OX App Suite.


tl;dr: Mit der Drive App aus der OX App Suite können Sie einfach alle Fotos auf Ihrem Telefon oder Tablet synchronisierten.

Kategorien
Messenger

Messenger – Schnell, Einfach, Sicher – IRC

In Zeiten von Facebook, WhatsApp, Telegram, Threema und vielen anderen Messaging Services stellt sich für Firmen und grössere Gruppen von Menschen die Frage, wie man denn nun am Besten ohne einen fremd verwalteten Server miteinander textbasiert kommunizieren kann.

Wie realisiert man textbasierte Kommunikation in einem Unternehmen, die auf allen Endgeräten funktioniert, wenig Ressourcen verbraucht und auch noch einigermassen „sicher“ ist? Die wohl älteste, aber nach wie vor funktionierende Variante ist der Interlay Relay Chat (IRC). Ursprünglich wurde der Relay Chat Anfang der achtziger Jahre im BITNET (Because It’s Time NETwork) genutzt. 1988 wurde das Prinzip durch den finnischen Studenten Jarkko Oikarinen auf das Internet übertragen.

Wenn Sie noch nie etwas von IRC gehört haben, schauen Sie sich New User Introduction auf irchelp.org an. Ein guter Anfang auf Deutsch ist Internet Relay Chat – Eine möglichst kurze Einführung von Kai ‚Oswald‘ Seidler.

Grundsätzlich benötigen Sie einen IRC-Client und einen IRC-Server. Der IRC-Client läuft auf Ihrem Endgerät, der IRC-Server ist entweder öffentlich zugänglich und wird von „jemandem“ betrieben.

Sie können sich aber auch Ihren eigenen IRC-Server auf Ihrem Root-Server installieren und darüber völlig autark passwortgeschützt und verschlüsselt kommunizieren. In diesem Artikel werden wir den UnrealIRC Server instalieren und über verschiedene Clients damit Kontakt aufnehmen.

IRC Server

Die Konfiguration von IRC Servern wie ratbox, die als Installationspaket für Ubuntu vorliegen ist ziemlich aufwändig, daher verwende ich in diesem Beispiel den Unreal IRC Server. Die Installation und Konfiguration ist recht überschaubar.

Installation

Ich lade die Dateien in das Verzeichnis /home/novatrend

Download des Quellcodes

wget https://www.unrealircd.org/downloads/Unreal3.2.10.4.tar.gz

Auspacken des Pakets

tar xfz Unreal3.2.10.4.tar.gz

Dann in das Verzeichnis wechseln und mit ./Config das Konfigurationsprogramm aufrufen.

novatrend@server1:~/Unreal3.2.10.4$ ./Config

Die meisten Fragen können mit der Entertaste und dem vorgeschlagenen Wert beantwortet werden

What directory are all the server configuration files in?
[/home/novatrend/Unreal3.2.10.4] ->

What is the path to the ircd binary including the name of the binary?
[/home/novatrend/Unreal3.2.10.4/src/ircd] ->

What should the default permissions for your configuration files be? (Set this to 0 to disable)
It is strongly recommended that you use 0600 to prevent unwanted reading of the file
[0600] ->

Wenn der Chat verschlüsselt sein soll müssen sie hier Yes eingeben

Do you want to support SSL (Secure Sockets Layer) connections?
[No] -> YES

Die nächste Frage können Sie mit Enter bestätigen. Die OpenSSL Library wird unter Ubuntu 14.04. automatisch gefunden

If you know the path to OpenSSL on your system, enter it here. If not
leave this blank (in most cases it will be detected automatically).
[] ->

Auch bei den weitere Fragen können Sie die Standardwerte übernehmen. Sie können im weiteren Verlauf der Installation auch ein Zertifikat erzeugen, falls Sie noch keins haben.

_______________________________________________________________________
|                                                                       |
|                    UnrealIRCd Compile-Time Config                     |
|_______________________________________________________________________|
|_______________________________________________________________________|
|                                                                       |
| Now all you have to do is type 'make' and let it compile. When that's |
| done, you will receive other instructions on what to do next.         |
|                                                                       |
|_______________________________________________________________________|
|_______________________________________________________________________|
|                        - The UnrealIRCd Team -                        |
|                                                                       |
| * Syzop     syzop@unrealircd.com                                      |
|_______________________________________________________________________|

Wenn diese Meldung erscheint ist die Konfiguration beendet und Sie müssen mit dem make Kommando die eigentliche Kompilierung starten

novatrend@server1:~/Unreal3.2.10.4$ make
...
__________________________________________________
| Compile is now complete.                         |
| You should now read the documentation and learn  |
| how to configure your IRCd.                      |
|                                                  |
| If you really like UnrealIRCd, and would like to |
| make a donation, please read the Donation file in|
| this archive. :)                                 |
|                                                  |
| Thanks for using Unreal IRCd! If you are in need |
| for any kind of help regarding the IRCd please   |
| read the Unreal.nfo file.                        |
|__________________________________________________|
novatrend@server1:~/Unreal3.2.10.4$

Der IRC Server ist nun auf Ihrem Root-Server installiert.

Konfiguration

Der IRC Server benötigt eine Konfigurationsdatei. Im /doc Vereichnis finden Sie Beispieldateien in mehreren Sprachen.

novatrend@server1:~/Unreal3.2.10.4/doc$ ls -l
total 1996
-rw-r--r-- 1 novatrend novatrend  20342 Jul 26 17:42 example.conf
-rw-r--r-- 1 novatrend novatrend  20414 Jul 26 17:42 example.de.conf
-rw-r--r-- 1 novatrend novatrend  22535 Jul 26 17:42 example.es.conf
-rw-r--r-- 1 novatrend novatrend  23120 Jul 26 17:42 example.fr.conf
-rw-r--r-- 1 novatrend novatrend  23117 Jul 26 17:42 example.hu.conf
-rw-r--r-- 1 novatrend novatrend  19916 Jul 26 17:42 example.nl.conf
-rw-r--r-- 1 novatrend novatrend  21650 Jul 26 17:42 example.ru.conf
-rw-r--r-- 1 novatrend novatrend  21524 Jul 26 17:42 example.tr.conf

Ich nehme die Datei example.de.conf und kopiere Sie in das /Unreal3.2.10.4 Verzeichnis. Der Name muss unrealircd.conf sein

nano unrealircd.conf

Ein Konfigurationsbeispiel finden Sie hier unter http://irc-guide.de/wiki/Main/UnrealIRCdBeispielkonfigurationsdatei.

Die Konfigurationsdatei ist sehr gut kommentiert (und sehr lang). Hier die Änderungen, die ich vergenommen habe:

Kommentieren Sie diese beiden Zeilen aus

/* FUER *NIX (Unix, Linux, Xenix etc.), sind diese 2 Zeilen auszukommentieren: */
loadmodule "src/modules/commands.so";
loadmodule "src/modules/cloak.so";

Geben Sie dem Server einen Namen

me
{
        name "irc.serverblogger.ch";
        info "Serverblogger Server";
        numeric 1;
};

Legen Sie den Admin fest

admin {
        "Hagen Graf";
        "hagen";
        "hagen@novatrend.ch";
};

Legen Sie ein Passwort fest

allow {
        ip             *@*;
        hostname       *@*;
        class           clients;
        password "geheimespasswort"
        maxperip 5;
};

Legen Sie Channel fest

allow   channel {
        channel "#serverblogger-chat";
        channel "#raum1";
        channel "#raum2";
        channel "#raum3";
};

Verhindern Sie, dass Channel angelegt werden

deny channel {
        channel "*";
        reason "Es gibt schon vier Raeume :) ";
};

Netzwerk Konfiguration

set {
    network-name            "IRC";
    default-server          "serverblogger.ch";
    services-server         "serverblogger.ch";
    stats-server            "serverblogger.ch";
    ...
    cloak-keys {
                "aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
                "Key eingeben";
                "Key eingeben";
     };

}

Lesen Sie die restlichen Einstellungen und speichern die Datei ab. Im gleichen Verzeichnis können Sie noch die Willkommensdateien motd.conf und rules.conf erstellen um eine Willkommensnachricht auf dem Client anzuzeigen.

Starten und stoppen können Sie den IRC Server nun mit den Befehlen

./unreal start

und

./unreal stop

IRC Clients

Es gibt ein grosses Angebot für IRC-Clients auf allen denkbaren Plattformen. Hier ein paar Beispiele mit dem gerade aufgesetzten irc.serverblogger.ch Server.

Lime (OSX)

http://limechat.net/mac/

Konfiguration Lime IRC Client
Konfiguration Lime IRC Client

Chat Fenster Lime IRC Client
Chat Fenster Lime IRC Client

AndroIRC (Android)

http://www.androirc.com/

AndroIRC Chatfenster
AndroIRC Chatfenster

Adium (OSX)

https://adium.im/

Adium Chat Client
Adium Chat Client


tl;dr: Der Internet Relay Chat ist eine schnelle, einfache und sichere Alternative zu proprietären Messenger Systemen.

Kategorien
Infrastruktur Server Verschlüsselung

Ein virtuelles privates Netzwerk – VPN

Wenn ein Computer mit dem Internet verbunden ist, ist er ein Teil des „ihn umgebenden Netzes“. Nimmt er eine Verbindung zu einem Virtual Private Network (VPN) auf, so erhält er eine andere IP-Adresse und wird damit auch ein Teil dieses anderen Netzes. Der Vorgang ist vergleichbar mit dem Umstecken des Netzwerkkabels oder der Auswahl eines anderen WiFi Netzes. Meistens werden VPN sinnbildlich als „Verlängerung“ eines Firmen-Netzwerkkabels für Mitarbeiter genutzt, die Zuhause oder beim Kunden auf das Firmennetz zugreifen müssen. Ein Szenario gewinnt allerdings mehr und mehr an Bedeutung.

Bei einem web-basiertes VPN wird kein virtuelles „Verlängerungskabel“ gelegt, sondern ein gesicherter Zugriff auf bestimmte Dienste des VPN (z.B. Firmennetz) realisiert. Diese Dienste müssen als Webanwendung oder Proxy aufgebaut sein.

  • Lokale Zugriffsbeschränkungen. Sie sind mit einem Netz verbunden, in dem Zugriffsbeschränkungen herrschen, beispielsweise in Ländern, Hotels oder Umgebungen, die bestimmte Websites/Services blocken. Wenn im VPN-Netz die gewünschten Services erreichbar sind, können Sie sie nutzen.
  • Schutz Ihrer Privatsphäre: Sie sind in einem öffentlichen Funknetz mit Ihrem Handy, Tablet oder PC und wollen nicht, dass Ihre Netzwerkanfragen vom Betreiber des öffentlichen Netzes mitgelesen werden können. Wenn das VPN-Netz vertrauenswürdig ist, ist Ihre Privatsphäre besser geschützt.

Ihr Computer muss in der Lage, über das Internet eine Verbindung mit einem VPN-Gateway aufzubauen und alle Netzwerkanfragen über dieses Gateway zu leiten. Der Kontakt zu einem VPN-Gateway sollte über verschlüsselte Verbindungen, sogenannte „VPN-Tunnel“, erfolgen, um eine weitgehend abhör- und manipulationssichere Verbindung durch das ungesicherte, eingeschränkte Netz hindurch zu ermöglichen.

Die Verbindung ist allerdings nur „weitgehend“ sicher, weil die Anzahl und Grösse der Datenpakete Rückschlüsse auf die Daten zulassen. Der VPN-Tunnel ist also an manchen Stellen ein bisschen „durchsichtig“. Sie ist auch nicht wirklich „abhörsicher“, da der Traffic ab dem VPN-Server Standort ja vermutlich unverschlüsselt übertragen wird.

Verbindungsarten

Technisch teilen sich die Verbindungen in

  • Site-to-Site: Die Netze der Niederlassungen einer Firma sind untereinander verbunden
  • End-to-Site: Sie verbinden sich mit dem einem VPN-Gateway um die gewünschten Services zu nutzen und/oder Ihre Privatsphäre zu schützen. Der Mitarbeiter beim Kunden verbindet sich mit dem VPN des Firmennetzes.
  • End-to-End: Der Mitarbeiter verbindet sich nicht direkt mit dem VPN des Firmennetzes, sondern zunächst mit einem VPN-Gateway auf einem anderen Server. Dieser Server stellt dann eine ebenfalls getunnelte Verbindung zum gewünschten Netz her.
  • Host-to-Host: Ist der Teil der End-to-End Verbindung, der zwischen zwei Servern stattfindet.

Protokolle

Sicherheit spielt bei der Authentifizierung gegenüber dem VPN und bei der Übertragung der Netzwerkpakete eine Rolle. Wichtig dabei ist die Verschlüsselng der Kommunikationsinhalte und die Authentifizierung aller beteiligten Partner untereinander.

Gängige Protokolle sind beispielsweise IPsec, TLS/SSL und SSH. Diese Protokolle werden auf unterschiedliche Art implementiert.

Eine verbreitete Implementierung ist OpenVPN. In diesem Artikel wollen wir das Open Source Programm auf unserem Root-Server unter Ubuntu 14.04 installieren, mit dem Laptop (MacBook) und Handy (Android) darauf zugreifen und unseren gesamten Netzwerktraffic über diesen Server leiten. Wir müssen dazu den OpenVPN Server auf dem Root-Server installieren und konfigurieren, Zertifikate für Server und Clients erzeugen, sowie die entsprechenden Clients auf Laptop und Telefon installieren und konfigurieren. Als Client nutzen wir auf dem Laptop das Programm Tunnelblick und auf dem Telefon openVPN Connect.

OpenVPN auf Root-Server installieren

Wir installieren folgende Pakete:

sudo apt-get install openvpn
sudo apt-get install easy-rsa

In den Paketen sind Beispielkonfigurationen sowie das Verzeichnis für die Schlüsselerzeugung enthalten. Dieses müssen an einen geeigneten Ort entpackt werden:

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
sudo gunzip /etc/openvpn/server.conf.gz
sudo cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa2

Schlüssel und Zertifikate generieren

Die Schlüssel und Zertifikate sollten auf Ihrem lokalen Rechner generiert und dann auf den Root-Server übertragen werden. Ich mache es in diesem Blogeintrag auf dem Server.

Die Datei vars muss entsprechend Ihrer Daten angepasst werden

nano /etc/openvpn/easy-rsa2/vars

Passen Sie diese Vorlagen in der Datei auf Ihre Daten an

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_CN=changeme
export KEY_NAME=changeme
export KEY_OU=changeme
export KEY_ALTNAMES=changeme

Bei mir sieht es dann so aus:

export KEY_COUNTRY="CH"
export KEY_PROVINCE="ZU"
export KEY_CITY="Wallisellen"
export KEY_ORG="NOVATREND"
export KEY_EMAIL="hagen@novatrend.ch"
export KEY_OU="blogvpn"
export KEY_ALTNAMES="blogvpn"
export KEY_NAME="blogvpn"
export KEY_CN="blogvpn"

Aufgrund eines Fehlers wird das Unterverzeichnis für die Keys nicht erstellt (weiterhin in /etc/openvpn/easy-rsa2/):

mkdir keys

Die neueste openssl-x.x.x.cnf muss in openssl.cnf kopiert werden.

cp openssl-1.0.0.cnf openssl.cnf

Die Datei vars muss den Umgebungsvariablen hinzugefügt werden

source ./vars

Nach dieser erstellen wir den Master-Schlüssel und werden eine Certificate Authority (CA)

./clean-all

./build-ca

Wir sind jetzt eine CA und im Verzeichnis /keys wurden die Dateien ca.crt und ca.key erzeugt.

Als nächstes erzeugen wir die Schlüssel für unseren Server

./build-key-server server [name_des_servers]

Nun müssen die Schlüssel für die Clients erzeugt werden, in meinem Fall einen für den PC und einen für das Telefon. Das kann man mit oder ohne Passwort machen. Mit Passwort muss das Passwort bei jedem Anmelden eingegeben werden.

Ohne Passwort:

./build-key client1
./build-key client2

Mit Passwort:
./build-key-pass client1
./build-key-pass client2

Jetzt müssen die Diffie-Hellman-Parameter generiert werden. Diese sind nötig, um kryptografische Schlüssel sicher über unsichere Kanäle auszuhandeln.

./build-dh

Alle benötigten Dateien liegen nun im Ordner /keys. Die Dateien mit der Endung .key sind die geheimen Schlüssel, die auf dem Rechner liegen sollten, zu dem sie gehören. Die .crt Dateien sind nicht geheim. server.key bleibt auf dem Server, ca.key muss vom Server entfernt werden und kann auf einem USB Stick gespeichert werden. Jeder Client benötigt noch die Datei ca.crt, damit er den Server identifizieren kann.

Hinweis: Es muss darauf geachtet werden, dass die Dateien nie im ASCII-Modus übertragen werden. Dies kann dazu führen, dass die Datei nicht mehr entschlüsselt werden kann und somit ein Verbinden mit dem openVPN-Server nicht möglich ist. Fehlermeldung: „Error: private key password verification failed“. Man umgeht das Problem, indem man alle zu übertragenden Dateien in ein .tar- oder .rar-Archiv packt.

Konfiguration des openvpn Servers

Die Server-Konfigurationsdatei /etc/openvpn/server.conf muss mit den richtigen Namen der Schlüssel versehen werden.

nano /etc/openvpn/server.conf

Diese Zeilen mit den Schlüsselverweisen müssen angepasst werden:

ca ca.crt
cert server1.crt
key server1.key  
dh dh2048.pem     

Diese Zeilen müssen auskommentiert werden

push "redirect-gateway def1 bypass-dhcp"
user nobody
group nogroup

Als letztes muss noch die Datei /etc/rc.local um diese sechs Befehle ergänzt werden

sudo -E nano /etc/rc.local
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Danach muss der Server neugestartet werden

reboot

Jetzt können Sie den openVPN Server starten

/etc/init.d/openvpn restart

Dann können Sie nachsehen, ob der openVPN Server läuft. So sollte es aussehen

root@server1:~# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1 ...

Client Einrichtung auf Apple OS X

Als Erstes müssen Sie die Dateien ca.crt, client1.crt und client1.key auf Ihrem Max. Zippen Sie die Dateien am besten mit dem Befehl

zip client1.zip ca.crt client1.crt client1.key

Sie müssen nun openVPN auf Ihrem Mac installieren. Es gibt ein Softwarepaket, namens Tunnelblick, das genau das sehr komfortabel tut. Laden Sie es von https://code.google.com/p/tunnelblick/ und installieren Sie es.

Welcome to Tunnelblick
Welcome to Tunnelblick

Klicken Sie auf „I DO NOT have configuration files“
Create and Edit a Sample Configuration?
Create and Edit a Sample Configuration?

Erstellen Sie sich eine Konfigurationsdatei. Tunnelblick erstellt einen Ordner mit dem Namen „Sample Tunnelblick VPN Configuration“ ,erzeugt dort die Datei config.ovpn und öffnet sie in einem Editor.

Passen Sie diesen Befehl auf die IP-Adresse Ihres Servers an

remote [IP des Root-Servers] 1194

Dann speichern Sie die Datei und entpacken die client1.zip in diesen Ordner, so dass nun die Dateien

ca.crt
client1.crt
client1.key
config.ovpn

enthalten sind. Benennen den Ordner um. Wichtig bei der Umbenennung ist die Endung .tblk.

Aus „Sample Tunnelblick VPN Configuration“ wird so beispielsweise vpn_serverblogger_ch.tblk.

Diese Datei müssen Sie nun doppelt anklicken und Tunnelblick liest die Konfiguration.

Konfiguration Tunnelblick
Konfiguration Tunnelblick

Ich wähle Only me

Konfiguration installiert
Konfiguration installiert

Der Installer erledigt seine Arbeit und in der oberen rechte Ecke des Bildschirms erscheint das Tunnelblick Symbol
Tunnelblick
Tunnelblick

Atmen Sie mal durch und klicken auf connect. Wenn alles gut geht, werden Sie mit dem openVPN Server Ihres Root-Servers verbunden …
Verbunden
Verbunden

Auf Ihrem Mac müsste nun ebenfalls ein tun Device sein

grunzi:~ hagengraf$ ifconfig
...
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
inet 10.8.0.6 --> 10.8.0.5 netmask 0xffffffff

Besonders deutlich sehen Sie die Änderung, wenn Sie myipaddress.com aufrufen. Wenn Sie mit dem VPN verbunden sind, sollte dort die IP-Adresse Ihres Root-Servers erscheinen.

Client Einrichtung auf dem Android Telefon

Laden Sie sich die OpenVPN Connect App auf Ihr Android Telefon. Mein grösstes Problem war nun „Wie bekomme ich die Zertifikats- und Konfigurationsdateien auf mein Telefon?

Ich beschreibe dann mal meinen Weg: Ich habe ein Nexus 5 Android Telefon mit Cyanogenmod. Meine Idee war nun einfach ein zip Archiv der vier benötigten Daten auf dem Server zusammenzustellen und dann per Browser vom Telefon herunterzuladen.

Als erstes habe ich mir eine config.ovpn angelegt mit folgendem Inhalt:

client
dev tun
proto udp
remote 46.232.178.78 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client2.crt
key client2.key
comp-lzo
verb 3

Dann habe ich die vier Dateien in ein Archiv verpackt

root@server1:/etc/openvpn/easy-rsa/keys# zip client2.zip config.ovpn ca.crt client2.crt client2.key

Auf dem Telefon habe ich mir das Archiv geladen und entpackt

Dateimanager Android
Dateimanager Android

In der openVPN App habe ich dann Import von SD Card ausgewählt (Ich habe keine SD-Card am/im Telefon).
Auswahl der config.ovpn
Auswahl der config.ovpn

Jetzt die config.ovpn auswählen
Das Profil wird erfolgreich importiert
Profile imported
Profile imported

… und ich kann mich verbinden, muss allerdings vorher bestätigen, dass ich der App vertraue … Nunja …
I trust this application
I trust this application

Ich habe beschlossen der App zu vertrauen und kann mich problemlos mit dem Root-Server verbinden.
OpenVPN: Connected
OpenVPN: Connected

Die Verbindung kann ich nun bei Bedarf herstellen
OpenVPNConnect
OpenVPNConnect

Hilfreiche Quellen:

tl;dr: Es ist nicht schwer, ein virtuelles privates Netzwerk auf einem Root-Server, dem PC und dem Mobiltelefon einzurichten und damit ohne Einschränkungen zu arbeiten.