Archiv der Kategorie: Linux

Wechsel zu „let’s encrypt“

Nachdem Google seine Drohungen nun wahr gemacht und auch alte StartSSL-Zertifikate im Google Chrome nicht mehr unterstützt werden, bin ich zu let’s encrypt gewechselt. Der Wechsel mit Hilfe des certbot verlief erstaunlich beschwerdefrei, wenngleich ich mich über die 10 MB Abhängigkeiten und über eine Neu(!)-Entwicklung in Python2 sehr gewundert habe. Ebenso ist die Support für Apache derzeit immer noch im Beta-Stadium, weshalb ich die Zertifikate generieren aber nicht automatisch in meine Konfiguration einbinden lasse.

Hier ist noch einmal meine Anleitung für ein Ubuntu 16.04 LTS:

  1. Vorgehen gemäß Anleitung
  2. PPA für das Paket add-apt-repository
    sudo apt install software-properties-common
  3. sudo add-apt-repository ppa:certbot/certbot
  4. sudo apt-get update
  5. sudo apt install python-certbot-apache
  6. Zertifikate generieren: sudo certbot –apache certonly
    Certs werden nach /etc/letsencrypt/www.bakera.de gespeichert
  7. apache config angepasst gemäß Anleitung
    SSLCertificateFile /etc/letsencrypt/live/www.bakera.de/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.bakera.de/privkey.pem
  8. Cronjob für die Erneuerung der Zertifiakte angelegt gemäß Anleitung.
    42 3 * * * /usr/bin/certbot renew –post-hook „service apache2 restart“

Tschüss Suse, Hallo Mint

Nach mehreren Jahren steht wieder mal ein Wechsel an. Bisher hatte ich immer gut mit OpenSuse gelebt, habe im Alltag jedoch viel mit Debian-basierten Systemen zu tun. Also habe ich eine neue Platte in den Rechner gesteckt und darauf ein Linux-Mint installiert. Die bisherige Suse wird als externes Laufwerk eingebunden und die Daten darauf weiter genutzt. Der Wechsel verlief erstaunlich problemlos. Nach der Installation der wichtigsten Programme musste ich ein paar Pfade hier und da anpassen und kann nun weiterarbeiten wie gewohnt. Die alte Suse kann ich auch noch starten, weil Mint die Installation erkannt und im Boot-Manager berücksichtigt hat. Ein altes Windows 7 liegt auf einer weiteren Platte und wurde ebenfalls erkannt.

Das Usenet, NNTP-Server und Kommunikationsprotokolle

Das Usenet ist eine alte doch immer noch interessante und lebendige Institution des Internet – aus technischer, kultureller und auch historischer Sicht. Ich möchte mit euch eintauchen in diese Welt und sie als Nutzer und technisch Interessierter erkunden.

ic_chat_black_48dpMeine digitale Emanzipation schreitet voran: Nachdem ich meinen Server in die heimischen vier Wände geholt und einen eigenen Jabber-Server aufgesetzt habe, soll nun ein Newsserver als neues Projekt das heimische Netzwerk erweitern. Doch zunächst ein paar erklärende Worte.

Usenet: Was es ist und wie man es bedient

Das Usenet ist die große alte Dame des Internet. Sie – also es – wurde 1979 geboren und ist damit älter als das World Wide Web – also die bunte Welt, die man durch das Browserfenster betrachtet. Da das Usenet älter als das WWW ist, benötigt man ein eigenes Programm um darauf zugreifen zu können: einen Newsreader. Damals wie heute wird das Usenet mit seinen zahlreichen Diskussionsgruppen für den Wissensaustausch genutzt und für den Dateiaustausch missbraucht. Es ist der Geburtsort der Merkbefreiung und Wirkenskreis von Hürbine von Pleuselspink.

Die Nutzerzahl ist seit dem Aufkommen sozialer Netzwerke wie Facebook und Webforen rückläufig. Aber das muss nichts über die Qualität der Inhalte aussagen. Vielfach findet man dort technisch versierte und inhaltlich kompetente Nutzer, die ausführlich und mit viel Erfahrung antworten. Außerdem kann es mit vielen unterschiedlichen Clients benutzt werden, was die Möglichkeiten von Filterung, Darstellung und Bedienung deutlich erweitert. Ein Beispiel für die Qualität ist die intensive Diskussion um das Rätsel „Prinzessin im See“ in der Gruppe de.rec.denksport. Ich habe in den letzten Tagen ca. 100 Beiträge pro Tag in den von mir abonnierten Gruppen erhalten und denke, dass dies ausreichend für eine lebendige Gruppenstruktur ist. Das Usenet ist also nicht tot, es hat sich nach einem Hype am Ende der 90er Jahre in einem stabilen Nutzungsverhalten eingependelt.

