Abmahn-Falle reCaptcha

Wer freut sich nicht darüber, auf Websites mit Formularen immer wieder Bilderrätsel lösen zu müssen, die oft kaum erkennbar sind oder falsch ausgewertet werden, oder seine Lese- und Rechenkünste der 1. Klasse unter Beweis stellen zu müssen. Die Rede ist von sogenannten Captchas [1]. Sie dienen dazu, Maschinen – also Programmen – das automatische Ausfüllen von Formularen zumindest so zu erschweren, dass davon abgesehen wird. Damit soll in der Regel die Flut von Spam-Kommentaren verhindert werden.

Besonders bekannt sind die Captchas von Google. So ausgeklügelt die heute auch sind und wie gut sie auch ihren Zweck erfüllen, so haben si doch einen entscheidenden Nachteil. Neben ihrer Hauptaufgabe aus Nutzersicht schicken sie jedoch im Hintergrund eine Menge zwar anonyme, aber persönliche Daten zu Google. Neben den technisch notwendigen wie den IP-Adressen, werden Orte, Browser, Plugins, Mausbewegungen… gesammelt und statistisch ausgewertet. Das ist der eigentliche Gewinn für Google, alles andere ist nur Werkzeug. Eigentlich eine Win-Win-Situation, aber eben ein Dorn im Auge der Datenschützer.

Worum es hierbei im Detail geht und warum das aus Sicht der Datenschützer problematisch ist, wird hier [2] gut beschrieben, das muss ich hier nicht nochmal machen.

Um das Problem generell zu umgehen, bietet sich die Nutzung grundsätzlich anderer Konzepte als die diversen Captcha-Lösungen, insbesondere der von Google, an. Mein Favorit ist der „Honigtopf“, ein altbekanntes Mittel, um Fliegen und andere schädliche Insekten anzulocken und unschädlich zu machen. Für unsere Zwecke heißt das tatsächlich „Honeypot“ und beschreibt eine Programmiertechnik innerhalb einer Website, lüsterne Bots (spezielle Suchmaschinen) auf die falsche Fährte zu locken und damit unschädlich zu machen.

Für WordPress gibt es eine Reihe von Plugins, die das realisieren. Welches geeignet ist, hängt ab von anderen verwendeten Techniken, z. B. von benutzten Formular-Plugins wie CF7 oder WPForms. Manches kann man gut kombinieren, z. B. „Honeypot for CF7“ und „Blackhole for Bad Bots“. Man suche einfach mal Plugins mit „Honeypot“ und es finden sich einige, die man probieren kann.

Hat man das erledigt, kann in der Datenschutz-Erklärung der Abschnitt zu Captchas ersatzlos gestrichen werden, der sonst wegen der ungewollten Datenübertragung nach Übersee nicht fehlen dürfte.


[1] https://de.wikipedia.org/wiki/Captcha
[2] https://www.dr-datenschutz.de/google-recaptcha-und-der-datenschutz/

Abmahn-Falle Google Fonts

Es scheint wieder eine neue Abmahnwelle anzurollen. Sie ist nicht neu, aber besonders hinterhältig. Der Hintergrund ist, dass Google eine riesige Menge Schriften (Fonts) zur kostenlosen Verwendung anbietet, indem sie einfach in der eigenen Website verlinkt und beim Laden der Seiten online bezogen werden. Dabei werden – so funktioniert eben das Internet! – neben der eigenen IP-Adresse auch einige anonyme Daten des Browsers zu Google übertragen. Das stößt den Anwälten unter den Datenschützern (Stichwort: DSGVO, Datenschutz-Grundverordnung) auf und sie wittern Profit. Denn dieser Datenübertragung stimmt der Nutzer in der Regel nicht bewusst zu. Was für ein Irrsinn! Es werden dann Abmahnungen im niedrigen dreistelligen Bereich verschickt, die meist schnell bezahlt werden, weil sich ein Rechtsstreit deswegen nicht lohnt. Das bei 1000 „Klienten“ ergibt ein hübsches Sümmchen.

Insbesondere bei Websites mit WordPress, bei deren verwendetem Theme die verwendete Schrift (Font) von Google oft fest einprogrammiert ist, ist das unter Umständen schwer zu beheben. Es gibt Plugins, die sowas beheben sollen, was aber aus meiner Erfahrung nicht geht und sogar in einer „weißen Seite“ enden kann.

