1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Kinesis FirehoseからSplunkにデータ取り込む際にハマった SSL証明書周りの設定

Last updated at Posted at 2020-04-17

はじめに

これまで様々なAWSのログをSplunkに取り込んできましたが、Kinesis Firehoseを使った VPC Flowログの取り込みの際にハマった SSL証明書の取得(ACM)やそれを利用するために必要なサービス設定まで備忘録のためにまとめておきたいと思います。

ちなみに今回証明書はAWSのACMサービスを活用しているため、SplunkもAWS上にある必要があります。オンプレの場合は今回の記事は全く参考になりませんのでご注意を。

なぜこんなことに

そもそも何故こんな面倒な設定が必要かというと、Kinesis Firehose経由でデータを取りこむためには、SSL通信が必須でして、そのため受信側 (今回はSplunk側)に証明書が必要になります。しかもオラオラ証明書だとエラーになってしまうため、CA署名の証明証が必要になります。ただ普通に購入すると高い!今回は検証なので安く済ませたいのです。

そこでAWSが提供しているフリーの証明書サービス (ACM) を利用したのですが、条件として利用できるサービスが限られております。そのため今回は証明書付与がサポートされているELBを前段に配置しました。また証明書取得の際にDomain登録が必要なのですが、ELBのドメインだとエラーになってしまったため、今回はフリーのドメインを取得することにしました。またDNS管理サービスとしてRoute53が必要になりました。

という経緯でこんな複雑な構成をとるに至りました。(ちょっとした検証をしたかっただけなのに・・・)

Kinesis Firehose を使った VPC Flowログの Splunkへの取り込み方法

基本的な VPC Flowを Kinesisを使ってSplunkに取り込む設定方法はチュートリアルがしっかり整ってまして、そちらをベースに設定を行えば問題なく出来るかと思います。

チュートリアル
https://docs.aws.amazon.com/ja_jp/firehose/latest/dev/vpc-splunk-tutorial.html

image.png

また@kikeyama さんがすでにわかりやすい記事を書かれていたので、そちらも参考にさせて頂きました。(ありがとうございました)
https://qiita.com/kikeyama/items/bb609cb90269019962cb

そのためここでは、チュートリアルに記載されている以外の証明書まわりを中心にまとめたいと思います。

構成イメージ

Kinesis Firehose までの設定や Splunk側の設定は今回の対象外です。チュートリアルなどを参照ください。それ以外の証明書設定やDNS,ELBといったサービスイメージです。Domain名取得には今回Freenomという外部サービスを使いました。
image.png

設定の流れ

  1. DNSサービス設定 (Route53)
  2. Free Domain取得 (Freenom)
  3. 証明書作成 (ACM)
  4. ロードバランサ+証明書設定 (ELB)

1. DNSサービス設定 (Route53)

まずは Route53にてDNSを作成します。
[Route53] - [ホストゾーンの作成]

  1. ドメイン名は後ほど取得予定のドメイン名を記入します。(先にドメイン取得してからでもOK)
  2. タイプは「パブリックホストゾーン」

とりあえず以上です。NSタイプにある4つの name server名は後で利用します。

2. Free Domain取得 (Freenom)

次にFree Domainを取得します。今回は Freenom というサイトを利用しました。
https://www.freenom.com/ja/index.html

まずは好きなDomain名を入力してみます。 .tkとか .mlなど無料で利用できる海外ドメインが現れますので、利用できるドメイン名を .mlなども含めた形で再度検索してから、チェックアウトをクリックします。
image.png

利用期間を選択して、continue します。(最大 12ヶ月まで無料)
image.png

ここで一旦ユーザー登録してログインが必要になります。(海外サイトなので不安な方はお辞めください)

ログインして、[Service] - [MyDomain] に移動します
image.png

チェックインしたDomainが表示されます。その欄の右側の「Manage Domain」をクリック
image.png

Management Tools から Nameservers をクリック
image.png

Route53より、Nameserver 名を4つほどコピペします
image.png

コピペする Route53側のソース元はこちらです。 ns- で始まるものです。
image.png

3. 証明書取得

次に ACMを使って証明書を取得します。

[ACM]-[証明書リクエスト]-[パブリック証明書リクエスト]
ちなみにプライベート証明書で試しましたがエラーになります。

先ほど取得したドメイン名を記入します。ちなみにELBのドメインだと後ほどエラーになりました。
image.png

ここで DNS検証を選びます。Eメール検証だと先ほど登録したドメインのアドレスに確認メールが飛ぶため、今回はDNS検証になります。
image.png

その後そのまま進んで完了させます。

このように検証保留中になっているかと思います。この後DNS検証を行い正式に発行済という状態になります。
image.png

それでは、DNS検証に移っていきましょう。
少し下のドメインの箇所を開くと、CNAMEの名前と値が確認できます。こちらをRoute53に登録していきます。
image.png

再び Route53に戻り、対象のホストゾーンを選択して、「レコードセットの作成」をクリックします。
先ほどの CNAMEの名前と値を登録します。
image.png

Route53側の設定を完了し、これでしばらくすると先ほどの証明書のステータスが発行済に変わります。
image.png

これで証明書取得は完了です。

4. ELB設定

まずは証明書を埋め込むELBを設定します。

[EC2] - [ロードバランサー] - [ロードバランサーの作成]

  1. ロードバランサーの種類は Application Load Balancer を選択します。

  2. リスナーは HTTPS で 443 ポート
    image.png

  3. 証明書は先ほど作った証明書を選択します。
    image.png

  4. セキュリティグループは 443 のみ許可

  5. ターゲットグループの作成。
    HPTTS の 8088を登録します。またヘルスチェックのパスは、 /services/collector/health/1.0
    image.png

  6. 最後に、対象となるSplunkサーバインスタンスを登録

ELBの設定は以上です。

ただし忘れてはならないのが、DNSへのELBを登録です。これを忘れるとDNSに問い合わせても対象のサーバを照会してくれません。そのためRoute53に ELBエイリアスを登録しておく必要があります。

[Route53]-対象の[ホストゾーン]を選択して、「レコードセットの作成」をクリックします。
タイプはAを選択し、エイリアスにすると、ELBドメインが選択できるはずです。
image.png

これでDNS名からELBエイリアスが引けるようになりました。

確認

ブラウザーで作成したドメイン名を httpsで検索すると、[404 Not Found]のエラーメッセージが表示されますが、これは裏では 8088にアクセスしているだけなので当然の結果です。

見て欲しいのは、証明書の鍵のマークをチェックすると、証明書が有効になっているはずです。
image.png

最後に

これで kinesis firehose から splunkにログが流れるはずです。

証明書問題が解決していない場合は、kinesisの方から見ると以下のようなエラーメッセージが表示されます。
image.png

ちなみに kinesis firehoseを使って取り込めるサービスとソースタイプはこちらです。
https://docs.splunk.com/Documentation/AddOns/released/Firehose/Sourcetypes

設定は面倒ですが、ドメインも証明書もフリーで利用出来るので検証などには持ってこいだと思いますのでお試しあれ。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?