もっと詳しく

このガイドは、Elastic Stack 8のセットアップ方法に関するガイドの続きとして、Ubuntu/DebianにLogstash8をインストールして構成する方法について説明しています。ElasticsearchとKibanaのインストールについてはすでに説明しました。

Ubuntu/DebianにElastic/ELKスタックをインストールする

インストール順序によると、Logstashはラインの3番目のコンポーネントです。 Elastic Stackが適切に機能するためには、すべてのコンポーネントのバージョンが適切に機能することに注意してください しなければならない マッチ。

Logstash 8は、Elasticsearchが実行されているのと同じノードまたは別のノードにインストールできることに注意してください。

Logstash8をUbuntu/Debianにインストールします

Logstash 8は、DEBバイナリを使用するか、APTリポジトリから直接インストールすることで、Ubuntu/Debianにインストールできます。

新しいパッケージがリリースされた場合にシームレスなアップグレードを保証するため、APTリポジトリからのインストールをお勧めします。

したがって、APTリポジトリを介してUbuntu/DebianにLogstash8をインストールするには;

  • リポジトリ公開署名キーをインストールします
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --dearmor > /etc/apt/trusted.gpg.d/elasticsearch.gpg
  • ElasticStackAPTリポジトリをインストールする
apt install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
  • Logstash8をUbuntu/Debianにインストールします
apt update
apt install logstash

Logstashの構成 8

インストールが完了したら、Logstashの構成に進みます。

Logstashデータ処理パイプラインには3つのセクションがあります。

  • 入力:入力セクションは、さまざまなエンドポイントからLogstashにデータを取り込むために使用されます。
  • フィルター:受信したデータを処理および変換します。
  • 出力:処理されたデータを指定された宛先に隠します。これはElasticsearchの場合があります。

LogstashPipelineについてもっと読むことができます ここ

Logstashの構成中に、INPUT、FILTERS、およびOUTPUTごとに個別の構成ファイルを作成できます。 すべてのセクションに対して単一の構成ファイルを作成することもできます。 このガイドでは、単一の構成ファイルを使用します。

Logstash入力プラグインを構成する

開始するには、データがLogstashに取り込まれる方法を定義する必要があります。 たとえば、からデータを受信するようにLogstashを構成するには ビート TCPポート5044では、入力構成は次のようになります。

input {
  beats {
    port => 5044
  }
}

Logstashフィルターを構成する

これで、Logstash入力プラグインをBeatsとして定義しました。 したがって、ビートから受信したイベントを処理するようにフィルタープラグインの構成に進みます。 このガイドでは grok フィルタプラグイン。 他のプラグインについて読むことができます ここ

デモンストレーションの目的で、Ubuntu/CentOSシステムからSSH認証イベントを収集するようにビートを構成します。 したがって、以下に示すような種類のイベントを処理するためのフィルターを作成します。

この例で使用されているgrokパターンは、以下のssh認証ログ行と一致します。

May  1 13:15:23 elk sshd[1387]: Failed password for testuser from 192.168.0.102 port 60004 ssh2
May 1 13:08:30 elk sshd[1338]: Accepted password for testuser from 192.168.0.102 port 59958 ssh2
filter {
  grok {
    match => { "message" => "%{SYSLOGTIMESTAMP:timestamp}s+%{IPORHOST:dst_host}s+%{WORD:syslog_program}[d+]:s+(?<status>w+s+password)s+fors+%{USER:auth_user}s+froms+%{SYSLOGHOST:src_host}.*" }
    add_field => { "activity" => "SSH Logins" }
    add_tag => "linux_auth"
    }
}

Kibanaには、GrokDebuggerがバンドルされています。 herokuapp grokdebugger。 KibanaGrokデバッガーには以下からアクセスできます。 開発ツール>Grokデバッガー。 これを利用して、正しいgrokパターンを生成できます。

一般的なLogstashgrokパターンも確認できます ここ

また、デモを簡単にするために、上記で使用したSSH認証イベントのgrokフィルターと一致しないすべてのイベントを削除するフィルターを追加します。

if "_grokparsefailure" in  { drop {} }

フィルタが次のようになります。

filter {
  grok {
    match => { "message" => "%{SYSLOGTIMESTAMP:timestamp}s+%{IPORHOST:dst_host}s+%{WORD:syslog_program}[d+]:s+(?<status>w+s+password)s+fors+%{USER:auth_user}s+froms+%{SYSLOGHOST:src_host}.*" }
    add_field => { "activity" => "SSH Logins" }
    add_tag => "linux_auth"
    }
  if "_grokparsefailure" in  { drop {} }
}

Logstash出力の構成

違いがある 出力プラグイン これにより、Logstashはイベントデータを特定の宛先に送信できます。 このガイドでは Elasticsearch LogstashがデータをElasticsearchに直接送信できるようにする出力プラグイン。

Elastic Stack 8では、Elasticsearch8はSSL/ TLSで構成されており、認証はデフォルトで有効になっていることに注意してください。

