Dokumentation

Funktionen

Jede über die WordPress-Schnittstelle hergestellte Verbindung nach „Außen“ sammelt Snitch in Form einer Tabelle, die WordPress-Administratoren zugänglich ist. Die Eigenschaften protokollierter Verbindungen teilt das Plugin in sortierbare Spalten auf.

Spalten mit Verbindungsdaten

  • Ziel-URL
    Internet-Adresse, die aus WordPress heraus aufgerufen wurde.
  • Herkunftsdatei
    Skript-Datei, die den eigentlichen Verbindungsaufbau initiiert hat. Nach dem Doppelpunkt platziert Snitch die betroffene Zeilennummer, um mit der Recherche der Fundstelle starten zu können. Bonus: Snitch versucht, die betroffene Skript-Datei einem Theme oder Plugin zuzuordnen.
  • Zustand
    Aktueller Zustand der Verbindung: autorisiert oder blockiert. In der Auswahlbox oberhalb der Liste lassen sich Snitch-Einträge nach Zustand gruppieren.
  • Status
    Status-Code, der bei aufgebauter Verbindung als Antwort empfangen wurde. So bedeutet der Status-Code 200 einen erfolgreichen Verbindungsaufbau. Fehlerhafte Verbindungsversuche signalisiert Snitch mithilfe des Status-Codes -1.
  • Dauer
    Ausführungsdauer der Verbindung in Sekunden. Praktischer Wert für die Lokalisierung von Performance-Flaschenhälsen.
  • Zeit
    Zeitpunkt der Protokollierung.
  • Daten
    Wurde eine ausgehende Verbindung mit POST-Variablen versehen, speichert Snitch diese Werte zwischen und stellt sie per Klick auf die Schaltfläche dar.

Blockieren der Verbindungen

Die Spalten Ziel-URL und Herkunftsdatei verfügen jeweils über einen Mouseover-Link zum Blockieren der zukünftigen Verbindungen nach Muster:

  • Zugriffe auf diese Domain blockieren
    Blockiert alle Verbindungen zu ausgewählter Domain
  • Zugriffe aus dieser Datei blockieren
    Blockiert alle Verbindungen aus der Datei

Nach dem Klick auf einen der Links befördert Snitch die Domain bzw. Datei in die interne Blacklist und wendet die aktualisierte Regel bei der nächsten Kommunikation an. Übrigens markiert Snitch alle Verbindungen innerhalb der Liste in Orange, wenn sie den Regeln der Blacklist entsprechen. Blockierte Verbindungen bekommen einen leicht roten Hintergrund zugewiesen.

Freigabe der Verbindungen

Bereits abgewiesene oder erst zum Blockieren markierte Verbindungen in Orange-gefärbten Spalten lassen ihre Aktion invertieren, sprich die Regel aus der Blacklist wieder entfernen. Die Ausführung dieser Aktion findet ebenfalls über einblendbare Links statt. Nach dem Klick wechselt sich die Spaltenmarkierung auf Grün und bedeutet: Verbindungsmuster vom Regelwerk nicht länger erfasst.

Löschen der Verbindungen

Snitch-Einträge können via Plugin-Schaltfläche Protokoll leeren gefahrlos gelöscht werden. Dieser Vorgang hat keinerlei Beeinträchtigungen auf die Funktionsweise des Plugins: Angelegte Snitch-Regel zu blockierten Inhalten (Domains bzw. Dateien) bleiben weiterhin bestehen und sind aktiv.

Das Firewall-Plugin verfügt über eine automatische Bereinigung des Datenbestandes, sodass maximal 200 Einträge aufbewahrt werden. Auf diese Weise soll die Datenbank geschont werden. Mithilfe des Plugin-Filters snitch_cleanup_items kann die Länge des Protokolls benutzerdefiniert justiert werden.

Installation

Snitch kann jederzeit im offiziellen WordPress-Pluginverzeichnis heruntergeladen werden: Download

Alternativ erfolgt die Installation direkt in WordPress im Administrationsbereich „Plugins“ → „Plugins hinzufügen“: Nach Snitch suchen, auswählen, installieren.

Nach der erfolgreichen Aktivierung des Plugins ist die Verbindungsübersicht über das seitliche Menü des Administrationsbereiches zugänglich. Ab diesem Zeitpunkt protokolliert Snitchausgehende Verbindungen innerhalb von WordPress und listet Anfragen in der Verbindungsübersicht auf.

Snitch verfügt über keine Einstellungsoptionen.

Hooks

Hooks erlauben es dem Nutzer, den Funktionsumfang eines WordPress-Plugins zu erweitern. Nachfolgende Hooks sind in Snitch hinterlegt und lassen sich via Code ansprechen bzw. steuern:

snitch_cleanup_items

Steuerung der Anzahl an Einträgen, die im Snitch-Protokoll aufbewahrt werden sollen. Der tägliche Aufräumprozess berücksichtigt diese Zahl beim Löschen von Altdaten.

Typ: Integer

snitch_inspect_request_hosts

Zu blockierende Hosts aus der Nutzer-Blacklist. Werte werden bei der Überprüfung der ausgehenden Verbindungen eingelesen und abgeglichen.

Typ: Array

snitch_inspect_request_files

Zu blockierende Dateien aus der Nutzer-Blacklist. Werte werden bei der Überprüfung der ausgehenden Verbindungen eingelesen und abgeglichen.

Typ: Array

snitch_inspect_request_insert_post

Aktuell blockierte Verbindung mit ihren Eigenschaften (URL, Status-Code, Host, Datei, Zeile, Quelle, Status=BLOCKED, POST-Daten), die als Snitch-Eintrag gespeichert wird.

