Selbstgeschriebener Anti-Spam-Dienst Gotoh oder wie wir für das Weiß der IP-Adressen gekämpft haben

Antispam-System in Selectel vor selbst geschriebener Lösung



Hallo, Habr! Ich bin Sasha Fedoseev, Junior Python-Entwickler bei Selectel. Vor einigen Jahren, als unser Unternehmen besonders schnell zu wachsen begann, standen wir vor einem Problem. Alle möglichen skrupellosen Spammer aus heißen Ländern begannen sich für unsere Ressourcen zu interessieren . Wir haben ziemlich budgetäre Konfigurationen von virtuellen Maschinen, und was brauchen sie noch, um glücklich zu sein.



Warum haben wir uns entschieden, gegen sie zu kämpfen? Nun, E-Mails werden von Konten gesendet, was daran falsch ist ... Aus Sicht eines Cloud-Anbieters gibt es jedoch Gründe, warum es sich immer noch lohnt, die "Vermehrung" von Spammern zu stoppen.



Warum gegen Spammer kämpfen?



Sie verderben weiße IPs



Um eine E-Mail nach draußen zu senden, muss die virtuelle Maschine eine IP-Adresse haben. Weiße "IPs" sind eine eher begrenzte Ressource, daher ist es für uns wichtig zu verstehen, dass sie von anständigen Benutzern und nicht von Spammern besetzt sind. Letztere führen bei großen E-Mail-Diensten zu einem IP-Verbot: Die "IP-Adresse" wird auf die schwarze Liste gesetzt, und wir können dies nicht einmal immer verstehen. Nur wenn wir eine solche IP an einen anderen Client übertragen, der E-Mails senden muss, und dies am Ende nicht kann. Das Entfernen einer IP aus einem Verbot ist ein ziemlich schwieriger Prozess, daher ist es besser, einfach nicht dorthin zu gelangen.



Lauter Nachbarschaftseffekt



Es ist nicht ungewöhnlich, dass Spammer viele Spam-Maschinen bereitstellen. Und Benutzer, die das Pech haben, sich auf demselben Virtualisierungshost zu befinden, können verletzt werden. Es ist unangenehm.



Nimmt IP-Adresse und CPU-Zeit auf



Warum braucht Selectel solche Kunden, wenn es an ihrer Stelle gute Benutzer geben kann, die an der Qualität unserer Dienstleistungen interessiert sind und ihre Kraft für die Entwicklung ihres Geschäfts einsetzen?



Reputationsprobleme



Kein Anbieter wird es mögen, wenn er über ihn sagt, dass er sich von Spammern scheiden lässt und damit handelt.



Wie es vorher war



Antispam war von Anfang an manuell: Das Problem wurde vom technischen Support gelöst, der jeden Vorfall analysierte. Der technische Support trug all diese Last auf sich. Darüber hinaus überprüften die Administratoren regelmäßig die Registrierungen, um sicherzustellen, dass 10 Konten nicht von einem Spammer registriert wurden. Dies ist nur ein Zufall: 10 verschiedene Benutzer haben sich gleichzeitig registriert.



Es ist klar, dass ein solches System ziemlich unwirksam ist. Erstens gibt es eine unannehmbar lange Verzögerung zwischen der Identifizierung eines Spammers und seinem Verbot. Zweitens können Mitarbeiter des technischen Supports ihre Arbeitszeit effizienter verbringen. Also suchten wir nach anderen Optionen.



Mögliche Lösungen für das Problem



Registrierung durch Dokumente



Dies würde Spammer abschrecken, aber das Onboarding für seriöse Kunden erheblich erschweren. Außerdem müssten die Support-Mitarbeiter jede Registrierung durchlaufen. Es scheint nicht der angenehmste Job zu sein. Das Vorhandensein einer JPG-Datei ist keine Garantie für die Existenz eines echten Dokuments.



Fazit: Wir haben uns entschieden, kein "Papier, bitte" zu arrangieren und diese Option abgelehnt.



Schließen Sie die Möglichkeit, E-Mails für Clients zu senden



Es war möglich, alle Kunden zu warnen, dass wir das Versenden von E-Mails aus dem Wort überhaupt nicht unterstützen. Aber vielleicht wäre es seltsam. Benutzer, die keinen Spam senden, verlieren ihre Standard- und vertrauten Funktionen. Sie wären nicht einmal in der Lage, eine funktionierende Postkorrespondenz zu führen, und wären deswegen auf jeden Fall traurig.



Fazit: Wir wollten unseren Kunden nicht die offensichtlich notwendigen Fähigkeiten entziehen und sie dazu zwingen, „nebenbei“ nach Lösungen zu suchen.



Erstellen Sie ein Gateway zum Senden von E-Mails