Ein detaillierte Darstellung des Usenet gibt das schon ältere, dafür kostenlos erhältliche Buch Newsgroups – weltweit diskutieren, das viele verschiedene Aspekte beschreibt: die Technik, Kommunikationsmodelle sowie gesellschaftliche und historische Dimensionen. Das Archiv der Beiträge seit Beginn der 80er Jahre kann z.B. mit der Suchmaschine The Usenet Archive oder Google Groups durchsucht werden.

Der deutsche Teil des Usenet organisiert sich in den de.*-Gruppen. Gruppen in dieser Hierarchie werden von der dana (de.admin.news.announce) koordiniert: also angelegt, gelöscht, zusammengefasst oder aufgesplittet.

Neugierig geworden? Es ist erstaunlich einfach, einen Account bei einem Newsserver zu bekommen, der Usenet-Nachrichten verteilt. Das Open News Network hat sich vorgenommen, freie Zugänge für Text-Gruppen bereit zu stellen. Ich habe mir einen kostenlosen Account beim schweizerischen Anbieter albsani.net erstellt. Daneben gibt es noch individual.de. Dies ist ein Anbieter der Freien Universität Berlin. Er möchte 10 € pro Jahr für seine Dienste haben und gilt als Urgestein der Usenetszene.

Nun benötige ich noch ein Programm, um auf die Gruppen zugreifen zu können. Gott sei dank werden viele E-Mail-Programme heutzutage schon mit einer Unterstützung für Newsgroups ab Werk ausgeliefert. So auch Thunderbird (eine Anleitung ist hier und hier) und Windows Mail. Viele weitere Anleitungen für unterschiedliche Betriebssysteme und Programme gibt es bei individual.de. Für Android hat mir das Programm Usenet Newsreader gut gefallen.

Nach der Einrichtung kann man eine umfangreiche Gruppenliste (über 25.000 Gruppen!) herunterladen und ein wenig darin stöbern. Mir haben die Gruppen unter de.* und ger.* auf den ersten Blick ganz gut gefallen. Du musst aber selbst ein wenig suchen und nach deinen eigenen Interessen schauen.

Eigener Server

Aber die reine Verwendung eines Newsservers hat mir natürlich nicht gereicht. Schließlich möchte ich meine Infrastruktur selbst gestalten und aufbauen. Also musste ein eigener Newsserver her. Hier ist INN der de-facto Standard – in Version 2 heißt das Paket auch häufig inn2 in den Distributionen. Die Freifunker haben eine schöne Anleitung für die Einrichtung geschrieben. Dass die Konfiguration so ihre Tücken aufweist zeigt ein Beitrag aus dem FreeBSD-Diary. Er stellt die üblichen Stolperstellen vor und gibt Hinweise darauf, wie man sie umgehen kann.

Es geht aber auch einfacher – und zwar mit dem Server WendzelNNTPd. Der Server lässt sich einfach installieren und hat wenig Ansprüche. Außerdem reagierte der Autor Steffen Wendzel bei meinen Recherche extrem schnell auf Anfragen und Probleme. Innerhalb von Stunden war mir geholfen. Eine Installationsanleitung hat Steffen Wendzel selbst in dem Kapitel zu NNTP-Servern des Buches „Linux – das umfassende Handbuch“ (Rheinwerk Verlag) geschrieben.

Das Programm wird nicht als Paket ausgeliefert, sondern muss mit einem C-Compiler kompiliert werden. Das ist einfacher als es sich anhört, da vieles automatisch abläuft. Zunächst laden wir den Quelltext aus dem git-repo  herunter und entpacken das Archiv.

Es werden noch ein paar Bibliotheken benötigt, die wir leicht installieren können.

$ sudo apt-get install gcc flex bison libsqlite3-dev make

Als Backend für die Daten kommen eine SQLite- oder MySQL-Datenbank in Frage. Die Nachrichten selbst werden als Textdateien abgespeichert. In der Datenbank werden nur Zugangsdaten sowie die Verlinkungsstruktur der Nachrichten untereinander und die Zuordnung zu den Diskussionsgruppen realisiert. Ich entscheide mich für eine leichtgewichtige Variante mit SQLite und werfe das Konfigurationsskript an.

$ MYSQL=NO ./configure

Sollten nun immer noch Bibliotheken fehlen, meldet sich das Skript und sagt genau, was es noch benötigt. Danach kann ich die Software kompilieren und nach /usr/local installieren lassen.

$ make
$ sudo make install

