getssl: Let’s Encrypt ohne Python-Client

Vorwort

Nachdem Mozilla starke Kritik an Wosign und Startcom geübt hat, entfernte nun Apple als erstes die Zertifizierungsstelle aus seinen Trust-Stores. Für den Otto-Normal-Verbraucher heißt das nun, dass die Zertifikate von StartCom und Wosign faktisch wertlos sind; es ist ungewiss, ob sich die CA davon wieder erholt, auch wenn die Maßnahme vorerst auf ein Jahr begrenzt ist, und sich WoSign dann erneut einer unabhängigen Überprüfung unterziehen lassen kann.

Damit bleibt Let’s Encrypt die letzte mir bekannte Möglichkeit, kostenlos SSL-Zertifikate zu nutzen. Und bei aller berechtigten Kritik an dem Vorgehen, Zertifikte nur für 90 Tage auszustellen und diese mit einem Client automatisiert erneuern zu lassen, ist das Verfahren zumindest transparent und quelloffen.

Wem der native Python-Client nicht zusagt, der kann aus einer Vielfalt von alternativen Clients wählen. Ich habe mich für getssl entschieden, und möchte hier kurz eine Einführung geben.

Installation

Getssl ist ein simples Bash-Skript – daher kann auch ein unerfahrener Entwickler in den Code schauen und nachvollziehen, was dort eigentlich passiert. Installiert wird das Skript folgendermaßen:

curl --silent https://raw.githubusercontent.com/srvrco/getssl/master/getssl > /usr/local/sbin/getssl
chmod 700 /usr/local/sbin/getssl

Anschließend kann man das Skript mit -h aufrufen, um sich verfügbare Parameter ausgeben zu lassen:

$ getssl -h
getssl ver. 1.61
Obtain SSL certificates from the letsencrypt.org ACME server

Usage: getssl [-h|--help] [-d|--debug] [-c|--create] [-f|--force] [-a|--all] [-q|--quiet] [-Q|--mute] [-u|--upgrade] [-U|--nocheck] [-w working_dir] domain

Options:
  -h, --help      Display this help message and exit
  -d, --debug     Outputs debug information
  -c, --create    Create default config files
  -f, --force     Force renewal of cert (overrides expiry checks)
  -a, --all       Check all certificates
  -q, --quiet     Quiet mode (only outputs on error, success of new cert, or getssl was upgraded)
  -Q, --mute      Like -q, but mutes notification about successful upgrade
  -u, --upgrade   Upgrade getssl if a more recent version is available
  -U, --nocheck   Do not check if a more recent version is available
  -w working_dir  Working directory

weiterlesen

Click’n’Load mit entfernten JDownloader- oder pyLoad-Instanzen

Wer pyLoad oder JDownloader auf einem Server oder einem entfernten Gerät benutzt, wünscht sich vielleicht die Click’n’Load-Funktion, die das Hinzufügen von Links sehr einfach macht. Um sie nutzen zu können müssen 2 Dinge gemacht werden:

weiterlesen

Squid-Proxy durchs OpenVPN

Szenario: Man hat einen OpenVPN-Server und einen Client, dessen Default-Route aber nicht durchs VPN geht. Möchte man nun selektiv bestimmen können, welchen Traffic man vom Client aus ins VPN routen will, kann man beispielsweise einen Squid-Proxy nutzen, den man dann entsprechend konfiguriert.

weiterlesen

VirtualBox mit FreeBSD Gast: Kein DHCP

Ich habe auf einem Debian-Server VirtualBox installiert und wollte eine VM mit FreeBSD aufsetzen. Soweit hat auch alles geklappt, allerdings hat FreeBSD keinen DHCP-Server gefunden – die Netzwerkhardware wurde jedoch erkannt. Nach einigem Googlen fand ich den Hinweis, dass es trotzdem sein kann, dass es an der virtualisierten Netzwerkhardware lag. Die AMD-Adapter funktionierten bei mir beide nicht, daher nutze ich jetzt den Intel PRO/1000 MT Desktop (82540EM).

weiterlesen

fail2ban: Manuelles Entsperren einer IP

fail2ban Version < 0.8.8

In der aktuellen Debian-Version „Wheezy“ ist noch fail2ban 0.8.6 in den Standard-Repositories. In diesem Fall funktioniert das folgendermaßen:

iptables -nL --line-numbers

Der Befehl iptables zeigt die Firewall-Konfiguration an. Nun müssen wir nach der entsprechenden Chain suchen, die zu fail2ban gehören. Standardmäßig sind die Chains lakonisch benannt. Haben wir die IP gefunden merken wir uns die Zeilennummer (steht ganz vorn). Danach können wir per

iptables -D &lt;Chainname&gt; &lt;Zeilennummer&gt;

die Regel löschen. Beispiel:

# Löscht die Regel mit der Zeilennummer 2 in der Chain fail2ban-ssh
iptables -D fail2ban-ssh 2

 fail2ban Version >= 0.8.8

In Versionen größer gleich 0.8.8 geht es noch einfacher:

fail2ban-client set &lt;Ban-Name&gt; unbanip &lt;IP&gt;

weiterlesen

Debian-Server: Plex Media Server installieren

Plex ist ein kostenloser, closed-source Media-Server mit DLNA-Unterstützung, Transcoding und vielen Apps für Smartphones, Smart-TVs etc.

Im privaten Umfeld mag es ausreichen, das Paket zu installieren und loszulegen. Im Server-Umfeld, vielleicht sogar mit direkter Internetverbindung sollte man einige Sachen besser machen. Da die Software nicht quelloffen ist, stellt sie ein besonderes Sicherheitsrisiko dar. Diese Anleitung hält sich an bestimmte Festlegungen, die ich für meine Server getroffen habe, die Ihr natürlich auf eure Umgebungen anpassen könnt. Grundsätzlich gilt: Wer nicht genau weiß, was er tut, sollte einen solchen Server nicht im Internet betreiben.

Vorbereitungen

Als erstes legen wir einen Benutzer an, unter dem die Software dann laufen soll. Standardmäßig läuft Plex mit Root-Rechten, was im Falle einer Sicherheitslücke äußerst problematisch werden kann. Nicht, dass die Ausführung unter einem anderen Nutzer 100% Sicherheit bringt, aber es ist eine weitere Hürde, die ein eventueller Angreifer zu nehmen hat.

$ mkdir -p /opt/plex
$ mkdir -p /opt/plex/tmp   # dieses Verzeichnis brauchen wir später noch
$ useradd -M -d /opt/plex/ -s /bin/bash plex

Ich möchte, dass der Nutzer sein Home-Verzeichnis unter /opt/ hat, damit relevante Daten des Media-Severs dort liegen. Außerdem weise ich dem Nutzer als Login-Shell eine Bash statts der unter Debian mittlerweile üblichen Dash zu. Die Option -M verhindert nur, dass automatisch ein Homeverzeichnis unter /home/ erstellt wird.

Installation

Nun laden wir uns das das entsprechende Paket auf der Homepage von Plex herunter. Als Debian-Nutzer nehmen wir die „Ubuntu“-Version. Am besten per Rechtsklick -> Linkadresse kopieren und dann per wget  direkt auf dem Server herunterladen:

$ wget https://downloads.plex.tv/plex-media-server/0.9.11.7.803-87d0708/plexmediaserver_0.9.11.7.803-87d0708_amd64.deb

weiterlesen

Windows: SSH Server als Netzlaufwerk mounten

Screenshot
Quelle: http://www.swish-sftp.org/

Wer unter Windows mit einem entfernten Linux-System arbeiten will, beispielsweise mit einem virtuellen Server, den man irgendwo mietet, der wird auf einen SSH-Client zurückgreifen – der prominenteste Vertreter ist Putty. Der Dateiaustausch mit dem System gestaltet sich über Putty aber schwierig.

weiterlesen

Server: Backup in die Cloud (Google Drive)

Ich habe mich ein reichliches Jahr um eine vernünftige Backup-Lösung für meinen Server gedrückt – eigentlich viel zu lange. Das leidige Problem ist: Woher nimmt man den Speicher, die Daten zu sichern? Nach einigem herumprobieren schien mir dann Google Drive am sinnvollsten, da es meines Wissens den größten kostenlosen Online-Speicher bietet und mir die 15GB momentan ausreichen. Mega bietet zwar erheblich mehr Speicherplatz, aber keinen Linux-Client, weswegen das für mich zu viel Aufwand bedeutet hätte.

