Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:massnahmen_gegen_spam

Dies ist eine alte Version des Dokuments!


Maßnahmen gegen Spam

Dieses Howto baut auf ejabberd Installation, Öffentliche Registrierung aktivieren und ejabberd absichern auf.

Es gibt verschiedene Möglichkeiten gegen Spam vorzugehen, die alle mal mehr, mal weniger sinnvoll oder effektiv sind.

Eigene Kontaktmöglichkeiten angeben

Bevor du von anderen verlangst, dass Sie gegen Spam vorgehen, solltest du zunächst selbst dafür sorgen, dass du erreichbar bist. Dazu gehört z.B. Kontaktangaben auf deiner Website und die Umsetzung von XEP-0157: die Angabe einer Kontaktadresse innerhalb des XMPP Servers.

Öffne die Konfiguration:

$ jed opt/ejabberd/conf/ejabberd.yml

Suche nach

mod_disco: {}

und ändere es ab:

  mod_disco:
    server_info:
    -
      modules: all
      name: "abuse-addresses"
      urls: ["mailto:<deine-email-adresse>"]

Die Änderungen mit [STRG] + [s] speichern und den Editor mit mit [STRG] + [x] und [STRG] + [c] verlassen.

Mache ejabberd die geänderte Konfiguration bekannt:

$ ./opt/ejabberd-22.10/bin/ejabberdctl reload_config

Registrierung einschränken

Wenn du die Inband Registrierung anbietest, solltest du diese unbedingt mit einem Captcha absichern. Dies wurde mit einem früheren Howto bereits umgesetzt.

Sofern du eine Registrierung über deine Webseite anbietest und dabei die API von ejabberd nutzt, kannst du eine Prüfung einbauen, wie viele Konten eine IP Adresse innerhalb eines bestimmten Zeitraums bereits angelegt hat. Weitere Versuche ein Konto anzulegen sollten ab einer bestimmten Anzahl gesperrt werden.

Automatische Filter

mod_spam_filter

Mit mod_spam_filter kannst du eingehende Nachrichten automatisiert nach Absendern oder in den Nachrichten enthaltenen URL durchsuchen lassen. Da sich die Absender neue Konten anlegen können und auch die beworbenen Links veränderbar sind, ist das Modul bedingt hilfreich. Ende-zu-Ende verschlüsselte Nachrichten fallen ohnehin raus.

mod_spam_filter installieren:

$ ./opt/ejabberd-22.10/bin/ejabberdctl module_install mod_spam_filter

mod_spam_filter konfigurieren:

$ mkdir spam
$ jed .ejabberd-modules/mod_spam_filter/conf/mod_spam_filter.yml

Ändere die Datei wie folgt ab:

modules:
  mod_spam_filter:
    spam_jids_file: "/home/ejabberd/spam/jids.txt"
    spam_urls_file: "/home/ejabberd/spam/urls.txt"

Die Änderungen mit [STRG] + [s] speichern und den Editor mit mit [STRG] + [x] und [STRG] + [c] verlassen.

Mache ejabberd die geänderte Konfiguration bekannt:

$ ./opt/ejabberd-22.10/bin/ejabberdctl reload_config

In der Datei spam/jids.txt werden einzelne Konten gesammelt:

me@example.de
her@server2.com

In der Datei spam/urls.txt werden einzelne URL gesammelt:

https://bit.ly/spam
https://werbung.de/anzeige

Um Veränderungen in den beiden Dateien in den Server zu übernehmen, muss nicht jedes mal die komplette Konfiguration neu eingelesen werden. Dazu genügt:

$ ./opt/ejabberd-22.10/bin/ejabberdctl reload-spam-filter-files <beispiel.de>

mod_block_strangers

Mit diesem Modul kannst du ganze Server auf eine Blocklist setzen. Nachrichten von diesen Servern werden dann erst mal abgelehnt, wenn der Absender nicht in der Kontaktliste des Empfängers ist. Alternativ kann statt dessen ein Captcha präsentiert werden. Erst nach dessen Lösung kann weiter kommuniziert werden.

Öffne die Konfiguration

$ jed opt/ejabberd/conf/ejabberd.yml

Suche nach:

mod_avatar: {}

und füge danach ein neues Modul ein:

  mod_block_strangers:
    access: strangers
    captcha: true

suche nach:

access_rules:

und füge einen neuen Block ein:

  strangers:
    deny: soft_blocked
    allow: all

suche nach:

acl:

und füge einen neuen Block ein:

  soft_blocked:
    server:
      - "<spamserver1.de>"
      - "<werbung2.com>"

Die Änderungen mit [STRG] + [s] speichern und den Editor mit mit [STRG] + [x] und [STRG] + [c] verlassen.

Mache ejabberd die geänderte Konfiguration bekannt:

$ ./opt/ejabberd-22.10/bin/ejabberdctl reload_config

mod_pres_counter

Als Ergänzung zu mod_block_strangers bietet sich mod_pres_counter an. Wenn Nachrichten nur noch zuverlässig durchgestellt werden, ist es aus Sicht der Spammer sinnvoll zunächst in die jeweiligen Konktaktlisten aufgenommen zu werden. Auch das kann eingeschränkt werden. In der Standardkonfiguration erlaubt das Modul den Austausch von 5 „Einheiten“, sog Stanzas innerhalb von 60 Sekunden. Um einen Kontakt aufzunehmen werden 4 Stanzas benötigt. Hier liegt es an dir einen sinnvollen Zeitraum zu finden.

Öffne die Konfiguration

$ jed opt/ejabberd/conf/ejabberd.yml

Suche nach:

mod_pres_counter: {}

und ändere es ab:

  mod_pres_counter:
    count: 5
    interval: 60

Die Änderungen mit [STRG] + [s] speichern und den Editor mit mit [STRG] + [x] und [STRG] + [c] verlassen.

Mache ejabberd die geänderte Konfiguration bekannt:

$ ./opt/ejabberd-22.10/bin/ejabberdctl reload_config

mod_blocking

Als letzte und gleichzeitig schärfste Maßnahme, kannst du einzelne Server vollständig blocken. Da XMPP ein Netzwerk von föderierten Servern ist und das Blockieren ganzer Server gegen dieses Prinzip verstößt, sollte das als letztes in Betracht gezogen werden. Teste bitte vorher die o.g. Lösungen und versuche auch mehrfach den verantwortlichen Admin des Servers kontaktieren.

Öffne die Konfiguration

$ jed opt/ejabberd/conf/ejabberd.yml

Suche nach:

acl:

und füge einen neuen Block ein:

  hard_blocked:
    server:
      - "<werbeserver1.de>"
      - "<adserver2.com>"

suche nach:

access_rules:

und füge einen neuen Block ein:

  s2s:
    deny: hard_blocked
    allow: all

Die Änderungen mit [STRG] + [s] speichern und den Editor mit mit [STRG] + [x] und [STRG] + [c] verlassen.

Mache ejabberd die geänderte Konfiguration bekannt:

$ ./opt/ejabberd-22.10/bin/ejabberdctl reload_config
de/massnahmen_gegen_spam.1669291938.txt.gz · Zuletzt geändert: 24.11.2022, 13:12 von Christoph Stoltz