Im Allgemeinen ist das Mail-Gateway der Server, über den alle E-Mails gesendet werden. Er kann E-Mails analysieren und entscheiden, ob es sich bei diesem oder jenem Brief um Spam handelt. Bei einem Infrastrukturanbieter wie Selectel wäre es richtig, dies als Service zu definieren. Eine solche Lösung erfordert jedoch ein separates Entwicklungsteam, ständige Unterstützung und Entwicklung.



Fazit: Die Schaffung eines solchen Dienstes war zum Zeitpunkt der Entscheidung nicht in den Plänen des Unternehmens enthalten.



Verwenden Sie einen Drittanbieter-Service



Wir haben diese Option ebenfalls in Betracht gezogen, aber mehr als ein Argument dagegen gefunden. Erstens ist die Integration in einen Drittanbieter-Service eine nicht triviale technische Aufgabe. Zweitens würden wir uns in eine Situation versetzen, in der wir auf irgendeine Art von externer Dienstleistung angewiesen sind. Schließlich würde dies den Preis für unsere Dienstleistungen erhöhen, da wir die Kosten für die externe Dienstleistung berücksichtigen müssten. Und das möchte ich natürlich nicht.



Fazit: Die Nutzung eines externen Dienstes könnte sich auf die Kosten unserer Dienste auswirken, wir könnten uns jedoch nicht dafür entscheiden.



Im Allgemeinen haben wir alle oben genannten Optionen verworfen und beschlossen, ein eigenes Antispam-System zu entwickeln.



50 Schattierungen eines Spammers



Wenn wir Spammer unter Benutzern unabhängig identifizieren möchten, müssen wir anhand der Kriterien bestimmen, nach denen dies geschehen soll.



Es lohnt sich, auf die Verhaltensmerkmale des Benutzers zu achten und den Datenverkehr zu analysieren:



Datum der Kontoregistrierung. Wenn es vor 5 Minuten registriert wurde und bereits in das Sichtfeld von Antispam gelangt ist, ist es sehr wahrscheinlich, dass das Konto ausschließlich für Spam-Zwecke erstellt wurde.



Mailname. Wir alle rufen Postanschriften an, damit der Name eine Bedeutung hat (der Name des Unternehmens oder der Nachname des Absenders). Wenn der Name undeutlich ist und verdächtig aussieht, ist dies ein starkes Argument für das Verbot.



Zahlungsmittel.Wenn es sich um eine Einwegkarte oder PayPal handelt, ist ein solches Konto ebenfalls verdächtig.



Geolokalisierung der IP-Adresse bei der Registrierung. Die überwiegende Mehrheit der Selectel-Kunden kommt aus Russland und den GUS-Staaten. Wenn sich ein anderer Benutzer im sonnigen Brasilien oder Marokko registriert hat (diese Länder sind traditionell die meisten Spammer), gibt dies Anlass zur Sorge. Sie können auch die Landesvorwahl und die Telefonnummer anhand der Informationen überprüfen, die Sie aus der geografischen Position der IP-Adresse erhalten haben.



Benutzername. Wenn der Benutzername so aussieht, als hätte er zufällig seine Finger über die Tastatur gestrichen, ist das verdächtig, stimme zu.



Ich werde hinzufügen, dass wir die Analyse des Verkehrs auf L7-Ebene sofort abgelehnt haben. Dies würde schließlich bedeuten, dass wir jede E-Mail öffnen und "lesen" müssen, was darin enthalten ist. Ein solcher Ansatz könnte möglicherweise von einem großen und einflussreichen Unternehmen wie Google angeboten werden, das eine semantische Analyse von E-Mail-Inhalten erstellt und eine NDA und Anwälte auferlegt. Diese Option passt aber nicht zu uns.



Es ist jedoch bereits möglich, mit Informationen auf L4-Ebene zu arbeiten: Sie sind unpersönlich und werden in mehreren Metriken ausgedrückt. Hier können wir uns die Anzahl der Adressen ansehen, an die E-Mails von unseren IP-Adressen gesendet werden, und die Größe der übertragenen Informationen . Es ist logisch, dass Spammer normalerweise eine sehr große Datenbank mit Adressen haben, an die sie Briefe senden.



Infolgedessen haben wir entschieden, dass der Komplex all dieser Kriterien ausreicht, um eine hinreichend begründete Entscheidung zu treffen, ob der Spammer vor uns liegt oder nicht.



Lösungskonzept



Kontobewertung



Wir haben uns entschlossen, den Prozess der Bewertung von Benutzern anhand der aufgeführten Kriterien zu automatisieren - gemäß dem Bewertungsmodell eine Art "Vertrauensindex". Wir lesen keine E-Mails, wiegen aber Umschläge und analysieren Kennzahlen des öffentlichen Verkehrs, der aus der Cloud kommt.



