banner
肥皂的小屋

肥皂的小屋

github
steam
bilibili
douban

社工库の構築--ELK

声明:この記事は、ネットワークセキュリティの知識を共有し普及するために作成されました。読者がこの情報を利用してネットワークセキュリティに関連する行為を行った場合の責任は、読者自身にあり、筆者およびこのウェブサイトとは関係ありません。

私自身およびこのサイトは、いかなるウェブサイト、企業、組織の情報や資料も提供していません。

起因#

学習目的で、私のようなネットワークセキュリティ愛好者は、オンラインで「漏れた」情報をいくつか持っていることがあります。

したがって、データ量の増加と合法的なペネトレーションテストでの情報収集のニーズに応えるために、ローカルで高速かつ正確な社工库を構築することは非常に重要です。

では、どのような環境が必要ですか?

現在、オンラインで構築されている社工库のほとんどは、mysql+coreseek+php のアーキテクチャです。coreseek は sphinx をベースにした優れた全文検索エンジンですが、データ量が数億を超えるとパフォーマンスが低下し、クラスタを構築して分散処理を行う場合のパフォーマンスも理想的ではありません。将来的にデータ量が増えることを考慮する必要がある場合は、他のソリューションを使用する必要があります。

私はここでELKという方法を使用します。これは元々オープンソースのリアルタイムログ分析プラットフォームです。

この記事では、ELK環境の構築と一般的なデータのインポートおよびクエリ方法について説明します。

ELK の紹介#

ELK とは何ですか?

ELK は、3 つのオープンソースソフトウェアの略称で、Elasticsearch、Logstash、Kibana のことを指します。これらはすべてオープンソースソフトウェアです。ただし、Beats という軽量なログ収集ツール(エージェント)が追加されました。Beats はリソースをほとんど消費せず、ログを収集して Logstash に転送するため、公式サイトでも推奨されています。現在、元の ELK スタックメンバーに Beats ツールが追加されたため、Elastic Stack と改名されました。Elastic Stack には次のものが含まれます。

Elasticsearch はオープンソースの分散型検索エンジンであり、収集、分析、データの保存の 3 つの機能を提供します。その特徴は、分散型、ゼロ構成、自動検出、インデックスの自動シャーディング、インデックスのレプリケーションメカニズム、RESTful スタイルのインターフェース、複数のデータソース、自動検索負荷分散などです。詳細は、Elasticsearch の公式ガイドを参照してください。

Logstash は、ログの収集、分析、フィルタリングを行うためのツールであり、多くのデータ取得方法をサポートしています。一般的な動作方法は、クライアント / サーバアーキテクチャで、クライアント側はログを収集するホストにインストールされ、サーバ側は受信した各ノードのログをフィルタリング、変更などの操作を行い、elasticsearch に送信します。

Kibana もオープンソースで無料のツールであり、Kibana は Logstash と ElasticSearch が提供するログ分析に適した Web インターフェースであり、重要なデータログの集約、分析、検索をサポートします。

Beats は、軽量なログコレクターです。実際、Beats ファミリーには 6 つのメンバーがあります。以前の ELK アーキテクチャでは、Logstash を使用してログを収集および解析していましたが、Logstash はメモリ、CPU、I/O などのリソースを多く消費します。Logstash と比較して、Beats はシステムの CPU とメモリをほとんど消費しません。

ELK スタック(5.0 以降)--> Elastic Stack ==(ELK スタック + Beats)。現在、Beats には 6 つのツールが含まれています。

なぜ ELK を使用するのですか?

伝統的な社工库は通常、MySQL データベースを使用して構築されますが、非常に大きなデータの場合、検索効率が非常に低くなります。この関係型データベースでは、クエリを実行するために列名を明示的に指定する必要があります。一方、ES では全文検索が可能であり、大規模なデータのクエリでもほぼミリ秒単位で応答するため、非常に高速です!ELK は元々ログの大規模データ収集と分析に使用されており、社工库としても優れた選択肢です。