Ist die Website vorhanden – egal ob konventionell oder z.B. WordPress -, muss man zunächst herausfinden, welche Google-Fonts verwendet und tatsächlich online bezogen werden. Nur um diese geht es in diesem Zusammenhang, alle anderen Techniken werden jetzt nicht betrachtet. Das lässt sich zum Beispiel mit diesem Tool machen:

[1] https://fonts-check.de/

Gibt es „schädliche“ Fonts, werden die aufgelistet. Oft erscheinen dort mehrere Versionen, also Dateiformate – entscheidend ist nur der darinsteckende Name, z.B. „Roboto“. Erscheint nichts, ist alles gut.

Konventionelle Website

Hat man eine konventionelle Website, die man selbst geschrieben hat, stehen die Aufrufe der Google-Fonts im Head-Bereich in einer Form wie

<link href=“https://fonts.googleapis.com/css?family=Roboto’ rel=’stylesheet“>

Diese Zeilen werden auf allen Seiten gelöscht. Stattdessen wird in die normalerweise immer vorhandene zentrale CSS-Datei der Code eingefügt, den man sich mit dem Tool

[2] Google Webfonts Helper (google-webfonts-helper.herokuapp.com/fonts)

(leider nur in Englisch verfügbar!) komfortabel zurechtmachen lassen kann. Dabei kommen solche recht komplexen Styles heraus, die man dann den entsprechenden Selektoren (auch *) zuweisen kann:

* {
    @font-face {
      font-family: 'Roboto';
      font-style: normal;
      font-weight: 400;
           url('../fonts/roboto-v30-latin-regular.woff2') format('woff2'),
           url('../fonts/roboto-v30-latin-regular.woff') format('woff'),
           url('../fonts/roboto-v30-latin-regular.ttf') format('truetype'),
           url('../fonts/roboto-v30-latin-regular.svg#Roboto') format('svg');
    }
}

Die Zeilen für den IE 8/9 habe ich gleich weggelassen, die braucht keiner mehr.

Website mit WordPress

Hier gibt es mehrere Möglichkeiten. Die einfachste ist, dass das verwendete Theme das „Verstecken“ benutzter Google-Fonts gleich selbst mitbringt oder gar keine verwendet.

Etwas aufwändige kann es werden, wenn es welche verwendet, die aber fest im Theme kodiert sind. Dann kann man nur versuchen, das Verstecken mit einem geeigenten Plugin zu bewerkstelligen wie zum Beispiel „OMGF | GDPR/DSVGO Compliant, Faster Google Fonts. Easy.“ (OMGF) oder „Local Google Fonts“. Man kann auch versuchen, die Verwendung ganz abzuschalten, z.B. mit dem Plugin „Disable and Remove Google Fonts“. All das muss nicht funktionieren und kann schlimmstenfalls dazu führen, dass beim Neuladen des Backends oder der Website selbst nichts mehr erscheint außer einer wenig sagenden Fehlermeldung: Dann hilf nur der beherzte Zugriff über FTP auf /wp-content/plugins und das Löschen des Verzeichnisses <plugin-name>, den man sich hoffentlich gemerkt hat… (es empfiehlt sich also ein vorheriger Blick dorthin, um den Namen zu kennen).

Fazit

Auch wenn die Abmahner für diesen unsinnigen Lapsus „nur“ etwa 300 € haben wollen, sollte man die Sache rechtzeitig beheben. Manchmal sind die Fonts überflüssig, weil sie gar keinen Gewinn gegenüber Standardschriften bringen, aber Ladezeit bewirken. Möchte man sie wegen der Ästethik haben, lohnt sich der Aufwand. Übrigens auch dann, wenn ihr Websites für Kunden macht: Man wird das Engagement loben und die 300 € lieber euch geben statt den Anwälten.


Ich bitte um Ergänzungen in euren Kommentaren! Ich werde aber kaum für alle möglichen Fälle wie exotische CMS oder E-Commerce-Sites Empfehlungen zusammentragen, dazu ist das Thema einfach zu vielfältig.

Thunderbird: Aktivierung von eigenem CSS-Code

Mancheiner bemüht sich vergeblich, eigenen Code in Thunderbird’s userChrome.css und userContent.css unterzubringen und verzweifelt daran, dass das einfach nicht wirkt. Man muss Thunderbird zuvor sagen, dass das auch benutzt werden darf und soll! Ob das eine Sicherheitsmaßnahme ist, sei dahingestellt. Also:

