trueten.de

"Man kann die Wahrheit nicht fertig übernehmen, man muss sie selbst entdecken auf einem Weg, den keiner für uns gehen und niemand uns ersparen kann." Marcel Proust

Mini HowTo: OpenDKIM für Postfix installieren

Foto: Lourdes Cardenal
Campo de Criptana Molinos de Viento / La Mancha.
Foto: Lourdes Cardenal, CC BY-SA 3.0, via Wikimedia Commons
Bekanntlich bin ich der Ansicht, daß alle Spammer an ihren Eiern aufgehängt gehören. Da dieser Wunsch für mich momentan etwas schwierig umzusetzen ist, ich aber trotzdem Interesse an einer weitestgehend Spam bzw. Phishing freien Mailverkehr habe, muss ich wie einst Sisyphos (oder war es Don Quixote?) gegen unerwünschte Mails kämpfen. Da ich nicht der einzige bin, der diesen Wunsch hegt, gibt es eine breite Palette an Tools, die einen dabei unterstützen. Als Domaindiktator setze ich dabei am Mailserver an: "DomainKeys ist ein Identifikationsprotokoll zur Sicherstellung der Authentizität von E-Mail-Absendern, das von Yahoo entwickelt wurde und seit Ende 2013 ein Internet-Standard ist. Es wurde konzipiert, um bei der Eindämmung von unerwünschter E-Mail wie Spam oder Phishing zu helfen."  DKIM-Signaturen machen also Veränderungen an Header und Body einer Mail erkennbar.
Da es einige Stolperfallen bei der Einrichtung gibt, die das korrekte Funktionieren verhindern können, habe ich mir ein kurzes und rudimentäres HowTo verfasst:

Das Szenario: Alle Mails der Doman domainname.de sollen signiert werden. Alle eingehenden Mails sollen verifiziert werden. Wir haben Zugriff auf Nameservereinträge der Domain und ein Postfix Server sowie Amavis und Spamassassin verrichten ihren Dienst auf einem debian System. Den DKIM Dienst soll openDKIM übernehmen, das wir gleich mal in einem Terminal zusammen mit ein paar Tools installieren:
sudo apt install opendkim opendkim-tools

Dann legen wir ein Schlüsselverzeichnis an und generieren den Schlüssel. Wichtig ist die korrekte Rechtevergabe in den Schlüsselverzeichnissen! Zudem sollte der Dienst nicht als root laufen sondern unter dem User opendkim. Dieser darf in keiner anderen Gruppe Mitglied sein, ansonsten quittiert der Dienst den selbigen mit einer Fehlermeldung.
mkdir /etc/opendkim/keys/domainname.de
/usr/bin/opendkim-genkey -D /etc/opendkim/keys/domainname.de/ -d domainname.de -s 2020
chown -R root:opendkim /etc/opendkim/keys/domainname.de
chmod 640 /etc/opendkim/keys/domainname.de/2020.private
chmod 644 /etc/opendkim/keys/domainname.de/2020.txt

Im Anschluss bearbeiten wir die /etc/opendkim.conf:
Domain   domainname.de
Selector 2020                             # Das ist der im vorigen Schritt angegebene Selector. Interessant für diejenigen, die den DKIM Key regelmäßig aktualisieren.
KeyFile  /etc/opendkim/domainname.de/2020.private
Socket   inet:8891@localhost
Canonicalization        relaxed/simple    # Auf Headermodifikationen nicht gleich allergisch reagieren
Mode                    sv                # Mails [s]ignieren und [v]erifizieren

Wir starten den Dienst:  sudo systemctl restart opendkim und regeln, daß der Dienst beim Systemstart gleich gestartet wird:  systemctl enable opendkim. Dann befassen wir uns mit der Integration von openDKIM in Postfix. Dazu editieren wir die /etc/postfix/main.cf:
smtpd_milters = inet:localhost:8891
non_smtpd_milters = $smtpd_milters

Danach muss  Postfix diese Änderung bekannt gegeben werden: sudo systemctl reload postfix.

Das war es im Grunde dann auch schon. Bis auf eine Kleinigkeit: Die Integration des Schlüssels als TXT Record im Nameservereintrag von domainname.de. Diese Einstellung unterscheidet sich von Provider zu Provider, daher an der Stelle auch nur der allgemeine Hinweis:


Record NameRecord TypeText
mail._domainkeyTXTv=DKIM1; k=rsa; p=MI.. (Hier Inhalt von /etc/opendkim/keys/domainname.de/2020.txt einfügen, dabei alle >"< entfernen und alle Zeilen nach p= in einen Schlüssel ohne Leerzeichen verbinden.)

Das korrekte Eintragen des Schlüssels kann kompliziert sein, vor allem der Teil nach "p=" darf weder um- noch unterbrochen sein. Ansonsten wird der Schlüssel nicht erkannt!

Testen des Keys:
# opendkim-testkey -d domainname.de -s mail -vvv

opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: checking key 'mail._domainkey.domainname.de'
opendkim-testkey: key not secure
opendkim-testkey: key OK

Sofern keine Fehlermeldungen auftreten, kann man sich nun darum kümmern, eingehenden Spam weiter zu filtern. In Amavis ist der DKIM Filter in einigen Debian Derivaten deaktiviert, lässt sich aber einfach aktivieren. Dazu muss in der Konfigurationsdatei /etc/amavis/conf.d/20-debian-defaults folgender Parameter gesetzt werden:
$enable_dkim_verification = 1;

In der Datei /etc/amavis/conf.d/50-user muss für eine erweitere Anzeige der Überprüfungsergebnisse dann als letztes noch folgender Parameter gesetzt werden:
$allowed_added_header_fields{lc('Authentication-Results')} = 1;

Im täglichen Mailverkehr empfiehlt sich darüber hinaus ein Addon für den freien Mailclient Thunderbird zur Kontrolle der empfangenen Mails: Den DKIM Verifier. Dieses Addon überprüft beim Öffnen einer Mail die Gültigkeit der Signatur. Somit kann man sich (halbwegs) sicher sein, daß die Mail vom signierenden Mailserver stammt. Natürlich nutzen auch einzelne Spammer DKIM. "Es ist wichtig zu beachten, dass eine E-Mail durch eine beliebige Domain signiert seinen kann. Eine gültige Signatur alleine ist daher kein Hinweis auf eine vertrauenswürdige E-Mail. Um zu entscheiden ob eine E-Mail vertrauenswürdig ist sollte immer überprüft werden wer der Signierende ist! In einigen Fällen kann die Abwesenheit einer DKIM Signatur nützlich sein um betrügerische E-Mails zu erkennen. Falls bekannt ist, dass eine Domain alle ihre E-Mails mittels DKIM signiert, ist das Nichtvorhandensein einer DKIM Signatur ein starker Hinweis auf eine gefälschte E-Mail." (Aus der Addon Beschreibung)

Quellen:
debianwiki, Steven Jenkins, Michael Kofler, WikiPediaPhilippe Lieser, Patrick Koetter

Raspberry PI mit SSD und S.M.A.R.T.

Für verschiedene Zwecke haben wir diverse Raspberry PIs im Einsatz. Zum Beispiel als 3D Druckserver mit OctoPrint. Normalerweise wird ein Raspberry mit microSDHC Speicherkarten betrieben. Diese kommen jedoch früher oder später meist an Grenzen, die einem nicht so in die Lebensplanung passen. Höchste Zeit also, auf eine SSD zu setzen, entweder gleich von Anfang an, oder eben wenn es klemmt:

Seit einiger Zeit kann der Raspberry ja auch direkt von der SSD booten, so daß die microSDHC Karten eigentlich nur dafür benötigt werden, das dafür notwendige Bit mittels program_usb_boot_mode=1 in der /boot/config.txt zu setzten.

Danach kann man gleich die z.B. durch etcher mit dem Betriebssystem der Wahl geflashten SSD anschließen und den Rechenzwerg starten. Oder man migriert sein existierendes System via dd von der microSDHC Karte auf die neue SSD. Ich habe beim ersten Versuch mit einer Kombination aus beidem gearbeitet, d.h. zuerst die SSD geflasht, dann die einzelnen dadurch entstandenen Partitionen mittels sudo dd if/dev/sdX of=/dev/sdX status=progress von der SDHC auf die SSD kopiert. Bei der Gelegenheit habe ich, um jeglichen Kalamitäten beim Bootvorgang aus dem Weg zu gehen, die /etc/fstab auf die Verwendung von UUIDs umgestellt, was nicht nur eine einfache Übung sondern wegen der Änderung der Laufwerksbezeichnungen durch den Austausch in jedem Fall notwendig ist.

Gute Erfahrungen habe ich mit den SSDs von SanDisk gemacht, die mit günstigen SATA2USB Adaptern an den Raspberry angeschlossen werden können. Sicherlich gibt es auch schnellere SSDs, das Geld ist jedoch angesichts diverser Beschränkungen des Raspberrys besser anderswo angelegt. Wichtig ist für mich hier vor allem, daß die Platte ohne aktiven USB Hub, d.h. nur mit der vom Raspberry zur Verfügung gestellten maximalen Spannung von 1,2A läuft.

Der SATA2USB Adapter meldet sich nach der Eingabe von sudo smartctl /dev/sdX mit der Id "Unknown USB bridge [0x152d:0x0578 (0x3202)]" und ist dementsprechend ein JMicron JMS567, der auf alle weiteren Aufrufe mittels sudo smartctl -a -d sat /dev/sdX korrekt angesprochen werden kann.

smartctl 6.6 2016-05-31 r4324 [armv7l-linux-4.19.60-v7+] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Device Model:     SanDisk SSD PLUS 240GB
Serial Number:    19172C804389
LU WWN Device Id: 5 001b44 8b814e836
Firmware Version: UF5000RL
User Capacity:    240.065.183.744 bytes [240 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ACS-2 T13/2015-D revision 3
SATA Version is:  SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Mon Jul 29 11:26:28 2019 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART Status not supported: Incomplete response, ATA output registers missing
SMART overall-health self-assessment test result: PASSED
Warning: This result is based on an Attribute check.

General SMART Values:
Offline data collection status:  (0x00)    Offline data collection activity
                    was never started.
                    Auto Offline Data Collection: Disabled.
Self-test execution status:      (  32)    The self-test routine was interrupted
                    by the host with a hard or soft reset.
Total time to complete Offline 
data collection:         (  120) seconds.
Offline data collection
capabilities:              (0x15) SMART execute Offline immediate.
                    No Auto Offline data collection support.
                    Abort Offline collection upon new
                    command.
                    No Offline surface scan supported.
                    Self-test supported.
                    No Conveyance Self-test supported.
                    No Selective Self-test supported.
SMART capabilities:            (0x0003)    Saves SMART data before entering
                    power-saving mode.
                    Supports SMART auto save timer.
Error logging capability:        (0x01)    Error logging supported.
                    General Purpose Logging supported.
Short self-test routine 
recommended polling time:      (   2) minutes.
Extended self-test routine
recommended polling time:      (  42) minutes.

SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0032   100   100   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       47
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       52
165 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       107
166 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       2
167 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       0
168 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       4
169 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       296
170 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       0
171 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0
172 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0
173 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       2
174 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       47
184 End-to-End_Error        0x0032   100   100   ---    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   ---    Old_age   Always       -       0
194 Temperature_Celsius     0x0022   057   047   000    Old_age   Always       -       43 (Min/Max 18/47)
199 UDMA_CRC_Error_Count    0x0032   100   100   ---    Old_age   Always       -       0
230 Unknown_SSD_Attribute   0x0032   100   100   000    Old_age   Always       -       128851640350
232 Available_Reservd_Space 0x0033   100   100   005    Pre-fail  Always       -       100
233 Media_Wearout_Indicator 0x0032   100   100   ---    Old_age   Always       -       391
234 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       817
241 Total_LBAs_Written      0x0030   100   100   000    Old_age   Offline      -       383
242 Total_LBAs_Read         0x0030   100   100   000    Old_age   Offline      -       418
244 Unknown_Attribute       0x0032   000   100   ---    Old_age   Always       -       0

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

Selective Self-tests/Logging not supported
Auch wenn nicht alle S.M.A.R.T. Tests durchgeführt werden können, ist es doch möglich, die wichtigsten Test durchzuführen, die einem Auskunft über ein eventuell baldiges Ableben des Datenträgers geben können, hier mal ein 2 minütiger Kurztest mittels sudo smartctl -t short -d sat /dev/sdX nach 47 Stunden Laufzeit der Platte, den man sich mittels sudo smartctl -a -d sat /dev/sdX ansehen kann:
(...)
SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%        47         -

Selective Self-tests/Logging not supported
Weitere Tests werden dann entsprechend in der Ausgabe ergänzt, die aktuellen Ergebnisse stehen dann immer an erster Stelle der Ausgabe.

HINWEIS:
Alle gemachten Angaben sind ohne Gewähr auf Funktion und Richtigkeit. Für eventuell entstehende Schäden übernehmen wir keinerlei Haftung. Sämtliche Veränderungen geschehen auf Eure Verantwortung und Gefahr.

Irgendwie muss ich das alles finanzieren, daher sind die allermeisten Links Affiliate. D.h.: Solltet Ihr über diese Links zu einem Onlinehändler geraten und dort etwas bestellen, bekomme ich eine kleine Provision, für Euch ändert das am Preis natürlich nichts.

NotepadQQ unter Raspbian / Debian Stretch kompilieren

Ab und an ist ein grafischer Texteditor einfach praktischer als vi, emacs oder nano. Die Wahl fällt heute oft auf NotepadQQ, ein Linux Clon des Windows Editors Notepad++. Leider ist NotepadQQ nicht in den aktuellen Paketquellen für Stretch enthalten, eine Snap Installation wie von den NotepadQQ EntwicklerInnen empfohlen, kommt nicht in Frage. Also: Selbst ist der User und mit einiger Frickelei läuft der Editor auch via

ssh -x username@rechnername notepadqq

auf einem headless RaspberryPI B R2. Zumindest in der Version 1.48 und nach einem ordentlichen Weilchen...

sudo apt install -y qt5-qmake libqt5webkit5 libqt5svg5 coreutils libqt5webkit5-dev libqt5svg5-dev qttools5-dev-tools qt5-default qttools5-dev-tools qtwebengine5-dev libqt5websockets5-dev libqt5svg5 libqt5svg5-dev libuchardet-dev libqt5webengine-data qt5-default qttools5-dev-tools qtwebengine5-dev libqt5websockets5-dev libqt5svg5 libqt5svg5-dev libuchardet-dev libqt5webkit5-dev libqt5svg5-dev qttools5-dev-tools

git clone https://github.com/notepadqq/notepadqq.git

cd notepadqq

git checkout -f v1.4.8

./configure --prefix /usr --qmake /usr/lib/arm-linux-gnueabihf/qt5/bin/qmake

make

sudo make install

Pi-hole Update

Seit heute gibt es ein Update für Pi-hole auf die Version 4.0. Wie immer ist das einfach: per ssh auf dem Pi einloggen, dann einfach "sudo pihole -up". Nach einiger Zeit ist das Update aktiv.
N.B. : Bei uns sind knapp 600.000 Domains auf der Blocklist. Das erspart einem schon mal einen Großteil der üblichen Spione.

2119 hits
Defined tags for this entry:
Last modified on 2018-08-07 07:59

#efail: PGP in HTML Mails angreifbar

Mit PGP verschlüsselte eMails im HTML Format sind angreifbar. Dies haben Forscher heute nachgewiesen. Leider sind HTML kodierte Mails sehr verbreitet, obwohl dieses Format ursprünglich eigentlich für das Web und nicht für Mails vorgesehen war. Aber so kann man doch so schön formatierte Mails und anklickbare Links versenden... Eben drum.

Die als #eFail kursierende Sicherheitslücke bezieht sich jedoch wohl nur auf dieses Mailformat und ist vor allem in der Kombination unsichere Mailserver / uralte Mails praktisch gefährlich.  Daher lautet die Devise nicht: "PGP ist schlecht also deaktivieren und niemals verschlüsselte Mails versenden" sondern HTML in Mails deaktivieren, und für  Admins: Ungesicherte Mailserver absichern. Letzteres gibt es offensichtlich immer noch...

Siehe dazu: spiegel.de, netzpolitik.org, heise.de

Nachrichtenansicht HTML deaktivieren in

Thunderbird

Outlook

Und nun zum Wetter. Oder: Ein paar nützliche bash Scripts

Am gegenwärtigen Wetter kann man nichts ändern. Aber man kann sich darauf einstellen. Alexander Epstein hat auf github einige nützliche bash Scripte zusammengestellt, zum Beispiel eine anpassbare Wettervorhersage für die nächsten 3 Tage, einen Url Kürzer, einen Videoplayer, Währungsrechner für die Konsole usw. Nach dem Clonen des git Repositories lassen sich alle oder auch nur einzelne der Scripte installieren.

11745 hits
Defined tags for this entry: ,
Last modified on 2017-07-26 12:20

Notebook Funktionstasten unter Ubuntu / Mint aktivieren

Als ich neulich im Freien mit meinem Toshiba Satellite R830-11C unterwegs war und in einem netten Straßencafè etwas damit arbeiten wollte wurde mein Gesicht immer länger und länger: Der ansonsten schön helle Bildschirm war ganz schön dunkel - klar: Energie sparen -  aber: Die Funktionstasten zum Regulieren der Helligkeit (Fn6 / Fn7) reagierten nicht. Ich hatte da aus Faulheit engegen meiner sonstigen Gewohnheit Linux Mint 17.3 LTS "ROSA" installliert. Eine Suche nach dem Problem ergab alle möglichen Möglichkeiten, lösten nur mein Problem nicht - bis auf eine: Der Kollege von kushellig hat eine Lösung gefunden, die ich bei mir erfolgreich einsetzen konnte:

Im Terminal per

sudo gedit /etc/default/grub

die Zeile (im Screenshot Zeile 11)

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

um folgendes erweitern:

acpi_osi=Linux acpi_backlight=vendor

Man kann auch einen anderen Editor verwenden, ich nehme hier den Notepad++ Klon NotepadQQ. Das ganze sollte dann so aussehen:



Wie in der Datei schon erwähnt, sollte man im Anschluss grub im Terminal per

sudo update-grub

updaten und rebooten. Danach sollten die Tasten wie gewünscht funktionieren. In der Kommentarspalte bei kushellig wird noch auf ein paar Fragen zum Thema eingegangen, der Blick dorthin lohnt sich auf jeden Fall.