===== Maßnahmen gegen Spam ===== ==== Voraussetzung ==== * Dieses Howto setzt [[de:ejabberd_installation|ejabberd Installation]], [[de:oeffentliche_registrierung_aktivieren|Öffentliche Registrierung aktivieren]] und [[de:ejabberd_absichern|ejabberd absichern]] voraus. ==== Einleitung ==== XMPP ist spamverseucht. Das ist eine harte Wahrheit. Es gibt verschiedene Möglichkeiten gegen Spam vorzugehen, die alle mal mehr, mal weniger sinnvoll oder effektiv sind. ==== Einrichtung ==== === 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. Als ejabberd arbeiten: $ su - ejabberd Ö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:"] Die Änderungen mit [STRG] + [x] und [STRG] + [s] speichern und den Editor mit [STRG] + [x] und [STRG] + [c] verlassen. Mache ejabberd die geänderte Konfiguration bekannt: $ ./opt/ejd/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 [[de:oeffentliche_registrierung_aktivieren|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. Auch diese Registrierung solltest du mit einem eigenen Captcha absichern === 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. Als ejabberd arbeiten: $ su - ejabberd mod_spam_filter installieren: $ ./opt/ejd/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] + [x] und [STRG] + [s] speichern und den Editor mit [STRG] + [x] und [STRG] + [c] verlassen. Mache ejabberd die geänderte Konfiguration bekannt: $ ./opt/ejd/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/ejd/bin/ejabberdctl reload-spam-filter-files == 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. Als ejabberd arbeiten: $ su - ejabberd Ö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: - "" - "" Die Änderungen mit [STRG] + [x] und [STRG] + [s] speichern und den Editor mit [STRG] + [x] und [STRG] + [c] verlassen. Mache ejabberd die geänderte Konfiguration bekannt: $ ./opt/ejd/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 in die eigene Kontaktliste aufzunehmen werden 4 Stanzas benötigt. Hier liegt es an dir durch Testen sinnvolle Werte zu finden. Als ejabberd arbeiten: $ su - ejabberd Ö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] + [x] und [STRG] + [s] speichern und den Editor mit [STRG] + [x] und [STRG] + [c] verlassen. Mache ejabberd die geänderte Konfiguration bekannt: $ ./opt/ejd/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 Mittel in Betracht gezogen werden. Teste bitte vorher die o.g. Lösungen und versuche auch mehrfach den verantwortlichen Admin des Servers kontaktieren. Als ejabberd arbeiten: $ su - ejabberd Öffne die Konfiguration $ jed opt/ejabberd/conf/ejabberd.yml Suche nach: acl: und füge einen neuen Block ein: hard_blocked: server: - "" - "" suche nach: access_rules: und füge einen neuen Block ein: s2s: deny: hard_blocked allow: all suche nach: s2s_use_starttls: required und füge darüber ein: s2s_access: s2s Die Änderungen mit [STRG] + [x] und [STRG] + [s] speichern und den Editor mit [STRG] + [x] und [STRG] + [c] verlassen. Mache ejabberd die geänderte Konfiguration bekannt: $ ./opt/ejd/bin/ejabberdctl reload_config