Im Sourcenpaket ist noch ein init-skript, das ich an die richtige Stelle kopiere.

$ sudo cp ~/src/WendzelNNTPd-2.0.5/WendzelNNTPd-OSE/scripts/startup/init.d_script /etc/init.d/wendzelnntpd

Nun kann ich den Dämon ein erstes mal starten.

$ sudo /etc/init.d/wendzelnntpd start

Damit der Dienst auch nach einem Reboot läuft, starte ich ihn für runlevel 2. Dazu lege ich einen symbolischen Link auf das Init-Skript an.

/etc/rc2.d$ ln -s ../init.d/wendzelnntpd S92wendzelnttpd

Damit der Dienst auch bei einem Shutdown (runlevel 0) und einem reboot (runlevel 6) sorgfältig heruntergefahren wird, sorge ich für Links an den korrekten Stellen in den rc-Verzeichnissen.

/etc/rc0.d$ sudo ln -s ../init.d/wendzelnntpd K20wendzelnntpd
/etc/rc6.d$ sudo ln -s ../init.d/wendzelnntpd K20wendzelnntpd

Nun können wir die Konfigurationsdatei in /usr/local/etc/wendzelnntpd.conf anpassen. Wir müssen zunächst mit listen dafür sorgen, dass der Newsserver von außen erreichbar ist. Damit er nicht sofort Ziel von ungebetenen Nutzern wird, aktiviere ich zudem die Benutzerauthentifikation.

listen 192.168.178.60
use-authentication

Wir starten den Dämon nach unseren Änderungen neu.

$ sudo /etc/init.d/wendzelnntpd restart

Nun können wir einen ersten Nutzer und eine erste Gruppe anlegen. Hierbei hilft das Administrationstool wendzelnntpadm weiter.

$ sudo wendzelnntpadm adduser marco PASSWORT
$ sudo wendzelnntpadm addgroup de.bakera.test y

Das ‚y‘ hinter der Gruppe besagt, dass in diese Gruppe geschrieben werden darf. Da schon zu Beginn ein paar Gruppen vorhanden sind, lösche ich diese noch.

$ sudo wendzelnntpadm delgroup alt.wendzelnntpd.test

Damit der Server auch hinter meiner Fritz-Box erreichbar ist, habe ich im DNS noch den Eintrag news.bakera.de ergänzt und eine Portweiterleitung auf Port 119 im Router eingerichtet. Nun kann einer Nutzung des Servers nichts mehr im Wege stehen.

Die Nachrichten werden im Verzeichnis /var/spool/news/wendzelnntpd abgelegt. Für jede Nachricht existiert dort eine Datei mit einer eindeutigen Message-ID. Weitere Informationen über den Ort der Nachricht oder deren Headerdaten  werden bei einer sqlite-Installation in der Datei usenet.db abgelegt. Die Tabelle kann man sich mit einem sqlite-Client leicht anschauen. Man entdeckt folgende Tabellen mit den entsprechenden Attributen.

newsgroups (id, name, pflag, high)
ngposts (msgid, ng, postnum)              PRIMARY KEY(msgid, ng)
postings (msgid, date, author, newsgroups, subject, lines, header)
users (name, password)
roles (role)
users2roles (username, role) PRIMARY KEY(username, role)
acl_users (username, ng)                 PRIMARY KEY(username, ng)
acl_roles (role, ng)                     PRIMARY KEY(role, ng)

Kommunikationsprotokoll

Da das Protokoll NTTP, das der Newsserver spricht, sehr einfach aufgebaut ist, können wir sogar direkt über Telnet mit dem Server kommunizieren. Unten sehen wir eine Beispielsitzung. Meine eigenen Eingaben habe ich fett hervorgehoben. Der Rest sind Antworten des Servers. Eine ausführliche Kommunikation findet ihr auch auf Seite 95 des oben erwähnten Usenet-Buches.