Wie es funktioniert. Wenn sich ein Benutzer anmeldet, wird ihm von Anfang an die höchstmögliche Bewertung von 100 Punkten zugewiesen. Zunächst vertrauen wir allen und glauben, dass alle unsere Kunden normal arbeiten und keinen Spam versenden.





Dann durchläuft der Benutzer eine Überprüfungskette. Jede fehlgeschlagene Prüfung wird in Form von Strafen in der endgültigen Bewertung des Benutzers berücksichtigt. Wir haben ihre Größe basierend auf unseren Erfahrungen mit Spammern ermittelt.



Zunächst achten wir normalerweise auf die Geolokalisierung der IP-Adresse: ob sie dem Land entspricht, aus dem die meisten Spammer stammen. Wir haben eine Liste solcher Länder, die wir regelmäßig auffüllen. Dann "führen" wir den neuen Benutzer durch die restlichen Filter, die ich oben erwähnt habe. Als Ergebnis haben wir die endgültige Punktzahl des Kontos, die wir für die weitere Verwendung im Antispam-Dienst speichern.



Wiegen Sie Umschläge und zeigen Sie IP-Adressen an



Unsere Netzwerkgeräte können mithilfe des Netflow-Protokolls Metriken für den öffentlichen Verkehr bereitstellen. Dazu gehören SMTP-Pakete, SMTP-Bytes, die Anzahl der SMTP-Streams und die Anzahl der IP-Adressen für jede Quelladresse. Wir werden alle diese Metriken im Netflow Collector sammeln. Letztere werden sie für eine bequemere Verwendung ein wenig formatieren und dann mithilfe von Hilfsdiensten, die als NetClick-Abrufprogramme bezeichnet werden, zur weiteren Verwendung in Anti-Spam in das Clickhouse gelangen.





Goth



Die Selectel-Entwickler haben eine kleine Tradition: Wir nennen selbstgeschriebene Dienste die Namen von Charakteren aus dem Hunter x Hunter-Universum. Daher der Name - zu Ehren des Manga-Helden Goto.



Antispam besteht aus zwei Teilen und ist in Go geschrieben. Der erste Teil des Dienstes heißt Gotoh-Fetcher. Er ist damit beschäftigt, die Daten der genannten Verkehrsmetriken, die uns über Netflow erreichen, in mehreren Clickhouse-Lesern zu erfassen. Diese Daten werden zur Verarbeitung an den Gotoh-Fetcher-Kern gesendet. Dort werden sie in ein bequemeres Format formatiert und zum weiteren Schreiben an den Redis-Autor gesendet. Damit ist die Arbeit des Gotoh-Fetchers abgeschlossen.



Umschläge wiegen und Adressen



anzeigen Als nächstes macht sich der Gotoh-Inspektor, der seinem Namen alle Ehre macht, an die Arbeit. Er spielt die Rolle eines Entscheidungsträgers, eines Richters. Wohin geht der Gotoh-Inspektor? Es sucht bei Redis nach den Daten, die es vom Gotoh-Abruf abgerufen hat.



Nach Erhalt der Daten beginnt unser "Inspektor" die Kontrollen zu durchlaufen. Zunächst wird angezeigt, ob das Limit für eine Metrik überschritten wurde. Wenn nicht, ist eine weitere Überprüfung nicht sinnvoll. Gotoh-inspector schließt diesen Teil der Daten von der Prüfung aus.



Funktionsweise von Gotoh-inspector



Wenn die Grenzwerte für mindestens eine Metrik überschritten werden, prüfen wir zunächst, ob der Client über ein vertrauenswürdiges Tag verfügt. Es wurde speziell eingeführt, um Spammer und Benutzer, die normale E-Mails versenden, einfach in großen Mengen zu trennen. Das vertrauenswürdige Tag eines Benutzers kann nur nach einem Gespräch mit Selectel-Spezialisten angezeigt werden.



Wir müssen sicherstellen, dass es sich um eine Person aus einem echten Unternehmen handelt, die nur normale Geschäftspost verschickt. Es gibt nur eine Menge davon. Wenn es ein vertrauenswürdiges Tag gibt, generieren wir einen Vorfall in Clickhouse und berücksichtigen diese Daten nicht mehr. Wenn der Client jedoch kein Tag hat, setzen wir die "Untersuchung" fort.



Wir schauen uns die Bewertung an und hier beginnt der Spaß. Die Wertung hat zwei Grenzen. Das erste ist die Vertrauensgrenze. Wenn dem Konto gemäß den Ergebnissen der Überprüfung eine gute Bewertung zugewiesen wurde, senden wir den Vorfall einfach an Clickhouse und vergessen ihn. Im Allgemeinen gibt es nichts anderes mit einem Benutzer mit guter Bewertung zu tun.



