プラグインを作成するために、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を超える操作が可能になります。
- ちくしょう! -ブログ、フォーラム、コメント内のWebスパマーのデータベース
- StopForumSpam-ブログ、フォーラム、wikiのWebスパマーのデータベース
- CINSスコア -コミュニティで共有されるSentinel IPSデータベース
- Blocklist.de -Postfix、SSH、Apache、Spambots、irc-Bot、Reg-Bot、DDosなどの攻撃者のアドレスのベース
- ランサムウェアトラッカー -ランサムウェア(ランサムウェアプログラム)のCnCサーバーアドレス
- AlienVault OTX-人気のSIEMからのオープンフィード
- Binary Defense -Theat Intelligenceの専門プロバイダー
- EmergingThreats-ファイアウォールでブロックするためのProofPointフィードを統合しました
- Arbor ATLAS -DDoS攻撃の発信元である有名な会社のアドレス
- Botvrij-マルウェアによって侵害されたアドレス
- Torプロジェクト -Torネットワークアドレス。
ベースには、IPで検索される個々のアドレス: red.smembersキー( 'ip:' + clientip)と、 for iのスクリプトでred.sscan_iterループ(name = 'net:index'、match = str(ip.words [0])+ '*'、カウント= 500) 。
それでは、インストールに移りましょう。 手順の説明:
- Redisをインストールする
- 必要なライブラリをインストールする
- スクリプト内の接続の行の修正
- 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名を持つレピュテーションデータベースのフィードを追加するなど、機能を拡張することで、アプリケーションの範囲を拡大する予定です。