Entweder baut man direkt in prefs.js folgendes ein – was ich wegen der Fehleranfälligkeit sehr ungern tue:

 user_pref("toolkit.legacyUserProfileCustomizations.stylesheets",true);

Oder man geht in Thunderbird in „Einstellungen/Allgemein“ nach ganz unten zu „Konfiguration bearbeiten, gibt dort den Schlüssel

toolkit.legacyUserProfileCustomizations.stylesheets

ein und setzt ihn auf true. Er steht standardmäßig auf false.

Voilá.

Android: Probleme mit Fritz!App Fon

Meine Situation

Ich betreibe eine Fritz!Box 6490 Cable (Vodafone) mit OS 7.29 und ein Smartphon Xiaomi Redmi Note 9 mit MIU 12.5.3 als Betriebssystem. Als App habe ich derzeit die Version 2.6.1 vom 30.6.2022.

Wenn ich die Fritz!App Fon einfach nur nach Vorgabe installiere – was ja in 3 Minuten erledigt zu sein scheint -, funktioniert sie bei weitem nicht zuverlässig. Nach kurzer Zeit meldet sie sich beim manuellen Aufruf mit „nicht aktiv“ und sie ist es tatsächlich auch nicht: Kommt ein Anruf auf einer der eingestellten Nummern, klingelt es zwar, aber die App „geht nicht ran“, das Telefon wacht nicht auf, die Oberfläche der App ist nicht sichtbar und wenn man das Telefon entsperrt, sieht man nur „unbekannte Nummer“.

Ich habe lange experimentiert, bis ich nun eine mögliche Lösung gefunden habe. Nach meiner Erinnerung hat das alles schon funktioniert, ich vermute aber, AVM hat die App in den letzten Monaten kaputt-verbessert. Nach [1] sind allein 2022 bis jetzt (September) 5 Updates veröffentlicht worden! Das spricht nicht unbedingt für zielstrebige und schere Entwicklung – da kann man schon mal einiges kaputt machen, was schon ging…

Vorläufige Lösung

Bei Android 11 oder besser gesagt MIUI muss sich auch der Laie um die Vergabe der Rechte und Benachrichtigungen selbst kümmern. Damit ist er eigentlich überfordert!

Für unser Problem sind wirklich alle verfügbaren Berechtigungen zuzulassen(einzige Ausnahme: „WLAN ändern“). Insbesondere auch die für „Telefon“: Ich vermute, die App nutzt die Telefonsoftware des Systems als Frontend, und wenn sie das nicht darf, dann kommt eben beim Anruf keine Oberfläche. Unter „sonstige Berechtigungen“ sind alle roten Kreuze durch antippen in grüne Haken zu verwandeln.

„Autostart“ braucht man nicht anzuschalten – der funktioniert nicht; man muss die App unbedingt einmal nach jedem Neustart des Gerätes von Hand starten, sonst verliert sie nach einer Weile die Verbindung zur Fritz!Box.

Zum Schluss nicht vergessen, den Schalter auf AUS zu stellen, der die Berechtigungen nach einer Weile der Nicht-Nutzung wieder wegnimmt.

Außerdem muss die App unbedingt vom Stromsparen ausgenommen werden, was nicht der „Empfehlung“ entspricht – sonst lebt sie eben nach einer Weile nicht mehr (vollständig) und reagiert zu spät oder gar nicht.

Den Benachrichtigungston – falls man einen haben will, der zusammen mit Festnetztelefonen noch mehr Lärm macht – muss man bei „Einstellungen / Apps / Apps verwalten / Fritz!App Fon / Benachrichtigungen / ankommender Anruf“ festlegen, nicht in der App selbst. Das ist eine Vorgabe von Google.


Es ist traurig, dass AVM das nicht besser gelöst hat. Gut, es entspricht den Vorgaben von Google, alles so „sicher“ wie möglich zu machen, aber es lässt die App eben leider nicht richtig funktionieren. Hinweise in der Bedienungsanleitung und eine eine entsprechende Verlinkung dorthin innerhalb der App sollten doch möglich sein!

Ich bitte zu berücksichtigen, dass ich meine Lösung nur so beschreiben kann, wie ich sie mit meiner Ausrüstung sehen kann. Ich bin mir bewusst, dass es Abweichungen je nach Fritz!Box, Smartphon und Betriebssystemen gibt, die ich freilich nicht kenne. Ich bitte daher ausdrücklich um Kommentare!