Typ: Array

snitch_log_response_insert_post

Aktuell genehmigte Verbindung mit ihren Eigenschaften (URL, Status-Code, Ausführungsdauer, Host, Datei, Zeile, Quelle, Status=AUTHORIZED, POST-Daten), die als Snitch-Eintrag gespeichert wird.

Typ: Array

Hinweise

  • Snitch überwacht nur den Datenverkehr, der über WordPress HTTP API abgewickelt wird. Anderweitige Verbindungsversuche werden ignoriert.
  • Blockierung einzelner Domains und/oder Dateien in Snitch kann die Funktionsweise der betroffenen WordPress-Anwendungen beeinträchtigen.
  • Ausschließlich Blog-Administratoren verfügen über die Berechtigung, die Snitch-Verbindungsübersicht aufzurufen.
  • Mithilfe von WordPress-Konstanten WP_HTTP_BLOCK_EXTERNAL und WP_ACCESSIBLE_HOSTS kann der Datenverkehr aus WordPress heraus vollständig deaktiviert oder punktuell freigegeben werden.

FAQ

Hat das Online-Handbuch nicht alle Fragen beantwortet? Vielleicht helfen die nachfolgenden Antworten auf die häufig gestellten Fragen.


Snitch erzeugt sehr viele Datenbank-Einträge

Snitch wurde konzipiert, um jede ausgehende Verbindung in WordPress zu protokollieren. Läuft die Datenbank schnell voll, sollte man sich als Blog-Betreiber fragen: Warum eigentlich? Warum kommuniziert mein WordPress samt Plugins so oft nach Außen, dass die Datenbanktabelle voll läuft? Geht denn wirklich alles mit rechten Dingen zu und muss diese Kommunikation wirklich sein?

Zur Erinnerung: Snitch soll helfen, die WordPress-Performance zu erhöhen, indem Verbindungen als Flaschenhälse erkannt und aufgezeigt werden. Die Aufgabe des Blog-Administrators ist es, die Quelle der Ursache (Plugin, Theme, etc.) zu eliminieren.

Snitch sorgt automatisch dafür, dass in der Datenbank nicht mehr als 200 Einträge aufbewahrt werden. Sollte es dennoch notwendig sein, Snitch-Einträge aus der Datenbank händisch zu entfernen, helfen zwei smarte Datenbank-Befehle:

DELETE FROM `wp_postmeta` WHERE `post_id` IN ( SELECT `ID` FROM `wp_posts` WHERE `post_type` = 'snitch' )
DELETE FROM `wp_posts` WHERE `post_type` = 'snitch'

Werden Verbindungen im Front-End überwacht?

Snitch schreibt jede Verbindung mit, die den Blog über WordPress HTTP API (interne WordPress-Schnittstelle für Datenkommunikation) verlässt. Das betrifft sowohl Back-End wie Front-End einer WordPress-Installation.


Warum listet Snitch WordPress-Cronjobs auf?

Interne Cronjob-Aufträge ruft WordPress via WordPress HTTP API auf – genau diese Schnittstelle überwacht Snitch und zeichnet entsprechend auch Cronjob-Zugriffe auf.

Werden Cronjobs zu oft gelistet, stimmt möglicherweise etwas nicht. Es empfiehlt sich daher, die Liste mit geplanten Cronjob-Aufträgen zu kontrollieren.

Der nachfolgende Code-Snippet in der WordPress-Konfigurationsdatei wp-config.php schaltet die Protokollierung der internen WordPress-Anfragen aus:

define('SNITCH_IGNORE_INTERNAL_REQUESTS', true);

Warum werden Snitch-Einträge durch Google indexiert?

Snitch legt seine Einträge standarisiert als WordPress Custom Post Types an. Wichtiger Schritt dabei: Durch ein WordPress-Attribut markiert Snitch alle Protokolleinträge als privat, also nicht öffentlich. Soweit würde die Ideologie mit privaten, nicht zugänglichen Einträgen auch klappen, wenn da nicht WordPress-Plugins wären, die alle – also auch private – Custom Post Types in die Welt tragen und Suchmaschinen kommunizieren würden. Mit für den Blogger fatalen Folgen.

Und so passiert es schnell, dass Google plötzlich auf Snitch-Einträge (als Blogseiten) stößt, die für den öffentlichen Zugang gar nicht vorgesehen sind. Zum Beispiel weil Snitch-Einträge in der Sitemap-XML des Blogs auftauchen, da ein Sitemap-XML Plugin der Meinung ist, auch private Einträge dahin stecken und für die Indexierung freigeben zu müssen. Da hilft auch keine Sperrung in robots.txt, da die Datei robots.txt die Indexierung der Seiten nicht verhindert.


Automatische Shares spielen verrückt

Dass bei jedem neuen Snitch-Eintrag automatisch eine Nachricht an Facebook und/oder Twitter rausgeht, liegt eindeutig nicht an Snitch. Vielmehr ist die Ursache im eingesetzten Auto-Tweet-Facebook-Plugin zu suchen, welches fehlerhaft bei jedem – auch nicht öffentlichen – WordPress Custom Post Type einen automatischen Event auslöst. Und das ist falsch. Der Einsatz solcher Plugins sollte überdacht werden.

Versionsverlauf

Das vollständige Änderungsprotokoll wird hier bereitgestellt.

Spenden

Dass die professionelle und passionierte (Weiter)Entwicklung eines Plugins mit (Zeit)Aufwand verbunden ist, versteht sich von selbst und dürfte jedem Nutzer klar sein.

Lust die Weiterentwicklung von Snitch voranzutreiben?

Danke!