無料のIP評価フィードをSplunkに追加する

Splunkアプリケーションデータベースには、特定のIPアドレスが疑わしく見え、特定のレピュテーションデータベースで「ライトアップ」されているという情報を追加および追加できる多くのソリューションがあります。 ただし、これらのアプリケーションは有料(たとえば、 Recorded Future AppKaspersky Threat Feed App )、または非常に遅い(執筆時点ではIP Reputation Appも2月以降のメンテナンスのため完全にアクセスできない)ため、開発することにしましたオープンソースのRST Cloud Threat Database Add-on for Splunkプラグインは、オープンソースからのさまざまな情報を単一のデータベースに収集し、1秒あたり数万のリクエストのストリームで応答を発行できるようにします。



プラグインを作成するために、Splunkをオンザフライで検索するときにデータを充実させ、外部データベースに必要な情報を要求するPythonスクリプトの小さなセットが開発されました。 データベースとして、Redis Key-Valueストレージを使用しました。これはすべての値をRAMに保持し、ディスクサブシステムからの読み取り/書き込みの速度に実質的に依存しません。 プラグインはgithubで公開されており、改善のための提案を受け付けています。



2つのIntel®Xeon®E5-2630コアと4 GBのRAMを備えた仮想マシンでのこのソリューションのパフォーマンステストでは、Python 2.7からのすべてのオーバーヘッド、従来のハードウェアとSplunk自体の仮想化、Redisの300Kレコードのスループットを考慮することが示されました平均25K RPSで、多くのタスクに十分です。 これらの数値は、追加の最適化とクラスタリングなしで「そのまま」Redisを使用した場合に得られるという事実にすぐに注目する価値があります。 また、検索スクリプトでは、データベースの操作中にパイプラインメカニズムは使用されません。



たとえば、プラグインを使用すると、Webフォームスパマーを特定したり、感染したIPアドレスからサイトに接続したりできます。



画像



コンソールからすべての「危険な」クライアントをすばやく撤回できます。

sourcetype = Web:*:access_log host = www.demo.demo | フィールドclientip | dedup clientip | lookup local = true lookupthreat clientip OUTPUT Threatscore ThreatSource Threatcategory | ここで、threatscore> 0


データを表示し、そのソース、さまざまなデータベースでこのIPが強調表示されたカテゴリ、および累積脅威スコアを表示します。



画像



マクロを使用できます。マクロを使用すると、より便利です。

| `threatDB(clientip)`


簡略化するために、RedisはSplunk Headに直接立つことができ、別のサーバーまたはサーバークラスターに移動できます。 さらに、RST Cloud Threat Database Add-onには、さまざまなソースからレピュテーションデータベースを自動的にダウンロードし、Redisにインポートするいくつかのスクリプトが含まれています。



今日、不審で危険なIPアドレスを収集するための信頼できるオープンソースがたくさんあります。 たとえば、プラグインを使用すると、15を超える操作が可能になります。





ベースには、IPで検索される個々のアドレス: red.smembersキー( 'ip:' + clientip)と、 for iのスクリプトでred.sscan_iterループ(name = 'net:index'、match = str(ip.words [0])+ '*'、カウント= 500)



それでは、インストールに移りましょう。 手順の説明:



  1. Redisをインストールする
  2. 必要なライブラリをインストールする
  3. スクリプト内の接続の行の修正
  4. IP評価データベースを更新するためのCRONタスクのセットアップ


最初のステップは省略します。まず、多数のマヌルネコがあります。次に、1つのコマンドapt-get install -y redis-server with basic settingsでdebianにインストールします。



Pythonライブラリへの依存関係の問題を解決するには、次のようにします。

$ wget bootstrap.pypa.io/get-pip.py

$ python get-pip.py

$ sudo pip install redis

$ sudo pip install netaddr


Splunkは内部で独自のPythonを使用しますが、変更する価値はないため、オペレーティングシステムに常駐するPythonに余分なものをインストールする方が適切です。



Redisのインストール方法によっては、$ SPLUNK_HOME / etc / apps / threatDB / binディレクトリ内のスクリプトでアドレスと接続ポートを修正する必要がある場合があります。



Splunkのメイン検索スクリプト:redisworker.py

sys.path.append( "/ usr / local / lib / python2.7 / dist-packages")#redis-pyモジュールへのパス

redis_server = '127.0.0.1'

redis_port = 6379


データベースクリーンアップスクリプト:threat_flushdb.py

redis_server = '127.0.0.1'

redis_port = 6379


更新されたIoCダウンロードスクリプト:threatuploader.py

redis_server = '127.0.0.1'

redis_port = 6379


さまざまなソースからのIoCダウンローダースクリプト:start_threatupload.sh

base_dir = / opt / splunk / bin / scripts / threatDB

python_bindir = / usr / bin


次に、一時ディレクトリを選択します。

$ mkdir -p / tmp / threatsupload


そして、例えば/ etc / crontabファイルを介して、CRONスケジューラーを構成します。

2 0 * * * root $ SPLUNK_HOME / etc / apps / threatDB / bin / start_threatupload.sh / tmp / threatsupload


実稼働環境では、ルートの代わりに別のアカウントを使用することをお勧めします。 また、データベース内のエントリのTTLは48時間であるため、1日に1回のデフォルトの更新で十分であることに注意してください。



有料ソリューションは、IPアドレス、ドメインアドレス、ハッシュとファイルパス、ミューテックス名などを含む侵害の指標のセット全体を提供します。これにより、組織内のマルウェアアクティビティを識別できますが、現在はRST CloudでWebに集中しています。プラグインを使用すると、IPアドレスのみで作業できます。 将来的には、パフォーマンスの観点からプラグインを完成させ、DNS名を持つレピュテーションデータベースのフィードを追加するなど、機能を拡張することで、アプリケーションの範囲を拡大する予定です。



All Articles