[1] fritz-app-fon.de.uptodown.com/android/versions

RustDesk: Die alternative Fernwartung

Lange habe ich zunächst TeamViewer, dann AnyDesk zur Fernwartung von entfernten Rechnern benutzt.

Teamviewer ist kommerziell und kostet richtig Geld, die private – das heißt auch sehr gelegentliche Nutzung – funktioniert immer nur kurz: Nach ein paar Minuten wird die Verbindung gekappt. Damit hat Fernwartung natürlich keinen Sinn und der hohe Preis ist bei seltener Benutzung nicht gerechtfertigt.

Dann habe ich AnyDesk ausprobiert. Bei mir lief Linux (Xubuntu) 20.04, da ging das problemlos. Das ist ein sehr schönes leistungsfähiges Programm mit nur unwesentlichen Einschränkungen bei kostenloser Nutzung. Aber dann habe ich einen neuen Rechner mit Xubuntu 22.04 aufgesetzt (also kein Upgrade), wodurch anscheinend irgendwelche Abhängigkeiten nicht erfüllt waren und ich habe AnyDesk nicht mehr zum Laufen gebracht (wie hier berichtet auf dieser Website).

RustDesk

Beim Versuch, eine Lösung zu finden, bin ich dann auf RustDesk gebracht worden (Danke voxxell99 und von.wert im Forum forum.ubuntuusers.de) . Das habe ich nun probiert und ich werde wohl dabei bleiben. Die Installation ist nach dem Download in 2 Minuten erledigt, es gibt nichts zu konfigurieren außer vielleicht ein dauerhaftes Passwort. Das kann man einem neuen Gegenüber auch „mal eben“ am Telefon erzählen.

Wichtig ist ein Hinweis, wenn das Programm zur Wartung eine PC ohne Monitor (Server) benutzt werden soll. Dafür ist es erforderlich, dass man sich einen HDMI-Emulator besorgt – eine Anschaffung unter 5 € in Form eines HDMI-Steckers „mit etwas dran“. Ansonst gibt es die Meldung „Kein Display“ und es kommt keine Verbindung zustande.

RustDesk ist Open Source Software und für jedes denkbare System verfügbar.

Freie öffentliche DNS-Server

Es hat Sinn, die vom jeweiligen Internet-Zugangs-Provider vorgegebenen DNS-Server nicht zu nutzen und durch andere zu ersetzen. Jeder Zugangsprovider hat ein „betriebsbedingtes Interesse“ daran, die Zugriffe der Nutzer zu protokollieren und auszuwerten. Zum Einen möchte man das vielleicht nicht unterstützen, zum Anderen dauert das eine gewisse Zeit, die sich in der höheren Antwortzeit niederschlägt – der Zugriff auf Websites mit vielen Komponenten wird merklich langsamer.

Wobei „merklich“ natürlich im Bereich unter einer Sekunde liegt, aber Unterschiede von vielleicht 20 ms pro Zugriff summieren sich schnell.

Hier ist ein Link zu einer von vielen Seiten, die ständig aktualisiert wird und solche freien öffentlichen Adressen auflistet:

Free and Public DNS Servers

Bleibt noch die Frage, welcher der schnellste DNS-Server ist. Diese Frage kann nicht einfach so beantwortet werden, da die Messergebnisse von der Auslastung, der Tageszeit, dem Ort uvm. abhängen. Da muss man probieren oder auch mal das Programm namebench (Linux, hier erwähnt) laufen lassen. Eine Übersicht geben diese Seiten hier:

DNS-Server schnell und sicher: Cloudflare 1.1.1.1 und andere
DNS-Server aus Deutschland

Alternative DNS-Server für mehr Tempo beim Surfen

Zu erwähnen wäre noch, dass es meist kein Hindernis ist, dass in den Routern der Netzwerkanbieter deren eigener DNS-Server unveränderbar einprogrammiert ist. Entscheidend ist, dass das Betriebssystem meines Computers oder Smartphones in den eigenen Einstellungen die Daten des von mir gewünschten Servers stehen!

Provider einer Website finden

