PDFs verkleinern

Manchmal steht man vor dem Problem ein PDF versenden oder irgendwo hochladen zu müssen wo nur Dateien mit einer Größe von wenigen MB akzeptiert werden, das eigene PDF aber größer ist. Dann stellt sich immer die Frage wie die Dateigröße ohne viel Aufwand verkleinert werden kann.

Mithilfe von Ghostscript kann das sehr einfach mit einem einzigen Befehl im Terminal erledigt werden. Ghostscript ist sowohl unter Ubuntu als auch dem Windows Subsystem for Linux standartmäßig installiert. Weiterlesen

Werkzeugleiste in Adobe Acrobat Reader DC beim Öffnen ausblenden

Der Adobe Acrobat Reader DC blendet standartmäßig beim öffnen von PDF Dateien automatisch die Werkzeugleiste ein.

Adobe Acrobat Reader DC Werkzeugfenster
Adobe Acrobat Reader DC Werkzeugfenster

Dieses Verhalten stört mich extrem, da es erheblichen Platz zum lesen wegnimmt. Über die Einstellungen ist es möglich den Reader so zu konfigurieren, dass er sich merkt, ob die Werkzeugleiste zuletzt ein oder ausgeblendet war. Wenn diese Einstellung gesetzt ist wird die Werkzeugleiste beim Starten automatisch ausgeblendet, wenn sie dies bei dem letzten schließen auch war. Weiterlesen

Mittels sslh SSL, SSH und OpenVPN unter Raspbian Jessie Lite auf Port 443 betreiben

sslh erlaubt es mehrere Dienste wie SSL, SSH und OpenVPN gleichzeitig auf Port 443 zu betreiben. Es unterscheidet anhand des Headers beim Aufbau der TLS Verbindung an welchen Dienst die Anfrage weitergeleitet werden muss. Dies ist z.B. nützlich, wenn das WLAN in Hotels oder Cafés nur Verbindungen auf bestimmte Ports erlauben. In diesem Beitrag beschreibe ich wie sslh unter Raspbian installiert und konfiguriert werden kann.

Weiterlesen

Eigene DNS Einträge im DNS Server von Pi-hole hinterlegen

Pi-hole ist ein Werbeblocker auf DNS-Ebene. Das heißt Werbung wird auch geblockt, wenn kein Adblocker verwendet wird, da die anfragen zum Anzeigen der Werbung ins Leere laufen. Im Beitrag Pi-hole unter Raspbian Jessie Lite unter nginx mit SSL betreiben habe ich beschreiben wie es unter Raspbian Jessie Lite installiert werden kann.

In diesem Beitrag möchte ich beschreiben wie es möglich ist im DNS Server von Pi-hole eigene DNS Einträge zu hinterlegen. Dies könnte Beispielsweise Namen sein unter denen die Rechner im eigenen Netzwerk erreichbar sein sollen.

Weiterlesen

Pi-hole unter Raspbian Jessie Lite mit nginx und SSL betreiben

Pi-hole ist ein Werbeblocker auf DNS-Ebene. Das heißt Werbung wird auch geblockt, wenn kein Adblocker verwendet wird, da die anfragen zum Anzeigen der Werbung ins Leere laufen. Im Beitrag Pi-hole unter Raspbian Jessie Lite mit nginx und SSL betreiben habe ich beschreiben wie es unter Raspbian Jessie Lite installiert werden kann.

Pi-hole erlaubt es standardmäßig nicht, dass über SSL auf das Webinterface zugegriffen werden kann. Außerdem verwendet es den lighttpd Webserver. Ich würde die Webseite aber gerne nur über SSL erreichbar machen sowie nginx als Webserver verwenden. In diesem Beitrag beschreibe ich wie nginx installiert und konfiguriert werden kann damit die pi-hole Webseite darüber via SSL erreichbar ist.

Weiterlesen

OpenVPN Server auf einem Raspberry Pi mit Raspbian Jessie Lite einrichten

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.

Zertifikate generieren

Wie die Zertifikate generiert werden können habe ich im Beitrag Zertifikate mittels Easy-RSA 3 zur OpenVPN Authentifizierung generieren beschrieben.

Installieren

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.

$ sudo chown -R root:root /etc/openvpn/keys/
$ sudo find /etc/openvpn/keys/ -type f -exec chmod 400 {} \;
$ sudo chmod 404 /etc/openvpn/keys/crl.pem

Server

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

$ sudo chown root:root /etc/openvpn/server.conf
$ sudo chmod 400 /etc/openvpn/server.conf

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 Konfiguration geladen 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.

$ sudo netstat -tulpn | grep 1194
tcp        0      0 0.0.0.0:1194            0.0.0.0:*               LISTEN      532/openvpn

Falls es beim Starten des OpenVPN Servers Probleme gibt kann er manuell über die Konsole gestartet werden um an zusätzliche Informationen 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.

$ sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
$ sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

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.

$ sudo bash -c "iptables-save > /etc/iptables/rules.v4"

Nun sollte der OpenVPN Server auch nach einem Neustart automatisch starten und es erlauben das Internet über diese Verbindung zu nutzen.

Let’s Encrypt SSL Zertifikate unter Raspbian Jessie Lite mittels nginx und webroot Plugin beziehen

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 ist certbot. 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.

$ sudo apt-get update
$ sudo apt-get install certbot

Zertifikate beziehen

Das beziehen der Zertifikate funktioniert unter Raspbian Jessie Lite genauso wie unter Ubuntu Linux 16.04 Server. Deshalb verweise ich hier auf den „Zertifikate beziehen“ Abschnitt in meinem Beitrag Let’s Encrypt SSL Zertifikate unter Ubuntu Linux 16.04 Server mittels nginx und webroot Plugin beziehen in welchem ich es für Ubuntu Linux 16.04 Server beschrieben habe.

Debian Backports in Raspbian Jessie Lite aktivieren und verwenden

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.

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.xGPUEnTXKm --no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010
gpg: requesting key 2B90D010 from hkp server keyserver.ubuntu.com
gpg: key 2B90D010: public key "Debian Archive Automatic Signing Key (8/jessie) <ftpmaster@debian.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.MUv0nBzzUP --no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553
gpg: requesting key 46925553 from hkp server keyserver.ubuntu.com
gpg: key 46925553: public key "Debian Archive Automatic Signing Key (7.0/wheezy) <ftpmaster@debian.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

Jetzt kann das Backports Repository hinzugefü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.

$ sudo apt-get -t jessie-backports install <packetname>