2017-03-15 3 views
1

Ich möchte postfix schützen (die bereits geschützt ist, aber .. Sie wissen ..), weil ich aus den Protokollen sah, dass viele Domänen versuchen, es anzumelden.Match nur das Ergebnis einer inversen Regex

Ich benutze fail2ban für ssh bereits und ich wollte eine Regex zu den schlechten Domains erstellen und verbieten.

Alles, was ich weiß, ist, dass alles von google und localhost sicher ist. Ich versuche, diese Regex zu invertieren, die ich erstellt habe, aber ich habe Probleme sowohl beim Hinzufügen einer Localhost-Ausnahme und Ausschließen von der Suche "Google" auch.

Sie finden alles HERE bei regexr (dot) com Website.

Ich schätze Ihre Hilfe sehr!

UPDATE: Ich wünschte, ich könnte beide Antworten als akzeptiert markieren. Ich akzeptiere den, den ich gewählt habe, weil dieser Typ seine Regex im Detail erklärt hat. Obwohl meine Fähigkeiten hier schlecht sind und ich die andere Lösung mehr verstehe. Beide funktionieren wie vorgesehen, also vielen Dank!

+0

Versuch mit '\ b (connect.from) verwenden (* (localhost | google)). * ' –

+0

Das hat funktioniert! Ich wusste, dass es einfach war, aber ich konnte es nicht verstehen. Bitte schreibe es als Antwort, die ich verbessern kann (: – Nihvel

Antwort

1

Ich glaube, Sie für den folgenden regulären Ausdruck aussehen:

\b(connect\sfrom)\s(?!(.*?\.)?google)(?!localhost)[^\[]* 
  • \s ein Leerzeichen darstellt (das ist schmaler als der Punkt).
  • (.*?\.)?google bedeutet "google" oder eine Kombination aus "subdomain.google". Das Fragezeichen macht die Regex nicht gierig (so klein wie möglich)
  • (?!A)(?!B) ist ein Multiple Negative Lookahead. Die Essenz Ihrer Frage
  • [^\[]* bedeutet Übereinstimmung mit der längsten möglichen ("gierigen") Zeichenfolge bis '[' auftritt.

Kurz gesagt:?!. Sie suchen (?!A)(?!B)

+0

Ich bin ernsthaft beeindruckt. Danke! Einfach ausprobiert und funktioniert so wie es sollte: – Nihvel

1

Sie können negative Vorschau in der Mitte der Saite

\b(connect.from)(?!.*(localhost|google)).*