Der letzte Kontakt zu einem Kunden liegt schon Jahre zurück und „plötzlich“ soll dessen Website auf Vordermann gebracht werden. Und natürlich sind auch die Zugangsdaten nicht mehr da. Bei welchem Provider liegt die Website überhaupt? Bekommt man vom Kunden persönliche Daten zur Authentifizierung, ließe sich damit dann der Zugang wieder herstellen.

Ein Blick auf denic.de gab früher einige Auskünfte darüber, wie die Website gehostet ist und wer der eingetragene Ansprechpartner ist. Heute gibt es das wohl aus Gründen des Datenschutzes nicht mehr – denic.de liefert ohne besondere Berechtigung keinerlei Auskünfte mehr, der Dienst ist zumindest über die Website wertlos geworden. Ein einfaches „whois <domain>“ in einer Linux-Shell liefert heute nur noch sehr spärliche Informationen:

whois it-consulting-stahl.de
...
Domain: it-consulting-stahl.de
Nserver: ns1.rb-media-group.de
Nserver: ns2.rb-media-group.de
Nserver: ns3.rb-media-group.de
Nserver: ns4.rb-media-group.de
Status: connect
Changed: 2017-07-01T17:38:31+02:00

Gut, hier kann ich ahnen, dass meine Website bei RB Media Group gehostet wird, aber genauer bekomme ich es nicht und das muss ja auch keine aufrufbare Domain sein. Aber man kann das recht einfach mit den beiden Shell-Befehlen „nslookup <domain>“und „whois <ip>“ (IP statt Domain!) verbessern, die zumindest auf jeder Linux-Maschine verfügbar sind:

nslookup it-consulting-stahl.de
Server:		208.67.222.222
Address:	208.67.222.222#53

Non-authoritative answer:
Name:	it-consulting-stahl.de
Address: 91.211.113.221

[rollo: ~] whois 91.211.113.221
...
inetnum:        91.211.112.0 - 91.211.115.255
netname:        RBMediaGroupPI
country:        DE
org:            ORG-RBMG1-RIPE
admin-c:        MK9901-RIPE
tech-c:         MK9901-RIPE
status:         ASSIGNED PI
mnt-by:         RIPE-NCC-END-MNT
mnt-by:         TAL-MNT
mnt-routes:     TAL-MNT
mnt-domains:    TAL-MNT
created:        2008-12-10T15:31:07Z
last-modified:  2016-04-14T11:13:02Z
source:         RIPE
sponsoring-org: ORG-TKIS1-RIPE

organisation:   ORG-RBMG1-RIPE
org-name:       Martin Krueger
remarks:        RB Media Group GmbH
org-type:       OTHER
address:        Beeskower Str. 259e
address:        15890 Eisenhuettenstadt
address:        Germany
phone:          +49 3364 770177
fax-no:         +49 3364 770176
abuse-c:        RMAC1-RIPE
mnt-ref:        TAL-MNT
mnt-by:         TAL-MNT
created:        2008-11-25T16:29:29Z
last-modified:  2014-09-25T07:27:26Z
source:         RIPE # Filtered

person:         Martin Krueger
address:        RB Media Group GmbH
address:        Beeskower Strasse 259e
address:        D-15890 Eisenhuettenstadt
phone:          +49.3364.770177
fax-no:         +49.3364.770176
nic-hdl:        MK9901-RIPE
mnt-by:         TAL-MNT
created:        2010-10-18T14:17:27Z
last-modified:  2014-09-25T07:26:29Z
source:         RIPE # Filtered

% Information related to '91.211.113.0/24AS8820'

route:          91.211.113.0/24
descr:          RB Media Group
origin:         AS8820
mnt-by:         TAL-MNT
created:        2014-04-30T13:41:03Z
last-modified:  2014-04-30T13:41:03Z
source:         RIPE

% This query was served by the RIPE Database Query Service version 1.93.2 (HEREFORD)

Das sieht doch schon viel besser aus! Zumindest weiß man schon, an wen man sich wenden kann, sogar mit Telefonnummern. Ob das immer so aussagekräftig und nützlich ist, insbesondere vielleicht bei den vielen Web-Baukasten systemen, deren Benutzer alle die gleiche Hauptdomain haben (zum Beispiel jimdo.com), weiß ich freilich nicht.

Ein wichtiger Hinweis noch: Natürlich bekommt man nicht einfach die Zugangsdaten am Telefon gesagt. Üblicherweise braucht man dazu einige persönliche Informationen des Kunden, wie Adresse, Telefonnummern oder die IBAN der Bankverbindung.