ELK 公式ウェブサイトELK ソフトウェアのダウンロードELK 中国語ガイド(ログインが必要)

ELK 環境の構築#

Java 環境の設定#

ELKJava環境のサポートが必要であり、JAVA_HOME環境変数を設定する必要があります。

さまざまなバージョンのJavaの有料と無償の混乱のため、私は常にJava8のバージョンを使用しています。

私が使用しているJDK環境を使用します:ダウンロードはこちらburpsuite1.7 もこの環境で直接使用できます

ただし、ElasticsearchはすぐにJava8 のサポートを終了するとの警告が表示されていますので、できるだけ早くJava11 にアップグレードしてください。ここで、JREJDKについて説明します:

前者は「Java Runtime Environment」の略で、最小限の環境で Java ファイルを実行するためのものです。

後者は「Java SE Development Kit」の略で、Java プログラミングのための開発環境ツールキットです。

初心者の場合は、直接JDKをインストールすることをお勧めします。JDKにはJREが含まれており、インストール後に環境変数にインストール場所を手動で追加することを忘れないでください。

Javaのデフォルトのインストールパスは「C:\Program Files\Java」で、jrejdkの両方が含まれています。

そして、jdkフォルダ内にはjreフォルダもあります。システム変数JAVA_HOMEを新規作成し、値にjdkのパスを設定します。

次に、PATH%JAVA_HOME%\bin;%JAVA_HOME%\jre\binを追加します。これでJAVA_HOME環境変数の設定が完了しました。

image

基本的な実行#

ElasticsearchLogstashKibanaの 3 つの圧縮ファイルをダウンロードして解凍します。

1.Elasticsearchフォルダのbin\ディレクトリを開き、cmdを入力します:elasticsearch.bat

image

ブラウザでhttp://localhost:9200/を開きます:

image

2.kibanaフォルダ内のconfig\kibana.ymlを開き、末尾の

#i18n.locale: "en"

を次のように変更します:

i18n.locale: "zh-CN"

保存後、kibanaフォルダ内でbin\kibana.batファイルをクリックします。

image

ブラウザでhttp://localhost:5601を開き、初回の画面が表示されます:

image

ここまでで、基本的な実行が完了しました。以下に、いくつかの主要な設定ファイルとその役割について説明します:

メインノードの設定ファイルelasticsearch.yml、なぜメインノードと呼ばれるのかというと、ELK は元々分散型アーキテクチャのログ分析のために設計されているからです。

場所はelasticsearch\config\elasticsearch.ymlで、通常は変更しないことをお勧めします。デフォルトの設定で問題ありません。

#仮想メモリを無効にしてパフォーマンスを向上させる
bootstrap.memory_lock: true
#ノード名をカスタマイズ:
cluster.name: elasticsearch
#データ通信ポート:
http.port: 9200
#リッスンするネットワークカードのIP
network.host: 192.168.1.1
#データノードであるかどうか:
node.data: true
#無効にする:
node.ingest: true
#メインノードであるかどうか、定義しない場合は最初に起動されるのがメインノードです:
node.master: true
#最大ストレージノード数:
node.max_local_storage_nodes: 1
#ノード名をカスタマイズ:
node.name: Win-Master-1
#データファイルのパス
path.data: D:\elk\elasticsearch\data
path.logs: D:\elk\elasticsearch\logs
#ノード間通信ポート:
transport.tcp.port: 9300
#ノードIP、ノード間でpingと9300ポート通信を許可する必要があります
discovery.zen.ping.unicast.hosts: ["192.168.1.1", "192.168.1.2"]
#headプラグイン関連:
http.cors.enabled: true
http.cors.allow-origin: "*"
# 0.0.0.0を指定すると、外部からのアクセスが可能になります
network.host=0.0.0.0

データのインポート#

ここまでです。明日続きます。

一般的なテクニック#

参考文献:

以上です。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。