FilebeatのPalo Alto Networks moduleでtrafficログを可視化する


Filebeatとは

  • Elastic社の軽量ログ収集エージェント群Beatsの1つ。

  • BeatsはいずれもGoで書かれており低負荷で動作するため、Logstashと比べてデータソース(Webサーバー等)に直接導入しやすい。
    • Logstashと比べて機能はシンプルで、収集対象のデータに応じてエージェントを使い分ける必要がある。
  • Filebeatはログファイルのデータ収集に特化したエージェント。
  • 指定したログファイルを監視し、更新があるとLogstashやElasticsearch等に出力する。

Moduleとは

  • FilebeatとMetricbeatには一般的なログフォーマット(NGINX、Apache、System、Redis、Docker等)のデータに対応するModuleが存在する。一覧はこちら
    • ModuleによってElasticsearchに取り込ませるデータの変換設定やKibanaによる可視化のためのダッシュボード作成を省略・簡略化できる。
    • 7.0以降、Moduleで定義されるフィールド・データ型はElastic Common Schemaに準拠しており、異なるデータソース間でも統一された検索・分析基盤を構築できる。
    • ex) ユーザー名のフィールドがソースによってuserになったりusernameになったりnginx.access.user_nameになったりせず、user.nameに統一される。
  • 今回はFilebeatのPalo Alto Networks moduleを使う。

やったこと

Palo Alto FWのSyslogサーバーにFilebeatを導入し、新規構築したElasticsearch+Kibanaに出力させて可視化する。

環境

  • Elasticsearch+Kibana
    • Amazon Linux 2 AMI (HVM), SSD Volume Type
    • t2.medium
    • EBS(汎用SSD) 30GiB
  • Syslog+Filebeat
    • Amazon Linux 2 AMI (HVM), SSD Volume Type
    • t2.micro
    • EBS(汎用SSD) 30GiB
  • Palo Alto FW
    • VM-Series Next-Generation Firewall Bundle 1
    • m5.xlarge
    • EBS(汎用SSD) 30GiB
  • AWSのセキュリティグループは適宜開ける

手順

Elalsticsearch+Kibanaのインストールと設定

  • インストール
    • yumで入れる
$ sudo yum install java
$ rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch  
$ sudo vi /etc/yum.repos.d/elastic.repo
/etc/yum.repos.d/elastic.repo
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

[kibana]
name=Kibana repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
$ sudo yum install elasticsearch kibana
  • Elasticsearchの設定
    • Filebeatからの出力をElasticsearchで許可する
    • シングル構成にするときその旨をは明示しないとサービス起動時にエラーになるっぽい
$ sudo vi /etc/elasticsearch/elasticsearch.yml
/etc/elasticsearch/elasticsearch.yml
network.host: 127.0.0.1, <SyslogサーバーのIP>
discovery.type: single-node
  • Kibanaの設定
    • 接続元の制限をかけない
    • elasticsearchの指定(今回は同居しているのでlocalhost)
$ sudo vi /etc/kibana/kibana.yml
/etc/kibana/kibana.yml
server.host: "0.0.0.0"
elasticsearch.hosts: ["http//localhost:9200"]
  • ElasticsearchとKibanaのサービス起動設定
$ sudo /bin/systemctl daemon-reload

$ sudo /bin/systemctl enable elastcisearch.service
$ sudo /bin/systemctl enable kibana.service

$ sudo systemctl start elasticsearch.service
$ sudo systemctl start kibana.service

Filebeatのインストールと設定

  • syslogの設定は割愛

    • Paloからtrafficログとthreatログを受け取って/var/log/pan*.logに配置している前提
  • インストール

    • yumで入れる
$ sudo yum install filebeat
  • Palo Alto Network moduleの有効化・設定
$ sudo filebeat modules enable panw
$ sudo vi /etc/filebeat/modules.d/panw.yml
/etc/filebeat/modules.d/panw.yml
- module: panw
  panos:
    enabled: true
    var.paths: ["/var/log/pan*.log"]
    var.input: "file"
  • Filebeatの設定
    • ElasticsearchとKibanaを指定する
    • 以下は変更箇所のみ、他はデフォルト値
$ sudo vi /etc/filebeat/filebeat.yml
/etc/filebeat/filebeat.yml
setup.kibana:
 host: "<Elasticsearch+KibanaサーバーのIP>:5601"
output.elasticsearch:
 hosts: ["<Elasticsearch+KibanaサーバーのIP>:9200"]
  • Filebeatのセットアップ
    • Moduleのデータ変換設定とダッシュボード設定がElastichsearchとKibanaに反映される
$ sudo filebeat setup -e
  • Filebeatのサービス起動設定
$ sudo systemctl enable filebeat
$ sudo systemctl start filebeat

ダッシュボード確認

  • Kibanaに接続し、Dashboardを確認
  • traffic用とthreat用のダッシュボードが用意されている

余談

さも運用中のSyslogサーバーに導入した感じで書いたが、実際は記事のために突貫でVMのFWとSyslogサーバーを立てたためデータが少なく見栄えしなかった。

参考

インフラエンジニア向けPaloalto Networks VM-Series for AWSを使ってみる
Filebeat
Filebeat module
Elastic Common Schemaについて
Filebeatの性能チューニングポイントまとめ