これは、Elasticsearchの出力を使用している場合を意味します。

  • Elasticsearchに接続するには、Elastic Stack SSL /TLSCA証明書が必要です。
  • また、Elasticsearchのインデックスに書き込めるには、適切なクレデンシャルが必要です。

したがって、ElasticsearchCA証明書をダウンロードします

Logstashの出力構成は次のようになります。

output {
  elasticsearch {
    hosts => ["https://es-node01.kifarunix-demo.com:9200"]
    cacert => '/etc/logstash/elasticsearch-ca.crt'
    user => 'elastic'
    password => '<elastic_user_password>'
  }
}

この構成。

  • ホストで実行されているElasticsearchにデータを送信します es-node01.kifarunix-demo.com。 名前は解決可能である必要があります。
  • ポート9200/TCPがファイアウォールで開かれていることを確認します。
  • スーパーユーザーElasticsearchユーザーを使用します(elastic)任意のインデックスに書き込むことができます。 別のユーザーを作成し、特定のインデックスにのみ書き込むための特定のアクセス許可を与えることを検討してください
  • デフォルトのLogstashインデックスにデータを作成して書き込みます。 logstash-* Elasticsearchのインデックス(スーパーユーザーを使用したため)

特定のインデックスで特定のユーザーの公開ロールを作成する方法を確認してください。

  • Elasticsearch CA証明書をダウンロードし、によって指定されたファイルに保存します cacert 上記のパラメータ、 /etc/logstash/elasticsearch-ca.crt
openssl s_client -showcerts -connect es-node01.kifarunix-demo.com:9200 </dev/null 2>/dev/null 
| openssl x509 > /etc/logstash/elasticsearch-ca.crt

NPUT、FILTER、およびOUTPUTの構成を1つのファイルにまとめてから、以下に示すように構成ファイルを作成します。

vim /etc/logstash/conf.d/ssh-authentication.conf
input {
  beats {
    port => 5044
  }
}
filter {
  grok {
    match => { "message" => "%{SYSLOGTIMESTAMP:timestamp}s+%{IPORHOST:dst_host}s+%{WORD:syslog_program}[d+]:s+(?<status>w+s+password)s+fors+%{USER:auth_user}s+froms+%{SYSLOGHOST:src_host}.*" }
    add_field => { "activity" => "SSH Logins" }
    add_tag => "linux_auth"
    }
  if "_grokparsefailure" in  { drop {} }
}
output {
  elasticsearch {
    hosts => ["https://es-node01.kifarunix-demo.com:9200"]
    cacert => '/etc/logstash/elasticsearch-ca.crt'
    user => 'elastic'
    password => '<elastic_user_password>'
  }
}

プレーンテキストで構成に配置する代わりに、パスワードをキーストアに保存することもできます。

プラグイン構成をデバッグする目的でイベントデータを標準出力に送信する必要がある場合は、次の行を追加します。 stdout{コーデック=>rubydebug} 出力構成セクションに移動します。

output {
  elasticsearch {
    hosts => ["https://es-node01.kifarunix-demo.com:9200"]
    cacert => '/etc/logstash/elasticsearch-ca.crt'
    user => 'elastic'
    password => '<elastic_user_password>'
  }
}
  stdout { codec => rubydebug }
}

Logstashパイプラインのサンプルを確認することもできます ここ

Logstash Grokフィルターをデバッグして、ログを実際に必要なフィールドに解析できることを確認する必要がある場合は、LogstashGrokフィルターをデバッグする方法について以下のリンクを参照してください。

LogstashGrokフィルターをデバッグする方法

Logstash構成のテスト

構成が完了したら、以下のコマンドを実行してLogstash構成を確認してから、開始します。

sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t
Configuration OK
[2022-07-16T07:42:10,315][INFO ][logstash.runner          ] Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash

さて、あなたが得るなら 設定OK その後、あなたは行ってもいいです。

Logstashを実行し、デバッグ用に特定の構成ファイルをロードするには、以下のコマンドを実行できます。

sudo -u logstash /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/config-file.conf

Logstashの実行

これで、Logstashを起動して有効にし、システムの起動時に実行できるようになります。

systemctl enable --now logstash

Logstash構成ファイルでエラーを確認することもできます。 /var/log/logstash/logstash-plain.log

tail -f /var/log/logstash/logstash-plain.log
...
[2022-07-16T10:38:30,215][INFO ][logstash.outputs.elasticsearch][main] Using a default mapping template {:es_version=>8, :ecs_compatibility=>:v8}
[2022-07-16T10:38:30,450][INFO ][logstash.javapipeline    ][main] Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>2, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50, "pipeline.max_inflight"=>250, "pipeline.sources"=>["/etc/logstash/conf.d/beats-input.conf"], :thread=>"#<0x2cc0fa11 run="">""">>"""">"">>>0x2cc0fa11>
""""

The post Logstash8をUbuntu/Debianにインストールします appeared first on Gamingsym Japan.