CentOS8 logstashをインストールしてsshアクセスログをElasticsearch+Kibanaで可視化する

CentOS8 logstashをインストールしてsshアクセスログをElasticsearch+Kibanaで可視化する

CentOS8にlogstashをインストールしてsshのアクセうログをlasticsearch+Kibanaで可視化するまでの手順を記述してます。

環境

  • OS CentOS 8.1.1911 (Core)
  • Elasticsearch 7.7.0
  • kibana 7.7.0

※CentOs8にElasticsearchをインストールする手順はこちら
※CentOS8にkibanaをインストールする手順はこちら

logstashインストール

Elasticsearchの開発元であるElastic社が提供するオープンソースのデータ収集ツールであるlogstashをインストールします。

sudo dnf install -y logstash

起動と自動起動を有効にします。

sudo systemctl enable --now logstash

logstash設定

Logstashの パイプライン は「input」と「output」、そして「filter」の3つから構成されます。

/etc/logstash/conf.d/に設定ファイルを作成します。
ここでは「local-ssh-events.conf」という名前で作成します。

sudo vim /etc/logstash/conf.d/local-ssh-events.conf

「local-ssh-events.conf」を「input」と「output」、「filter」の3つで構成して編集します。

input {
  file {
    path => "/var/log/secure"
    type => "ssh_auth"
  }
}
filter {
  if [type] == "ssh_auth" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:timestamp}\s+%{IPORHOST:dst_host}\s+%{WORD:syslog_program}\[\d+\]:\s+(?<status>.+)\s+for\s+%{USER:auth_user}\s+from\s+%{SYSLOGHOST:src_host}.*" }
      add_field => { "activity" => "SSH Logins" }
      add_tag => "linux_auth"
    }
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:timestamp}\s+%{IPORHOST:dst_host}\s+%{WORD:syslog_program}\[\d+\]:\s+(?<status>.+)\s+for\s+invalid\s+user\s%{USER:auth_user_nonexist}\s+from\s+%{SYSLOGHOST:src_host}.*" }
      add_field => { "activity" => "SSH Logins" }
      add_tag => "linux_auth"
    }
  }
  if [message] !~ /(Failed password|Accepted password|Accepted publickey|for invalid)/ { drop { } }
}
## Send data to Elasticsearch on the localhost
output {
   elasticsearch {
   ## Elasticsearchを起動しているIPを指定
     hosts => ["10.10.10.121:9200"]
     manage_template => false
     index => "ssh_auth-%{+YYYY.MM}"
 }
}

Logstashが「/var/log/secure」を読み取れるように設定します。

sudo chown :adm /var/log/secure
sudo usermod -aG adm logstash
sudo chmod g+r /var/log/secure

実行します。

sudo -u logstash /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/local-ssh-events.conf

Elasticsearchのindexは、http://プライベートIP:9200/_cat/indices?v で確認できます

kibana設定

kibana側でログを確認できるように設定します。

画面右下にある「歯車マーク」- > [Index patterns]  を選択します。

Index pattern : ssh_auth-*
と入力して「Next step」をクリックします。

次に
Time Filter field name : @timestamp
と入力して「Create Index pattern」 をクリックします。

ダッシュボードを確認するとlogが可視化されていることが確認できます。