Wenn die Punktzahl unter dem Konfidenzlimit liegt, prüfen wir, ob sie weit vom Verbotslimit entfernt ist. Für eine gerechtere Bewertung sind zwei Grenzen erforderlich. Wenn die Bewertung gut ist, werden wir den Benutzer nicht sperren. Wenn die Bewertung jedoch Fragen aufwirft, werden wir die Anzahl der mit diesem Konto verbundenen Vorfälle untersuchen.



Wenn ein Konto in die Zwischenzone fällt und seine Bewertung unter dem Vertrauenslimit, aber über dem Verbotslimit liegt, sendet das System eine Warnung an den Chat an den Dienstoffizier. Sie überprüfen wiederum manuell, ob Spam vom Konto oder von der virtuellen Maschine gesendet wird.



Wenn die Bewertung nicht einmal die Grenzen des Verbots erreicht, ist alles ganz einfach: Das Konto wird gesperrt, weil wir Grund genug zu der Annahme haben, dass wir einem Verstoß gegenüberstehen.



Ergebnis



So haben wir unser einfaches Antispam-System geschaffen. Es stellt sich die Frage: Ist es besser geworden?



Das obige Bild zeigt die Anzahl der Warnungen seit dem Start dieses Dienstes Anfang 2020. Die Anzahl der Warnungen auf dem Höhepunkt betrug mehr als 60.000.



Mit manuellem Anti-Spam konnten wir eine solche Menge an Informationen einfach nicht verarbeiten - eine große Menge an Daten ging an uns vorbei. Und jetzt können wir irgendwie mit diesen Daten arbeiten, sie analysieren.



Wir haben die Gesamtzahl der eingehenden Warnungen für alle vier von uns analysierten Verkehrsmetriken untersucht. Schauen wir uns das Diagramm für jede Metrik an.



Anzahl der gesendeten Bytes





Dies ist die zahlreichste Metrik in Bezug auf die Anzahl der Warnungen. Im Allgemeinen ist dieses Diagramm dem vorherigen sehr ähnlich, da diese Warnungen fast vollständig das Bild von Spam-Warnungen bilden. Hier ist die Logik einfach: Je mehr E-Mails von einem Konto gesendet werden, desto schneller gelangt es in das Sichtfeld von Antispam und desto mehr Warnungen werden dafür generiert.



Anzahl der SMTP-Pakete





Es besteht eine Verbindung zwischen dieser Metrik und der vorherigen. Aber warum analysieren wir die Anzahl der Bytes und Pakete getrennt? Weil es Fälle gab, in denen eine Warnung für das Konto anhand der Anzahl der Pakete, jedoch nicht anhand der Anzahl der Bytes generiert wurde. Beispielsweise sendet ein Spam-Konto viele kleine Briefe, von denen jeder in einem separaten Paket gesendet wird. In diesem Fall wird eine Warnung basierend auf der Anzahl der Pakete generiert.



Anzahl der Ziel-IP-Adressen





Dieses Diagramm ist nicht einfach zu analysieren, kann jedoch eine zusätzliche Informationsquelle sein. In jedem Konto ist Spam anders organisiert: Jemand sendet IP an 10 oder 100 verschiedene Adressen, und jemand sendet an 10 feste Adressen und fällt gemäß dieser Metrik nicht in das Sichtfeld von Antispam.



Anzahl der gleichzeitig geöffneten SMTP-Streams





Die "unbeliebtesten" Metriken - Warnungen dafür kommen selten an. Wenn es in den vorherigen Abbildungen Tausende auf der Y-Skala gab, sind es hier Hunderte. Hier sind Spammer offenbar immer noch rückversichert und senden keine E-Mails von einer großen Anzahl offener Verbindungen. Obwohl das Diagramm auf den ersten Blick nicht repräsentativ ist, hilft es tatsächlich, besser zu verstehen, wie Spam gesendet werden kann.



Fazit



Natürlich kann dieses System verbessert werden, und wir planen, es in Zukunft zu verbessern. Aber jetzt zeigt er sich ziemlich effektiv in der Arbeit.



Zum Beispiel haben wir noch nie einen seriösen Benutzer gesperrt. Und wenn dies passiert (was ist, wenn jemand ein Universitätsprojekt in Bezug auf Mailinglisten hat), dann ist alles umkehrbar. Wenn Sie feststellen, dass Ihr Selectel-Konto gesperrt wurde (der Grund für die Sperrung wird in Ihrem Konto angegeben), schreiben Sie einfach an den technischen Support. Wir werden sehen, was die Herabstufung des Ratings beeinflusst hat und wie Sie es in Zukunft vermeiden können. Dies ist kein lebenslanges Verbot.



Ich habe auch über unser Antispam-System bei Selectel DevTalks gesprochen. Wenn Sie den Vortrag sehen möchten, finden Sie hier den Link .






All Articles