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

# Filebeatとは
- Elastic社の軽量ログ収集エージェント群**Beats**の1つ。

![beats.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317139/b7be495c-7a36-c63c-7fcd-302b6d01e33b.png)

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

# Moduleとは
- FilebeatとMetricbeatには一般的なログフォーマット（NGINX、Apache、System、Redis、Docker等）のデータに対応する**Module**が存在する。一覧は[こちら](https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-modules.html)。
  - 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
```

```yml:/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
```

```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
```

```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
```

```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
```

```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を確認
![20191219_140404_3757.JPG]
(https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317139/94f88207-9e80-ee8f-6584-cee5dbb49ab4.jpeg)
- traffic用とthreat用のダッシュボードが用意されている
![20191219_140416_3758.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317139/c18d82f4-276c-2605-6a20-c4c947a42ca4.jpeg)
![20191219_140448_3759.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317139/28df9b7f-1e14-744e-2392-cea77d80df77.jpeg)



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

# 参考
[インフラエンジニア向けPaloalto Networks VM-Series for AWSを使ってみる](https://dev.classmethod.jp/cloud/aws/paloalto-vm-series-for-aws/)
[Filebeat](https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-overview.html)
[Filebeat module](https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-modules-overview.html)
[Elastic Common Schemaについて](https://www.elastic.co/jp/blog/introducing-the-elastic-common-schema)
[Filebeatの性能チューニングポイントまとめ](https://qiita.com/hssh2_bin/items/148945c149074c6dce0f)