OpenVPN ist eine Open Source Software zum Aufbauen eines VPNs. Es existieren Server und Clients für die meisten Betriebssysteme wie Linux, Windows. Mac OS, Android und iOS. In diesem Beitrag beschreibe ich wie ein OpenVPN Server unter Raspbian Jessie Lite eingerichtet werden kann. Ich verwende eine Zertifikatsbasierte Authentifizierung bei meinem OpenVPN Server, was eine höhere Sicherheit als die Authentifizierung basierend auf Passwörtern hat.
Der OpenVPN Server kann einfach über nachfolgenden Befehl installiert werden.
$ sudo apt-get install openvpn
Konfigurieren
Schlüssel, Zertifikate und CRL
Zuerst muss ein Verzeichnis erstellt werden in dem die ganzen Schlüssel des Servers abgelegt werden sollen. Ich erzeuge diesen immer im OpenVPN Verzeichnis.
$ sudo mkdir /etc/openvpn/keys
Dort müssen nun folgende Dateien, welche durch easy-rsa3 geniert wurden, hinterlegt werden:
server.key
server.crt
crl.pem
ca.crt
dh.pem
Da diese Dateien teilweise sensitive Informationen enthalten sollten sie mit restriktive Dateiberechtigungen ausgestattet werden. Es reicht wenn root sie lesen kann – mit Ausnahme der crl.pem, welche auch vom Benutzer nobody gelesen werden muss, da der OpenVPN Server unter diesem ausgeführt wird.
Nun kann die Konfiguration des Servers angelegt werden. Sie befindet sich in der Datei /etc/openvpn/server.conf. Ich verwende nachfolgende Konfiguration für meinen VPN Server.
# Adapter, Protocol, Port, and IP range
dev tun
proto tcp
port 1194
server 10.8.0.0 255.255.255.0
# Keys, certificates, and security settings
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh.pem
crl-verify keys/crl.pem
remote-cert-tls client
cipher AES-256-CBC
auth SHA512
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384
tls-server
tls-version-min 1.2
auth-nocache
remote-cert-tls client
# Logging
status /var/log/openvpn-status.log 20
log-append /var/log/openvpn.log
verb 3
# Use low privileged user/group to run the daemon but allow restart via SIGUSR1
user nobody
group nogroup
persist-key
persist-tun
# Allow connections between clients
#client-to-client
# Enable compression
comp-lzo
# Allow multiple clients with the same common name
#duplicate-cn
# Keep the connection alive
keepalive 10 120
# Set the DNS Server
push "dhcp-option DNS <IP-des-Routers>"
# Route all traffic through VPN
push "redirect-gateway"
Auch bei dieser Datei benötigt nur root Lesezugriff
Nun kann der Server neu gestartet werden, damit die Konfiguration geladen wird
$ sudo service openvpn restart
Bei mir hat der OpenVPN Server die Konfiguration nicht gefunden. Ich musste den Raspberry Pi erst komplett neu starten, damit der OpenVPN Server die Konfigurationsdatei findet. Auch muss ich den Raspberry Pi neu starten, wenn ich die Konfigurationsdatei umbenenne.
Zum Überprüfen, ob die Konfigurationgeladen wurde kann einfach geschaut werden ob OpenVPN auf dem konfigurierten Port auf Verbindungen wartet. Falls dies der Fall ist sollte nachfolgender Befehl etwas zurückliefern.
Falls es beim Starten des OpenVPN Servers Probleme gibt kann er manuell über die Konsole gestartet werden um an zusätzlicheInformationen zu kommen.
$ sudo openvpn --config /path/to/server.conf
Falls sich keine Verbindung herstellen lässt sollte überprüft werden, dass der TCP Port 1194 auf dem Router zum Raspberry Pi weitergeleitet wird.
Internet über VPN weiterleiten
Nun muss Raspbian noch so konfiguriert werden, dass die Clients über das VPN eine Verbindung ins Internet herstellen können. Dazu zuerst folgende Befehle ausführen. Falls anstatt eth0 ein anderer Netzwerkadapter verwendet werden soll muss eth0 durch diesen ersetzt werden.
Nun muss in der Datei /etc/sysctl.conf noch der Kommentar vor nachfolgender Zeile entfernt werden.
net.ipv4.ip_forward=1
Und anschließend neu geladen werden.
$ sudo sysctl -p
Zuletzt muss die Weiterleitung der Pakete noch persistent gespeichert werden, da iptables-Regeln beim Neustart automatisch gelöscht werden. Falls wie im Beitrag Nützliche Tools für Ubuntu Linux 16.04 Server beschrieben das Paket iptables-persistent installiert wurde kann dies einfach mit nachfolgendem Befehl erledigt werden.
Let’s Encrypt stellt kostenfreie SSL Zertifikate aus, welche von den gängigen Betriebssystemen und Browsern akzeptiert werden. Diese sind jeweils nur 90 Tage gültig und müssen daher regelmäßig erneuert werden. Damit dies nicht immer manuell geschehen muss gibt es Tools welche diesen Vorgang automatisieren. Das offizielle Tool dafür istcertbot. In diesem Beitrag beschreibe ich wie unter Raspbian Jessie Lite mit nginx, certbot und dem webroot Plugin Zertifikate für Webseiten angefragt und automatisch erneuert werden können.
Installation
In den offiziellen Paketquellen von Raspbian Jessie Lite ist keine Version von certbot verfügbar. Allerdings enthält das Backports Repository von Debian Jessie, auf welchem Raspbian Jessie Lite basiert, eine recht aktuelle Version von certbot. Damit diese Installiert werden kann muss allerdings zuerst das Backports Repository aktiviert werden. Wie dies funktioniert habe ich im Beitrag Debian Backports in Raspbian Jessie Lite aktivieren und verwenden beschrieben.
Nachdem das Backports Repository aktiviert wurde kann nach dem Aktualisieren der Paketlisten certbot installiert werden.
Debian Backports erlauben es neuere Software als in den Debian Repositorien vorhanden zu installieren. Die für Debian Jessie können auch bei Raspbian Jessie Lite verwendet werden, welches auf Debian Jessie basiert. Auf der Webseite https://packages.debian.org/jessie-backports/ kann die aktuelle Paketliste der Debian Jessie Backports eingesehen werden. In diesem Beitrag beschreibe ich wie die Backports aktiviert und verwendet werden können.
Aktivierung
Zuerst müssen die Debian Signing Keys importiert werden.
Jetzt kann das Backports Repositoryhinzugefügt werden.
$ echo 'deb http://httpredir.debian.org/debian jessie-backports main contrib non-free' | sudo tee -a /etc/apt/sources.list.d/jessie-backports.list
Damit die Pakete im Backports Repository auch gefunden werden muss die Paketliste noch aktualisiert werden.
$ sudo apt-get update
Verwendung
Das Backports Repository hat eine niedrigere Priorität als die übrigen Repositorien. Deshalb sollten es keine normalen Raspbian Pakete überschreiben. Deshalb muss aber apt jedes Mal explizit gesagt werden, dass es Backports verwenden soll. Der Befehl zum Installieren eines Paketes aus dem Backports Repository sieht dann folgendermaßen aus.
In diesem Beitrag beschreibe ich wie nginx mit einer sicheren SSL Konfiguration und PHP auf Raspbian Jessie installiert und konfiguriert werden kann.
nginx & PHP installieren
Zuerst müssen nginx und PHP mit nachfolgendem Befehl installiert werden.
$ sudo apt-get install nginx php5-fpm
PHP testen
Nun sollte überprüft werden das PHP auch tatsächlich funktioniert. Dazu muss die Konfiguration der nginx Standardseite (/etc/nginx/sites-available/default) angepasst werden. Es müssen vor folgenden Zeilen die Kommentarzeichen entfernt werden.
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
Anschließend muss noch die nginxKonfigurationneugeladen werden, damit die Änderungen wirksam werten. Vorher sollte getestet werden, dass die Konfiguration keine Fehler enthält.
Nun kann einfach eine Datei phpinfo.php mit nachfolgendem Inhalt im Verzeichnis der Standardwebsite (/var/www/html/) angelegt werden.
<?php phpinfo(); ?>
Abschließend kann die Datei einfach über den Webbrowser aufgerufen werden (z.B. über http://example.com/phpinfo.php). Die Ausgabe sollte folgendermaßen aussehen.
nginx Konfigurieren
Nach der Installation muss nginx noch konfiguriert werden. Dies ist etwas aufwendiger als für PHP. Die Hauptkonfigurationsdatei ist /etc/nginx/nginx.conf. Die Konfiguration der einzelnen Seiten befindet sich im Verzeichnis /etc/nginx/sites-available/ und die Konfiguration der aktuell aktivierten Seiten im Verzeichnis /etc/nginx/sites-enabled/.
/etc/nginx/nginx.conf
Schauen wir uns zuerst die Hauptkonfigurationsdatei genauer an.
Zu Beginn werden generelle Parameter festgelegt.
user definiert den Linux Benutzer unter dem nginx laufen soll. www-data ist der Standardnutzer unter dem Webserver unter Debian/Ubuntu laufen.
worker_processes ist die Anzahl der nginx Prozesse. auto versucht den besten Wert automatisch zu finden.
pid ist zur Kommunikation mit dem Betriebssystem und sollte auch bei dem Standardwert (\run\nginx.pid) belassen werden.
woker_connections innerhalb von events definiert die maximale Anzahl von Verbindungen pro nginx Prozess (768 ist der Standardwert).
Der nächste Block (http) definiert die Parameter für die eigentlichen Verbindungen.
Basiseinstellungen
sendfile, tcp_nopush und tcp_nodelay erhöhen die Performance von nginx
keepalive_timeout definiert die Zeit in Sekunden zu welcher eine Verbindung vom Webserver geschlossen wird. Danach muss eine neue TCP und TLS Verbindung aufgebaut werden.
ssl_protocols erlaubt nur TLS in Version 1.0, 1.1 oder 1.2.
ssl_ciphers erlaubt nur Algorithmen mit Perfect Forward Security. Das bedeutet, dass auch wenn später der Private Key kompromittiert wurde die alten Verbindungen nicht entschlüsselt werden können.
ssl_prefer_server_ciphers sagt das die Algorithmenpreferenz des Servers und nicht des Clients verwendet werden soll.
ssl_session_cache definiert, dass es einen 10 MB Cache gibt in welchem Verbindungsinformationen zwischengespeichert werden. Dies erlaubt es bei Wiederaufnahme einer Verbindung einige Schritte im Verbindungsaufbau zu sparen.
ssl_dhparam verweist auf selbst generierte EECDH/EDH Parameter welche verwendet werden sollen. Sie sind länger als die Standardmäßig verwendeten Parameter. Wie diese generiert werden beschreibe ich weiter unten.
ssl_stapling und ssl_stapling_verify sagt das der Server Informationen über die Gültigkeit des Zertifikates überprüfen und beim Verbindungsaufbau an den Client schicken soll.
ssl_ecdh_curve spezifiziert die Kurve welche für ECDHE verwendet werden soll. Die hier angegebene Kurve verwendet längere Schlüssel als die standardmäßig verwendete.
ssl_session_tickets deaktiviert Session Tickets, da diese Forward Security aushebeln können.
Header
add_header X-Content-Type-Options verbietet mime-sniff in Chrome und Internet Explorer
add_header X-Frame-Options verbietet es die Website auf einer anderen Domain in einem frame oder iframe zu laden.
Logging
access_log legt fest in welcher Datei alle Zugriffe geloggt werden sollen
error_log legt fest in welcher Datei alle Fehlermeldungen geloggt werden sollen
Gzip
gzip setzt ob gzip aktiviert werden soll oder nicht. Da all meine Webseiten nur per TLS erreichbar sind und gzip mit TLS ein Sicherheitsrisiko darstellt habe ich es deaktiviert.
Vitual Host Konfigurationen
Lädt zusätzliche Konfigurationsdateien aus dem Unterordner conf.d sowie die aktiven Seiten im Unterordner sites-enabled.
Da ich längere Parameter verwenden möchte als die Standardkonfiguration müssen die dhparam selber generiert werden. Dies kann wie nachfolgend beschrieben im Terminal erledigt werden – es kann einige Stunden dauern bis der Befehl zum Generieren erfolgreich ausgeführt wurde.
$ cd /etc/ssl/certs
$ sudo openssl dhparam -out dhparam.pem 4096
Generating DH parameters, 4096 bit long safe prime, generator 2
This is going to take a long time
........................................................................................................................................................................................................................................................................................................................+......................................................................................................................................................................................................+.............................................................................+..........................................................................................................................................................................................................................................................+...............................................................................................................+......................+..........................................+......................................................................................................................................+......................................+................................+........................................+........................................................................................+...............................................+..............................................................................................................................+..........................................................................+.................................................................................+........+......................................................+...................................................................................................................................................................................................+................+................................................+.............................................................+....................................................................................................................+...............................................+...................................................................................................................................................................................................................................................+......................
[...]
Konfiguration für eine neue Seite erstellen
Die Konfigurationsdateien der einzelnen Seiten befinden sich im Verzeichnis /etc/nginx/sites-available/. Ich verwende immer nachfolgendes Template als Basis für meine PHP-Seiten. Die Konfiguration leitet HTTP Verbindungen automatisch auf verschlüsselte HTTPS Verbindungen um. Parameter wie der Domainname, Pfad zum SSL-Zertifikat und das Verzeichnis müssen natürlich für jede Website angepasst werden.
Die Konfiguration besteht aus zwei server Blöcken. Einer für Port 80 (HTTP) und einer für Port 443 (HTTPS).
Die Konfiguration des ersten server Blocks (HTTP)
listen gibt an auf welchen IP-Adressen und Ports die Website reagieren soll. 80 sagt aus, dass über alle verfügbaren IPv4 Adressen Verbindungen auf Port 80 akzeptiert werden sollen. [xxx:xxx:xxx::42]:80 sagt aus, dass die Website via IPv6 nur über die IP-Adresse xxx:xxx:xxx::42 und Port 80 erreichbar ist. Falls die Konfiguration als Standard verwendet werden soll, falls keine andere zur Anfrage passt, muss jeweils hinter der 80 noch default_server ergänzt werden.
server_name gibt die Domain an, für welche die Konfiguration gilt.
return leitet auf eine andere Website weiter. In diesem Fall mittels 301 (Dauerhaft Verschoben) auf die verschlüsselte Verbindung (HTTPS).
listen ist identisch wie für den ersten Block außer das der Block auf Port 443 hört und nicht 80.
server_name gibt wie beim ersten Block die Domain an, für welche die Konfiguration gilt.
ssl_certificate gibt den Pfad zum SSL Zertifikat der Website an.
ssl_certificate_key gibt den Pfad zum Privaten Schlüssel des SSL Zertifikats der Website an.
add_header Strict-Transport-Security sagt dem Client, dass er die Website nur über HTTPS aufrufen soll und dies auch für alle Subdomains gilt. An dieser Stelle muss man vorsichtig sein und prüfen ob dies auch wirklich für alle Subdomains gilt. Außerdem sagt max-age für wie lange diese Einstellung gilt. Innerhalb dieser Zeit leitet der Browser den Besucher automatisch auf HTTPS weiter. Das heißt es ist nicht einfach möglich HTTPS abzuschalten, sondern benötigt eine Vorlaufzeit. Der Wert 63072000 entspricht 2 Jahren. Zum Testen sollte ein niedriger Wert wie z.B. 300 (5 Minuten) verwendet werden, welcher langsam erhöht wird. Es kann auch beantragt werden diese Einstellung fest in die gängigsten Browser aufzunehmen. Details dazu gibt es auf der Website der HTST Preload List.
root gibt das Verzeichnis an, in dem die Website liegt.
index gibt den Dateinamen der Datei an, welche angezeigt werden soll, falls ein Verzeichnis als URL angegeben wurde. Damit dies geschieht muss eine Datei mit diesem Namen in dem angefragten Verzeichnis vorhanden sein.
location \ sagt, dass zuerst nach einer Datei mit dem angefragten Namen gesucht werden soll, anschließend ob ein Verzeichnis mit dem Namen existiert. Falls beides nicht existiert wird ein 404 Fehler zurückgegeben.
location ~ \.php$ leitet PHP-Dateien an den Interpreter weiter.
server {
listen 80;
listen [xxx:xxx:xxx::42]:80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
listen [xxx:xxx:xxx::42]:443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains;";
root /var/www/com.example;
index index.php;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass the PHP scripts to FastCGI server
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
# snippet for updating letsencrypt certificates
include snippets/certbot-webroot.conf;
}
Nun muss noch das Verzeichnis für die Webseitendaten erstellt werden.
$ sudo mkdir -p /var/www/com.example
Neue Seite aktivieren
Um die Konfiguration einer Seite im Verzeichnis /etc/nginx/sites-available/ zu aktivieren muss ein Symmetrischer Link zu dieser Datei im Verzeichnis /etc/nginx/sites-enabled angelegt werden.
Nachdem die Konfiguration wie oben beschrieben geändert wurde muss sie nur noch von nginx neu geladen werden. Bevor sie geladen wird sollte allerdings noch geprüft werden, ob sie Fehler enthält.
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo /etc/init.d/nginx reload
[ ok ] Restarting nginx (via systemctl): nginx.service.
Nun kann noch die Seite des Qually Labs SSL Tests aufgerufen werden, welches die verwendete Sicherheitsverfahren und Algorithmen von Webservern prüft und bewertet. Wenn alles wie oben beschrieben konfiguriert wurde sollte die Bewertung A+ sein, was der Best möglichen Bewertung entspricht.
Es gibt verschiedene Methoden wie Passwörter oder Zertifikate um sich an einem OpenVPN Server zu authentifizieren. Ich beschreibe in diesem Beitrag wie Zertifikate zur Authentifizierung mittels Easy-RSA 3 generiert werden können.
In diesem Beitrag beschreibe ich, wie ein Headless Raspberry Pi mit Raspbian Jessie Lite eingerichtet werden kann. Dazu wird neben dem Raspberry Pi auch eine passende (micro)SD-Karte mit mindestens 2 GB benötigt.
Ein Anleitung für das aktuelle Raspbian Stretch Lite ist hier verfügbar:
Raspbian Image herunterladen
Raspbian Jessie Lite ist eine auf Debian Jessie basierende Linux Distribution für den Raspberry Pi. Sie wird offiziell von der Raspberry Pi Foundation unterstützt. Ein Image kann auf der offiziellen Raspberry Pi Homepage heruntergeladen werden.
Nach dem Download (1) kann noch der SHA-1 Hashwert (2) überprüft werden. Wie dies mit dem Windows Subsystem for Linux erreicht werden kann habe ich in dem Artikel Hashwert einer Datei unter Ubuntu Linux 16.04 berechnen beschrieben.
Image auf (micro)SD-Karte kopieren
Nun kann das Image auf die (micro)SD-Karte geschrieben werden. Dazu kann das Programm Etcher verwendet werden. Es lässt sich einfach über die offizielle Homepageherunterladen.
Nach der Installation kann Etcher einfach über das Startmenü gestartet werden.
Zuerst muss das heruntergeladene zip-Image ausgewählt werden. Dazu muss zuerst auf „Select image“ geklickt werden.
In dem nun angezeigten Dialog muss zuerst das zip-Image ausgewählt werden (1). Anschließend muss es mit einem Klick auf „öffnen“ (2) bestätigt werden.
Anschließend muss das richtige Ziellaufwerk – die (micro)SD-Karte – ausgewählt werden, falls dies nicht schon automatisch geschehen ist. Dazu muss zuerst auf „Change“ geklickt werden.
Nun muss zuerst das Laufwerk ausgewählt (1) und anschließend auf „Continue“ (2) geklickt werden.
Abschließend muss nur noch auf „Flash!“ geklickt werden.
Nun Startet der Kopiervorgang. Etcher kopiert zuerst das Image, validiert es anschließend und wirft zuletzt die (micro)SD-Karte aus.
Nach erfolgreicher Validierung wird eine Erfolgsmeldung angezeigt.
SSH Aktivieren
Da wir den Raspberry Pi Headless betreiben müssen wir uns per SSH auf ihn verbinden können. Aus Sicherheitsgründen ist SSH bei Raspbian standardmäßig deaktiviert. Um es zu aktiveren muss auf der Boot Partition eine Datei mit dem Namen SSH angelegt werden. Diese benötigt keinen Inhalt. Während des Startens prüft Raspbian, ob diese Datei vorhanden ist. Ist sie es wird SSH aktiviert und die Datei gelöscht. So ist es auch ohne Bildschirm und Tastatur möglich den SSH Server zu aktivieren. Damit diese Datei erstellt werden kann muss die (micro)SD-Karte durch aus und wieder einstecken erneut gemountet werden. Sie wurde von Etcher nach erfolgreichem Kopieren automatisch ausgeworfen.
Nun kann die (micro)SD-Karteausgeworfen und in den Raspberry Pi gesteckt werden. Anschließend kann der Raspberry Pi mit einem Netzwerk- und Micro-USB Kabel verbunden werden.
Raspbian konfigurieren
IP-Adresse herausfinden
Um Raspbian konfigurieren zu können muss zuerst die IP-Adresse herausgefunden werden. Dies kann z.B. über die Weboberfläche des Routers, oder, falls Linux verwendet wird, über netdiscover erledigt werden. Falls netdiscover noch nicht installiert ist kann es einfach über die offiziellen Paketquellen installiert werden
$ sudo apt-get install netdiscover
Anschließend muss es als root gestartet werden und gibt alle Netzwerkgeräte inklusive ihrem Hersteller aus.
$ sudo netdiscover | grep Raspberry
192.168.0.126 b8:27:eb:72:a5:3c 1 60 Raspberry Pi Foundation
SSH-Verbindung aufbauen
Standardmäßig existiert unter Raspbian der Benutzernamepi mit dem Passwortraspberry.
Mit diesen Informationen ist es nun möglich sich nun per SSH auf dem Raspberry Pi anzumelden.
$ ssh pi@192.168.0.126
Falls die von mir in Sichere SSH Konfiguration vorgestellte Client SSH Konfiguration verwendet wird kommt wird beim Verbindungsaufbau nachfolgende Fehlermeldung angezeigt
The authenticity of host '192.168.0.126 (192.168.0.126)' can't be established.
ED25519 key fingerprint is SHA256:WNOAK/cDizRRBkENqcHlCXiXCr5FXQJQhw3V5sOUVpU.
> Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.126' (ED25519) to the list of known hosts.
Permission denied (publickey,password).
Dies liegt daran, dass standardmäßig keine Passwörter zur Anmeldung an SSH Servern erlaubt sind. Daher muss wie im Beitrag SSH Authentifizierung über Passworte für einzelne Verbindungen erlauben beschrieben der Parameter PasswordAuthentication auf yes gesetzt werden um die Anmeldung über Passwörter für diese Verbindung wieder bzw. temporär zu erlauben.
Passwort ändern
Beim Einloggen über SSH wird eine Warnung angezeigt, falls der Benutzer pi noch das Standardpasswortraspberry nutzt.
$ ssh pi@192.168.0.126
> pi@192.168.0.126's password:The programs included with the Debian GNU/Linux system are free software;the exact distribution terms for each program are described in theindividual files in /usr/share/doc/*/copyright.Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extentpermitted by applicable law.Last login: Mon May 1 17:17:04 2017 from 192.168.1.137SSH is enabled and the default password for the 'pi' user has not been changed.This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.
Diese Warnung sollte ernst genommen werden. Mittels des Befehlt passwdkann das Passwort des Benutzers einfach auf ein sicheres geändert werden. Bevor das neue Passwort angegeben werden kann muss zur Bestätigung zuerst das alte eingegeben werden. Die Ausgabe sollte wie nachfolgend aussehen.
$ passwd
Changing password for pi.> (current) UNIX password:> Enter new UNIX password:> Retype new UNIX password:passwd: password updated successfully
Danach sollte die Warnung beim Verbinden nicht mehr angezeigt werden.
System aktualisieren
Bevor der Raspberry Pi weiter eingerichtet wird sollten zuerst alle Pakete aktualisiert werden. Dies kann einfach mit folgenden beiden Befehlen geschehen.
$ sudo apt-get update
$ sudo apt-get upgrade
Zeitzone anpassen
Standardmäßig wird UTC als Zeitzone in Raspbian verwendet. Die Zeitzone kann ganz einfach über das Tool raspi-configangepasst werden.
Um die aktuell eingestellte Zeitzone auszugeben kann der Befehl date verwendet werden.
$ date
Sat 26 Aug 07:41:35 UTC 2017
Zum Ändern der Zeitzone kann raspi-config verwendet werden.
$ sudo raspi-config
In dem nun Grafischen Menü muss zuerst 4 Localisation Options ausgewählt und mit Enter bestätigt werden
Jetzt muss I2 Change Timezone ausgewählt und mit Enter bestätigt werden.
Als Geographic Area nun Europeauswählen und bestätigen.
Im nächsten Menü als Time ZoneBerlinauswählen.
Nach dem Beenden von raspi-config (z.B. über Esc) wird die neue Zeitzone angezeigt.
Current default time zone: 'Europe/Berlin'
Local time is now: Sat 26 Aug 09:42:52 CEST 2017.
Universal Time is now: Sat 26 Aug 07:42:52 UTC 2017.
Nun kann nochmals mittels des dateBefehls überprüft werden das die Zeitzone auch angepasst wurde.
$ date
Sat 26 Aug 09:43:08 CEST 2017
WLAN Kanäle konfigurieren
Pro Region bzw. Land sind andere WLAN Kanäle erlaubt. Daher sollte das WLAN Land auch gesetzt werden. Dazu wieder raspi-config starten
$ sudo raspi-config
Wie beim Einstellen der Zeitzone wieder 4 Localisation Options im ersten Menü auswählen und mit Enter bestätigen
Jetzt muss I4 Change Wi-Fi Country ausgewählt werden.
In der Liste der Länder nun DE Germanyauswählen.
Abschließend wird noch eine Bestätigung angezeigt.
Damit die Änderung des WLAN Lands übernommen werden muss der Raspberry Pi einmal neu gestartet werden. Dies wird beim Beenden von raspi-config über Finish im Hauptmenu automatisch angeboten.
Alternativ kann auch nachfolgender Befehl im Terminal genutzt werden
$ sudo reboot
Hostname ändern
Es sollte auch noch der Name unter dem der Raspberry Pi im Netzwerk sichtbar ist, der sogenannte Hostname, angepasst werden. Dies kann auch wieder ganz einfach über raspi-config erledigt werden.
$ sudo raspi-config
Diesmal muss 2 Hostname im Hauptmenü ausgewählt werden
Direkt danach wird ein Hinweis angezeigt welche Zeichen im Hostnamen erlaubt sind
Nach dem Bestätigen kann der neue Wunschhostname eingegeben werden (1). Anschließend muss der Dialog mit OK (2) bestätigt werden.
Damit die Änderung des Hostnamenswirksam werden muss der Raspberry Pi einmal neu gestartet werden. Dies wird beim Beenden von raspi-config über Finish im Hauptmenu automatisch angeboten.
Alternativ kann auch nachfolgender Befehl im Terminal genutzt werden
$ sudo reboot
SSH Konfigurieren
Anschließend kann wie im Beitrag SSH Authentifizierung mittels Public-Keys beschrieben die SSH Anmeldung auf Public-Keys umgestellt werden. Anschließend sollte auch die SSH Konfiguration des Raspberry Pi’s wie im Beitrag Sichere SSH Konfiguration beschrieben abgesichert werden.
Aliase setzen
Ich verwende auf allen meinen Systemen bestimmte Aliase im Terminal. Das definieren der Aliase in Raspbian ist identisch mit dem in Ubuntu 16.04. Daher kann einfach meine Anleitung im Beitrag Terminal Aliase in Linux verwendet werden.
Nützliche Tools installieren
Es gibt einige Tools die ich immer wieder verwende die aber nicht alle standardmäßig installiert sind. Um sie nicht jedes Mal bei Bedarf installieren zu müssen installiere ich sie immer schon beim Einrichten des Systems. Meine Tools habe ich im Beitrag Nützliche Tools für Ubuntu Linux 16.04 Server beschrieben, welcher so auch für Raspbian gilt.
Sicherheitsupdates sollten nach Veröffentlichung so schnell wie möglich installiert werden um die Sicherheit des Systems zu erhöhen. Es ist möglich Raspbian Jessie Lite so zu konfigurieren, dass Sicherheitsupdates automatisch installiert werden. Weiterlesen
Unter Linux ist es ganz einfach den Hashwert einer Datei zu berechnen. Unter Ubuntu oder dem Windows Subsystem for Linux sind die Tools dafür standardmäßig installiert.