2017-03-15 15 views
1

多くのドメインがログに記録しようとしているログから見たので、私はpostfix(既に保護されていますが..知っています)を保護したいと思います。逆正規表現の結果とのみ一致します

私はすでにsshにfail2banを使用しています。不正なドメインにマッチさせてそれらを禁止する正規表現を作成したいと考えていました。

私が知っている限り、Googleとlocalhostからのすべてが安全です。 私は作成したこの正規表現を逆転しようとしていますが、localhost例外を追加したり、 "google"から除外したりすることに問題があります。

すべてHEREはregexr(dot)comのウェブサイトにあります。

本当にありがとうございます。

更新: 私は両方の回答を受け入れることができたらいいと思います。私はこの男が彼の正規表現を詳細に説明したので、私が選んだものを受け入れています。 ここで私のスキルは貧弱ですが、私は他の解決策をもっと理解しています。 どちらも意図したとおりに動作しますので、ありがとうございます!

+0

\ bの(connect.from)( 'で試してみます* (localhost | google))。* ' –

+0

それはうまくいった!私はそれが簡単だがそれを得ることができないことを知っていた。私がupvoteすることができる答えとしてそれを書いてください(: – Nihvel

答えて

1

私はあなたが次の正規表現を探し思う:

\b(connect\sfrom)\s(?!(.*?\.)?google)(?!localhost)[^\[]* 
  • \sは(これはあなたのドットより狭い)空白を表します。
  • (.*?\.)?googleは、「google」または「subdomain.google」の組み合わせに一致することを意味します。疑問符は正規表現を非貪欲(できるだけ小さい)にします。
  • (?!A)(?!B)は複数否定の先読みです。あなたの質問の要点
  • [^\[]*は、「[」が出現するまで最長( "greedy")の文字列と一致することを意味します。要するに

:?!。あなたは、文字列の途中で否定先読みを使用することができます(?!A)(?!B)

+0

私は深刻に感謝しています。ありがとう! – Nihvel

1

を探し

\b(connect.from)(?!.*(localhost|google)).* 
関連する問題