Für meinen Ubuntu-Server musste also ein Google Drive-Client her. Das ist sehr einfach, denn es gibt ein Tool namens google-drive-ocamlfuse. Dieses Tool kann den Cloudspeicher direkt ins Dateisystem mounten. Also geht es los:

$ sudo aptitude install google-drive-ocamlfuse -y

Jetzt hat man zweierlei Möglichkeiten: Entweder man hat auf seinem Server eine grafische Oberfläche installiert, über die man per VNC oder ähnlichem zugreifen kann, oder man installiert das Programm auf einem Heimrechner. Denn beim ersten Ausführen von google-drive-ocamlfuse muss man sich in einem Webbrowser authentifizieren. Leute, die die 2-Schritte-Authetifizierung nutzen (mit Code per SMS oder Smartphone-App), haben dabei keinerlei Probleme.

Hat man sich für die Variante „Heim-PC“ entschieden, muss man anschließend den Ordner ~/.gdfuse auf den Server ins Homeverzeichnis des entsprechenden Users kopieren. Soweit so gut. Die Anmeldung ist vollzogen. Fehlt nur noch das Mounten.

Ich persönlich habe mir einfach im Home-Verzeichnis einen Ordner GoogleDrive angelegt, auf den gemountet wird:

$ cd ~
$ mkdir GoogleDrive
$ google-drive-ocamlfuse ./GoogleDrive

Damit ist der Online-Speicher einfach zu benutzen, wie ein normaler Pfad im Dateisystem. Mein Backup-Skript baut erst ein tgz-Archiv zusammen und sichert es dann:

#!/bin/bash

cd /home/marco/Backup/auto # Das ist mein Backup-Verzeichnis für 
                           # die temporären Backups.

curdate=$(date +%Y-%m-%d)  # aktuelles Datum zum zurechtfinden
echo ===== &gt;&gt; logfile
echo $curdate Start Backup... &gt;&gt; logfile
mkdir $curdate             # Ordner für die Sicherung erstellen ...
cd $curdate                # ... und betreten

# An dieser Stelle könnt ihr alles wichtige in den Ordner packen.
# Wie wäre es beispielsweise mit einem MySQL-Dump?
mysqldump -uBenutzer -pPasswort --all-databases | gzip -9 &gt; mysqldump$curdate.sql.gz 1&gt;/dev/null 2&gt;&gt;../logfile

# Verzeichnis verlassen und packen
cd ..
tar cvzf serverbackup-$curdate.tgz $curdate 1&gt;/dev/null 2&gt;&gt;logfile
# Mounten von GoogleDrive
google-drive-ocamlfuse /home/marco/GoogleDrive
# Verschieben des Pakets in die Cloud
mv serverbackup-$curdate.tgz /home/marco/GoogleDrive/Backups/
# Löschen des Ordners
rm -rf $curdate 1&gt;/dev/null 2&gt;&gt;logfile
# Warten (es gibt immer eine gewisse Latenzzeit, bis das Dateisystem nicht
# mehr "busy" ist)
sleep 30
umount /home/marco/GoogleDrive 2&gt;&gt;logfile

# und fertig 🙂
echo Fertig &gt;&gt; logfile

weiterlesen

Facebook kauft Whatsapp – Eine Zusammenfassung

Facebook kauft Whatsapp für 19 Milliarden Dollar. Damit wird die ohnehin schon große Datenkrake zu einer exorbitant extremen Datenkrake. Noch weiß niemand was aus Whatsapp zukünftig wird, und dennoch bricht im Netz eine umfassende Diskussion über (verschlüsselte!!!) Alternativen los. „Was kann man tun um sicher zu sein?“ ist die allgegenwärtige Frage. Leider werden von vielen Blogs, Zeitungen, Portalen etc. immer nur ein ganz geringer Bruchteil der existenten Alternativen angesprochen. Daraus lässt sich zweierlei Ableiten: Sowohl „echte“ als auch selbsternannte Journalisten sind zu faul oder zu unmotiviert anständig zu recherchieren. Und: Wenn man die für sich „beste“ Whatsapp-Alternative sucht, muss man selbst losgehen, suchen, vergleichen, abwägen und dann eine Entscheidung treffen.

weiterlesen