Technik

SSL/TLS oder STARTTLS bei Thunderbird

22. Juli 2019 · Anwendungen · andreas · Kein Kommentar

Thunderbird bietet als Auswahlmöglichkeiten für die Einstellung der Verbindungssicherheit drei Auswahlmöglichkeiten: “Keine”, “STARTTLS” sowie “SSL/TLS”.

Während sich “Keine” von vornherein disqualifiziert, sind die beiden anderen Möglichkeiten auf den ersten Blick nicht so einfach zu unterscheiden.

Die Wikipedia schreibt zu “STARTTLS”:

… beginnt eine Verbindung bei dem STARTTLS-Verfahren immer unverschlüsselt auf dem für Klartext vorgesehenen Port. Nach Eingabe des STARTTLS-Befehls wird eine Verschlüsselung ausgehandelt.

Ein weiterer Nachteil gegenüber SSL rührt von der Tatsache her, dass die meisten E-Mail-Programme in der Standardeinstellung ‘TLS wenn möglich’ verwenden und es für den Nutzer nicht sichtbar ist, wenn die Verbindung zum Mailserver nicht (mehr) verschlüsselt ist.

Aus diesem Grund sollte auch “STARTTLS” nicht gewählt, sondern die Verbindungssicherheit auf “SSL/TLS” gesetzt werden:

Bei einer alternativen Methode zur Einleitung der Verschlüsselung einer Verbindung zwischen Mailprogramm (Client) und Mailserver setzt diese Verhandlung bereits beim Verbindungsaufbau ein. Dort werden definierte Ports angesprochen, auf denen unmittelbar eine TLS-Verbindung aufgebaut wird.

Dies deckt sich auch mit der Empfehlung aus dem Privacy Handbuch:

Wir empfehlen, SSL/TLS-Verschlüsselung zu bevorzugen.


Adminer als phpMyAdmin-Alternative

18. Juli 2019 · Anwendungen · andreas · Kein Kommentar

Ist nach einem Update von Debian 9 (Stretch) zu Debian 10 (Buster) phpMyAdmin - wenn auch mit Fehlern - noch vorhanden, fällt spätestens beim Installationsversuch auf, daß ein Blick in die Release-Notes hilfreich gewesen wäre. Kapitel “5.1.9. Nennenswerte veraltete Pakete” sagt:

Das Paket phpmyadmin ist in in Buster nicht mehr enthalten.

Es bleiben zwei Möglichkeiten: entweder phpMyAdmin unabhängig von der Distribution besorgen, einspielen und zukünftig auch warten oder auf eine Alternative wechseln, welche in den Paketquellen enthalten ist. Eine kurze Suche mit der Suchmaschine des Vertrauens führt i.d.R. zu Adminer, dessen Projektentwickler die aus seiner Sicht relevanten Unterschiede zu phpMyAdmin detailliert auflistet.

Die Installation ist schnell erledigt

$ sudo apt install adminer

Jedoch stellt sich nach dem ersten Aufruf erstmal Ernüchterung ein:

Als Ursache hierfür entpuppt sich eine nicht vorhandene Konfiguration: unter “/etc” wurde zwar ein Verzeichnis “adminer” angelegt, dieses enthält aber keine Konfigurationsdatei(en).

Glücklicherweise lässt sich dies schnell beheben, in dem eine neue Datei “adminer.conf” erzeugt und darin als einzige Angabe der benötigte Alias gesetzt wird.

/etc/adminer/adminer.conf
Alias /adminer /usr/share/adminer/adminer/

Anschließend wird im Verzeichnis “/etc/apache2/conf-available” ein symbolischer Link auf die soeben erzeugte Konfigurationsdatei gesetzt und anschließend aktiviert:

$ sudo ln -s /etc/adminer/adminer.conf /etc/apache2/conf-available/adminer.conf $ sudo a2enconf adminer

Den letzten benötigten Schritt schlägt a2enconf dann selbst vor:

To activate the new configuration, you need to run: systemctl reload apache2

phpMyAdmin Fehler "Parameter must be an array or an object that implements Countable"

12. Juli 2019 · Programmierung · andreas · 3 Kommentare

Nachdem das Update des Entwicklungsrechners von Debian 9 (Stretch) auf Debian 10 (Buster) reibungslos durchgelaufen ist, hakt es bei phpMyAdmin sobald eine Tabelle angeklickt wird:

Warning in ./libraries/sql.lib.php#613 count(): Parameter must be an array or an object that implements Countable

Eine einfache Lösung findet sich bei Stack Overflow: in der Datei “/usr/share/phpmyadmin/libraries/sql.lib.php” eine der schließenden Klammern von Zeile 614 in Zeile 613 vor das “== 1” versetzen, so daß die Zeilen 613 und 614 wie folgt aussehen:

|| (count($analyzed_sql_results['select_expr']) == 1) && ($analyzed_sql_results['select_expr'][0] == '*'))

Nach einem Neustart des Webservers ist der Fehler verschwunden.


Samsung Galaxy Tab S2 mit LineageOS

09. Juni 2019 · Betriebssysteme · andreas · 16 Kommentare

Auch wenn der Markt für Android Tablets auf den ersten Blick nach halbwegs Ausahl aussieht - spätestens beim Blick auf die Sicherheitsupdates kommt der Gedanke, daß es um diese nicht nur gefühlt nochmals eine ganze Ecke schlechter bestellt ist als bei Smartphones.

Denkt man gar darüber nach, ein alternatives Betriebssystem wie LineageOS einsetzen zu wollen, bleiben von den aktuell am Markt befindlichen Geräten nur noch wenige übrig. Als “Preis-Leistungssieger” entpuppt sich das Samsung Galaxy Tab S2, welches mit immer noch ausreichender Ausstattung als Neugerät erhältlich und für das offiziell LineageOS 16 verfügbar ist.

Wichtig ist, die richtige Version des Gerätes zu erwischen. Statt der Urversion des S2 von 2015 wird die aktualisierte Version von 2016 benötigt, in welcher der Samsung eigene Exynos-Prozessor durch einen Qualcomm Snapdragon ersetzt wurde. Wie das LineageOS Wiki verrät, handelt es sich hierbei um die Modellnummer SM-T813, Codename “gts210vewifi”.

Im Wiki findet sich auch eine Installationsanleitung, welche sich im Vergleich zu z.B. den Google-eigenen Nexus-Geräten nicht einfach nachklicken lässt, sondern so manchen Stolperstein beinhaltet.

Vollständigen Beitrag lesen


Aktuelles Verzeichnis nicht mehr Teil von @INC

25. Mai 2019 · Programmierung · andreas · Kein Kommentar

Gerade beim Wechsel zwischen verschiedenen Perl-Versionen über ein Feature (und keinen Bug) gestolpert: seit Version 5.26 ist das aktuelle Verzeichnis nicht mehr im Standard-Include-Pfad @INC enthalten.

Als Grund hierfür gibt perldelta zur Version 5.26 unschöne Begleiterscheinungen der bisherigen Vorgehensweise an:

While convenient, this has security implications: for example, where a script attempts to load an optional module when its current directory is untrusted (such as /tmp), it could load and execute code from under that directory.

Der Beitrag listet auch einige Möglichkeiten auf, wie man das bisherige Verhalten auf sicherem Weg wiederherstellen kann.

Wer es (quick & dirty) genauso unsicher wie vorher haben will, kann auch

use Cwd qw(abs_path); use File::Basename qw(dirname); use lib dirname(abs_path(__FILE__));

in seinem Skript verwenden.