telnet news.bakera.de 119
Trying 79.226.231.205...
Connected to news.bakera.de.
Escape character is '^]'.
200 WendzelNNTPd-OSE (Open Source Edition) 2.0.5 'Auckland' - (Sep 26 2015 06:42:09 #2517) ready (posting ok).
AUTHINFO USER marco
381 More authentication information required.
AUTHINFO PASS *****
281 Authentication accepted.
HELP
100 help text follows
--
 article [number|<message-id>]
 authinfo <user|pass> <username|password>
 body [number|<message-id>]
 date
 group <group>
 head [number|<message-id>]
 help
 list [overview.fmt|newsgroups [wildmat*]]
 listgroup [group]
 mode reader (always returns 200)
 post
 quit
 stat [number|<message-id>]
 xhdr <from|date|newsgroups|subject|lines> <number[-[endnum]]|msgid>
 xover <from[-[to]]>
 xgtitle [wildmat*] (equals LIST NEWSGROUPS but return code differs)
--
Send questions and problems to <swendzel [at] ploetner-it [dot] de>
Website: http://www.wendzel.de/software/wendzelnntpd.html
Notes:
* Wildmat format is based on the used regex library and is not 100%
 wildmat format compatible (XGTITLE *x -> XGTITLE .*x)!
.
DATE
111 20150927185030 
LIST 
215 list of newsgroups follows 
de.bakera.test 2 1 y 
. 
POST
340 send article to be posted. End with <CR-LF>.<CR-LF>
From: marco@bakera.de
Newsgroups: de.bakera.test
Subject: Ein Test

Ein Testartikel.
.
240 article posted
 
 

Mediawiki unter docker

Mit docker lassen sich schnell und einfach virtuelle Maschine betreiben, die Serverdienste wie ein Wiki bereitstellen. An einer Beispielinstallation eines Mediawikis zeige ich, wie das funktionieren kann.

Hier sind die im Video eingesetzten Befehle:

docker run –name=mw -i -t -p 8080:80 32bit/debian:jessie bash

apt-get update
apt-get install mediawiki
a2enconf mediawiki
cd etc/mediawiki
vi apache.conf
service apache2 reload

Buchtipp: „Little Brother“ von Cory Doctorow

cc: Richard Wilkinson

cc: Richard Wilkinson

In dem Roman „Little Brother“ erzählt Cory Doctorow die Geschichte der Geheimdienste nach den Anschlägen auf das World Trade Center in einem alternativen Amerika. Neben einer spannenden Geschichte für Jugendliche kommen auch Erwachsene auf ihre Kosten, wenn technische Details von Überwachungsmaßnahmen erläutert und die Gegenmaßnahmen mit Hilfe von Kryptographie vorgestellt und hinterfragt werden.

Das Buch und auch die deutsche Übersetzung sind unter einer freien Lizenz im Netz verfügbar. Für alle, die sich für die Erklärungen technischer Konzepte interessieren, habe ich die relevanten Passagen an dieser Stelle zusammengefasst.

Weiterlesen

Dateianhang für PDF

Ein wenig bekanntes Feature ist, dass man PDF-Dokumenten Dateien anhängen kann – wie auch bei E-Mails. So kann man immer die Originaldokumente anhängen, aus denen das PDF entstanden ist. Hierfür gibt es das PDF Toolkit – kurz pdftk. Unter Linux klappt es mit der folgenden Kommandozeile.

~> pdftk datei.pdf attach_files anhang.odt to_page 1 output dateiMitAnhang.pdf

Hier findet ihr ein Beispieldokument mit Anhang.

Backup über SSH und eine Pipe

Es ist schön, wenn es unter Linux mal ganz einfach geht, ein Backup via Remotesteuerung zu erstellen. So habe ich ein kleines Script erstellt, mit dem ich die Owncloud auf meinem RaspberryPi sichere. Via SSH wird ein Tarball erzeugt, der auf meinen Rechner übertragen und dort durch gzip-geleitet wird. Dadurch entstehen keine temporären Dateien auf dem Pi und er wird auch nicht mit ZIP-Aufgaben belästigt.

DATUM=$(date --iso)
ssh pi@raspberrypi "tar cf - /var/www/owncloud/" | gzip -c > ${DATUM}-owncloud.tar.gz

Clonezilla – Image verteilen (3/3)

Clonezilla ist eine Linuxdistribution, die beim Klonen mehrer Rechner hilft. Sie kommt daher besonders in Rechnerräumen von Schulen und Universitäten zum Einsatz. Im ersten und zweiten Teil haben wir Clonezilla heruntergeladen und ein Image erstellt.

Im dritten und letzten Teil der Reihe wird das Image, das wir im letzten Teil erstellt haben, auf zwei leere Rechner ausgespielt. Da Clonezilla multicast-fähig ist, können wir das Image gleichzeitig an alle Rechner senden.

Clonezilla – Image erstellen (2/3)

Clonezilla ist eine Linuxdistribution, die beim Klonen mehrerer Rechner hilft. Sie kommt daher besonders in Rechnerräumen von Schulen und Universitäten zum Einsatz. Im ersten Video haben wir Clonezilla heruntergeladen und gestartet.

Im zweiten Teil erstellen wir das Image der FreeDos-Installation und bereiten damit den letzten Schritt vor, in dem das Image auf viele Rechner ausgespielt werden kann.