pfsense: pihole mit pfBlocker NG (fast) arbeitslos machen.

Nur ein kurzer Bookmark für eine ausführliche Anleitung, wie mittels dem pfBlocker NG Plugin Werbung usw. direkt an der Firewall blockiert werden kann. Noch etwas weiter geht dieser Beitrag, der auch beschreibt, wie mittels Zugriffslisten Angriffe oder Scans auf die Firewall blockiert werden können. Zusammen mit Browserplugins wie ublockorigin ergeben sich dann endlich Werbefreie Seiten.

Für kleinere Netze wäre ein derart komplexes Konstrukt Overkill, hier empfiehlt sich piHole, gerade auch in Verbindung mit einem VPN.

Linux: Fehlende Firmware nachinstallieren

Manchmal moniert Linux fehlende Firmware. Das sieht bei einem apt Lauf zum Beispiel so aus:

Setting up linux-modules-extra-4.18.0-16-generic (4.18.0-16.17) ...
Setting up linux-image-generic (4.18.0.16.17) ...
Setting up linux-headers-generic (4.18.0.16.17) ...
Setting up linux-generic (4.18.0.16.17) ...
Processing triggers for linux-image-4.18.0-16-generic (4.18.0-16.17) ...
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-4.18.0-16-generic
W: Possible missing firmware /lib/firmware/amdgpu/vega12_gpu_info.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_asd.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_sos.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_asd.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_sos.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_rlc.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_mec2.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_mec.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_me.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_pfp.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_ce.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_rlc.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_mec2.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_mec.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_me.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_pfp.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_ce.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_sdma1.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_sdma.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_sdma1.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_sdma.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_uvd.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_uvd.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_vce.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_vce.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_smc.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_smc.bin for module amdgpu
I: The initramfs will attempt to resume from /dev/dm-2
I: (/dev/mapper/ubuntu--vg-swap_1)
I: Set the RESUME variable to override this.
/etc/kernel/postinst.d/zz-update-grub:
Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.18.0-16-generic
Found initrd image: /boot/initrd.img-4.18.0-16-generic
Found linux image: /boot/vmlinuz-4.18.0-15-generic
Found initrd image: /boot/initrd.img-4.18.0-15-generic
Found linux image: /boot/vmlinuz-4.18.0-10-generic
Found initrd image: /boot/initrd.img-4.18.0-10-generic
Adding boot menu entry for EFI firmware configuration

Die Lösung:

Um es kurz zu machen und User, die nicht über Erfahrungen mit der Konsole verfügen: Die folgenden Befehle können einfach per Copy&Paste  ausgeführt werden. Voraussetzung: git sollte installiert sein. Falls nicht: Ein Terminal öffnen mit (ctrl + alt + t in den meisten Fällen) und das folgende Kommando eingeben:

sudo apt install git -y

Falls apt behauptet, es sei nicht up to date:

sudo apt update && sudo apt upgrade -y

danach sollte sich git problemlos installieren lassen.

Die Firmware Dateien finden sich hier. Wenn git installiert ist, können sie im Terminal einfach durch den folgenden Befehl installiert werden:

cd ~/Dokumente && git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/firmware/linux-firmware.git

Nachdem das git Verzeichnis so importiert wurde, ist es notwendig, die Dateien in das richtige Verzeichnis zu kopieren, damit das Programm "update-initramfs" sie finden und verwenden kann. Dazu einfach das folgende Kommando eingeben:

sudo cp ~/Dokumente/linux-firmware/amdgpu/* /lib/firmware/amdgpu && sudo update-initramfs -k all -u -v

Nach ein paar Programmzeilen sollten die Firmware Dateien korrekt im initramfs-Image verarbeitet worden sein und apt fehlerfrei durchlaufen.

Quelle / eigene Anpassungen.

Roborock S5 Max und Firewalls

Wenn man alles verbietet, was nicht erlaubt ist, machen manche Apps oder Smarthomegadgets Probleme. So auch unser Roborock S5 Max, der nach dem Hinzufügen einiger Geoblocking IPs in der FireWall seine Karte nicht mehr findet. Klar, denn das Teil kommt bekanntlich aus dem Reich der Mitte und bei allen derartigen Geräten spioniert Xiaomi, der Mutterkonzern von Roborock im Auftrag von Maos Erben, dem ZK der KPCh meine Dissidentenwohnung aus. Oder so ähnlich, weshalb viele der Blockierlisten, die im Lande des natürlichen Gegners des Reiches Modor, den USA, gepflegt werden, hemmungslos am besten gleich die chinesische Toplevel Domain blockieren.
Nun ist ja nicht jeder Vorwurf an die Chinesen so falsch wie die Behauptung, daß die USA dergleichen selber niemals tun würden. Deshalb ist es eine gute Idee, nur die unbedingt notwendigen Quelle / Zieladressen und Ports in der Firewall zu öffnen.

Das betrifft im Falle des S5Max folgende Urls:

data.mistat.xiaomi.com
fr.app.chat.global.xiaomi.net
s3-eu-west-1.amazonaws.com

sowie den UDP Port 8053 für die folgenden IP Adressen:
3.122.217.21
3.124.122.199
52.28.26.121
52.57.224.199

Für die XiaoMiHome sowie die Roborock App: Die TCP Ports 6668 (XiaoMiHome) 8883 (Roborock) für die folgenden Adressen:
122.0.0.0
18.194.10.142
18.196.142.136
18.197.183.192
3.121.141.195
3.122.208.21

Ein anderer Ansatz wäre das Whitelisten der Adressen, im Gegensatz zum gezielten Öffnen bestimmter Ports für bestimmte Quell und natürlich nur für die in einem separaten Zielnetz arbeitenden Geräte. Letzteres erscheint mir jedenfalls sinnvoller, da durch das Whitelisten die Adressen auf alle Rechner im lokalen Netzwerk chinesische Reklame kommen würde.

Postfix Mails aus der Queue von bestimmten Absendern / Domains löschen

Manchmal klemmt eine Mail in der Mailqueue, die man dann auch noch löschen möchte. Für eine komplette Domain:

postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } /@example\.com/ { print $1 }' | tr -d '*!' | postsuper -d -

Für einen einzelnen Absender:

postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } /mail@example\.com/ { print $1 }' | tr -d '*!' | postsuper -d -

Postfix Mails aus der Queue von bestimmten Absendern / Domains löschen

Manchaml klemmt eine Mail in der Mailqueue, die man dann auch noch löschen möchte. Für eine komplette Domain:

postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } /@example\.com/ { print $1 }' | tr -d '*!' | postsuper -d -

Für einen einzelnen Absender:

postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } /mail@example\.com/ { print $1 }' | tr -d '*!' | postsuper -d -

Mini Howto: Speicher eines Lenovo Yoga 330 erweitern.

Einem Lenovo Yoga 330 wurden die 32GB Speicherplatz unter Windows 10 zu eng. Kein Wunder, wer spezifiziert denn so was? Also musste eine größere SSD her. Laut der Yoga 330 (11") Platform Specifications passen M.2 SATA SSD, siehe auch Hardware Maintenance Manual - Yoga 330-11IGM. Die Teile sind recht günstig zu bekommen, also gleich zukunftssicher eine für diesen Rechner ausreichende Crucial MX500 500GB CT500MX500SSD4 geordert. Der Preisunterschied zur 250GB Variante rechtfertigt den Kauf der 500GB Version, die 1TB wiederum ist zu teuer und in dem Fall auch nicht angemessen bzw bis zum EOL des Geräts vermutlich auch nicht benötigt.

Zum Einbau steht eigentlich alles in der vorbildlichen Dokumentation von Lenovo, hier das Exzerpt des 79 seitigen Manuals:

Beim vom Stromnetz getrennten Notebook müssen die rückseitigen Schrauben entfernt und der Gehäusedeckel sachte (!) mit einem entsprechenden Öffnungswerkzeug gelöst werden. Dazu habe ich an den Seiten mit dem schärfsten Werkzeug den Spalt zwischen dem Deckel der Rückseite und dem Tastaturgehäuse erweitert, einen der Öffner in dem Spalt stecken gelassen und dann die gegenüberliegende Seite ebenso geöffnet und eine Öffner in den Spalt geklemmt. Dann den HH5A Öffner an einem Spaltende ca. 5mm ins Gehäuse reinschieben und ebenso sachte im Spalt der Vorderseite des Gehäuses entlangziehen, eventuell unterwegs noch einen Öffner setzen, damit sich der Spalt nicht schließt. Wenn so schließlich 3 Seiten geöffnet sind, sollte sich der Gehäuseboden bereits abheben lassen. Ansonsten auf der Scharnierseite des Gehäuses den Spalt ebenfalls mit dem HH5A (dem dünnsten Werkzeug / Blechstreifen) öffnen.



Rechts oben unter dem mit dem roten Pfeil markierten Flachbandkabel ist der Steckplatz für die neue SSD, diese wird einfach mit sanftem Druck in die Halterung gesteckt und mit einer der beiden beiliegenden Schrauben im dafür vorgesehenen Gewinde gesichert.



Nachdem soweit alles montiert ist, kann man den Deckel wieder verschrauben und das Notepad wieder mit dem Netzkabel verbinden. Man startet dann ein letztes Mal von der "alten" SSD und lädt von der Crucial Webseite das Cloning Programm Acronis TrueImage herunter und installiert selbiges. Das nur mit halbwegs aktuellen Crucial SSDs funktionierende Programm kopiert innerhalb weniger Augenblicke den kompletten Inhalt der alten auf die neue SSD, auch inklusive der Recovery Daten.

Danach fährt man das Betriebssystem herunter und nimmt eine aufgebogene Büroklammer und führt diese mit leichtem Druck in die dafür vorgesehene Öffnung vor dem "Novo" Schalter ein und drückt letzteren dabei. Das Notepad sollte sich dann mit dem BIOS melden, dort kann die neue Festplatte gefunden und als Bootlaufwerk aktiviert werden.

Mit F10 abspeichern und neu starten, der Rechner bootet von der neuen SSD. Die alte SSD ist nun als Laufwerk D sichtbar, da alle Daten nun ja auf der neuen SSD liegen, könnte man das alte Laufwerk formatieren und so weitere 32 GB zur Verfügung gewinnen. Ich rate jedoch eher dazu, darauf zu verzichten. Es kann ja sein, daß man irgendwann die 2 GB Hauptspeicher satt und Gelüste auf ein wenig besseres Notepad bekommt und dort die 500GB SSD weiterverwenden will. Das Lenovo könnte so problemlos in den Ursprungszustand zurück versetzt werden.


Hinweis: Alle hier gezeigten Schritte haben so bei mir funktioniert. Ich gebe keinerlei Garantie darauf, daß dieses bei anderen Menschen ebenfalls klappt und lehne insbesondere jegliche Haftung für daraus entstandene Schäden ab. Extra Warnung: Man arbeitet in der Nähe eines Lithium-Ionen Akkus. Diese sind zu behandeln wie rohe Eier, Beschädigungen wie Verformungen usw. können brandgefährlich sein!


Einige Links in diesem Beitrag sind Vorschläge / Einkaufsquellen und sog. Affiliatelinks. Wenn Du etwas über diesen Link kaufst, erhalten wir eine kleine Provision. Der Preis für Dich bleibt derselbe. Vielen Dank für Deine Unterstützung.

Some of the links are suggestions for parts to replicate the thing and affiliate. If you buy something, I get a small commission. The price you pay is the same. Thank you very much.

batocera: Daddeln bis die Konsole raucht. Aber sicher.

Batocera ist die Linux Distribution für Spiele mit diversen Emulatoren, die momentan so ziemlich am besten läuft.  Das System läuft als root, daher ist es eine gute Idee, als erstes das Passwort zu ändern und gleich anschließend den SecureSHell Zugriff ermöglichen, natürlich ohne Passworteingabe, nur mit vorherigem Schlüsselaustausch.

Fehlschlag bei pg_config is required to build psycopg2

Dem Wunsch, eine PostgeSQL Datenbankunterstützung für eine Filamentdatenbank bei einer frischen OctoPrint Installation nachzurüsten wurde abgelehnt.  oprint/bin/pip install psycopg2 ergibt:

Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple

Collecting psycopg2

  Using cached psycopg2-2.8.6.tar.gz (383 kB)

    ERROR: Command errored out with exit status 1:

     command: /home/pi/oprint/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-eaezo9u5/psycopg2_570f9f228a2746e5b69eb4577ade54b4/setup.py'"'"'; __file__='"'"'/tmp/pip-install-eaezo9u5/psycopg2_570f9f228a2746e5b69eb4577ade54b4/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-42q59a0p

         cwd: /tmp/pip-install-eaezo9u5/psycopg2_570f9f228a2746e5b69eb4577ade54b4/

    Complete output (23 lines):

    running egg_info

    creating /tmp/pip-pip-egg-info-42q59a0p/psycopg2.egg-info

    writing /tmp/pip-pip-egg-info-42q59a0p/psycopg2.egg-info/PKG-INFO

    writing dependency_links to /tmp/pip-pip-egg-info-42q59a0p/psycopg2.egg-info/dependency_links.txt

    writing top-level names to /tmp/pip-pip-egg-info-42q59a0p/psycopg2.egg-info/top_level.txt

    writing manifest file '/tmp/pip-pip-egg-info-42q59a0p/psycopg2.egg-info/SOURCES.txt'



    Error: pg_config executable not found.



    pg_config is required to build psycopg2 from source.  Please add the directory

    containing pg_config to the $PATH or specify the full executable path with the

    option:



        python setup.py build_ext --pg-config /path/to/pg_config build ...



    or with the pg_config option in 'setup.cfg'.



    If you prefer to avoid building psycopg2 from source, please install the PyPI

    'psycopg2-binary' package instead.



    For further information please check the 'doc/src/install.rst' file (also at

    <https://www.psycopg.org/docs/install.html>).



    ----------------------------------------

ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

Was sich nicht sofort daraus erschließt: Es fehlten ein paar Bibliotheken: sudo apt-get install libpq-dev python-dev. Danach lässt sich die Datenbankunterstützung problemlos nachrüsten.

Mini-HowTo: Green Cell® UPS USV mit Nagios überwachen

Der Status einer günstigen unterbrechungsfreien Stromversorgung (USV), in dem Fall eine (Green Cell® UPS USV Unterbrechungsfreie Stromversorgung 600VA (360W)soll mittels Nagios abgefragt werden. Das UPS Modell ist mit dem Network UPS Tools (NUT) Treiber blazer_usb kompatibel. Die USV versorgt einen Clientrechner client.lan, Nagios ist auf einem Server server.lan installiert. Unter debian bzw. seinen Ablegern lässt sich die nötige Software auf dem Clientrechner wie gehabt installieren:
sudo apt install nut

Irgendwelche Abhängigkeiten sollten natürlich aufgelöst werden. Danach editieren wir die Datei /etc/nut/ups.conf und fügen am Ende folgende Definition für die GreenCell UPS ein:
[GreenCell]
        driver = "blazer_usb"
        port = "auto"
        desc = "GreenCell USV 600VA"
Die Datei /etc/nut/nut.conf editiert man dann entsprechend dem Verwendungszweck (Standalone/Netzserver/-client)
# Network UPS Tools: example nut.conf
#
##############################################################################
# General section
##############################################################################
# The MODE determines which part of the NUT is to be started, and which
# configuration files must be modified.
#
# This file try to standardize the various files being found in the field, like
# /etc/default/nut on Debian based systems, /etc/sysconfig/ups on RedHat based
# systems, ... Distribution's init script should source this file to see which
# component(s) has to be started.
#
# The values of MODE can be:
# - none: NUT is not configured, or use the Integrated Power Management, or use
#   some external system to startup NUT components. So nothing is to be started.
# - standalone: This mode address a local only configuration, with 1 UPS 
#   protecting the local system. This implies to start the 3 NUT layers (driver,
#   upsd and upsmon) and the matching configuration files. This mode can also
#   address UPS redundancy.
# - netserver: same as for the standalone configuration, but also need
#   some more network access controls (firewall, tcp-wrappers) and possibly a
#   specific LISTEN directive in upsd.conf.
#   Since this MODE is opened to the network, a special care should be applied
#   to security concerns.
# - netclient: this mode only requires upsmon.
#
# IMPORTANT NOTE:
#  This file is intended to be sourced by shell scripts.
#  You MUST NOT use spaces around the equal sign!

MODE=standalone

Auf dem Server wird Nagios am besten aus den Quellen installiert, viele Plugins und auch das Programmpaket selber liegt meistens in recht hm... veralteten Versionen vor. Ich verweise hier mal auf ein recht aktuelles HowTo. ^^

Sobald Nagios läuft, stricken wir uns einen Befehl zum Ansprechen der UPS zusammen und editieren dazu die Datei /usr/local/nagios/etc/objects/commands.cfg
# UPS Check
#
#
define command {

    command_name check_ups
    command_line    $USER1$/check_ups -H $HOSTADDRESS$ -u GreenCell
}

Wie man unschwer erkennen kann, bezieht sich der Befehl in der vorletzten Zeile auf das in der Datei /etc/nut/ups.conf definierte Gerät. Dieser Befehl kann nun in beliebigen Serverkonfigurationen, die Nagios überwacht, angewendet werden. Wir richten nun aber erst einmal die Nagios Konfiguration des Clients ein, der durch die USV versorgt wird und editieren dazu eine neue Datei, in dem Fall nennen wir sie einfach /usr/local/nagios/etc/servers/client.lan.cfg
(...)
define service {
use                     local-service
host_name               client.lan
service_description     GreenCell UPS
check_command           check_ups!-H client.lan -u GreenCell

Ab diesem Zeitpunkt sollte der Status der UPS abgefragt werden können. Welche Werte genau abgefragt werden können ist natürlich von der jeweiligen UPS abhängig und welche Werte von Belang sind. Wie bei den meisten anderen Nagios Plugins können auch bei check_ups die möglichen Parameter durch einen Aufruf auf den Kommandozeile abgefragt werden. Hier man ein wenig Copy & Paste:
nagiosuser@server.lan:/usr/local/nagios/libexec# ./check_ups -h
check_ups v2.3.3 (nagios-plugins 2.3.3)
Copyright (c) 2000 Tom Shields
Copyright (c) 2004 Alain Richard <alain.richard@equation.fr>
Copyright (c) 2004 Arnaud Quette <arnaud.quette@mgeups.com>
Copyright (c) 2000-2014 Nagios Plugin Development Team
    <devel@nagios-plugins.org>

This plugin tests the UPS service on the specified host. Network UPS Tools
from www.networkupstools.org must be running for this plugin to work.

Usage:
check_ups -H host -u ups [-p port] [-v variable] [-w warn_value] [-c crit_value] [-e] [-to to_sec] [-T]

Options:
 -h, --help
    Print detailed help screen
 -V, --version
    Print version information
 --extra-opts=[section][@file]
    Read options from an ini file. See
    https://www.nagios-plugins.org/doc/extra-opts.html
    for usage and examples.
 -H, --hostname=ADDRESS
    Host name, IP Address, or unix socket (must be an absolute path)
 -p, --port=INTEGER
    Port number (default: 3493)
 -u, --ups=STRING
    Name of UPS
 -T, --temperature
    Output of temperatures in Celsius
 -e, --extended-units
    Allow nonstandard units in performance data (used for voltage and temperatures)
 -v, --variable=STRING
    Valid values for STRING are LINE, TEMP, BATTLEFT, BATTPCT or LOADPCT
 -w, --warning=DOUBLE
    Response time to result in warning status (seconds)
 -c, --critical=DOUBLE
    Response time to result in critical status (seconds)
 -t, --timeout=INTEGER:
    Seconds before connection times out (default: 10)
    Optional ":" can be a state integer (0,1,2,3) or a state STRING

This plugin attempts to determine the status of a UPS (Uninterruptible Power
Supply) on a local or remote host. If the UPS is online or calibrating, the
plugin will return an OK state. If the battery is on it will return a WARNING
state. If the UPS is off or has a low battery the plugin will return a CRITICAL
state.

Notes:
 You may also specify a variable to check (such as temperature, utility voltage,
 battery load, etc.) as well as warning and critical thresholds for the value
 of that variable.  If the remote host has multiple UPS that are being monitored
 you will have to use the --ups option to specify which UPS to check.

 This plugin requires that the UPSD daemon distributed with Russell Kroll's
 Network UPS Tools be installed on the remote host. If you do not have the
 package installed on your system, you can download it from
 http://www.networkupstools.org

Send email to help@nagios-plugins.org if you have questions regarding use
of this software. To submit patches or suggest improvements, send email to
devel@nagios-plugins.org

Eine am Server abgesetzte Anfrage ergibt in unserem Fall:
nagiosuser@server.lan:/usr/local/nagios/libexec# ./check_ups -H prusapi.lan -u GreenCell
UPS OK - Status=Online Utility=230,0V Batt=100,0% Load=4,0% |voltage=230,000000;;;0,000000 battery=100,000000%;;;0,000000;100,000000 load=4,000000%;;;0,000000;100,000000

Nagios verwertet diesen Schnipsel so:



Einige Links in diesem Beitrag sind Vorschläge / Einkaufsquellen und sog. Affiliatelinks. Wenn Du etwas über diesen Link kaufst, erhalten wir eine kleine Provision. Der Preis für Dich bleibt derselbe. Vielen Dank für Deine Unterstützung.

Some of the links are suggestions for parts to replicate the thing and affiliate. If you buy something, I get a small commission. The price you pay is the same. Thank you very much.