Cloudflare Zero Trustで確認できるログについてまとめてみた
はじめに
Cloudflare Zero Trustでの検証中、うまく動作ができているかを確認するためにはログを確認する機会が多くあります。もちろん動作確認だけでなく、運用を行っていく際に何か問題が発生した場合などはログを確認して、問題の把握や原因の調査を行う必要があります。
私自身、Cloudflare ZeroTrustでどの様なログが確認出来て、ログからどんな情報を得ることが出来るのか理解できていない部分も多かったので、今回は簡単にまとめてみました。 今回ご紹介する内容は以下の通りです。
- User log
- Access authentication log
- Gateway activity log
- Posuture
- Logpushについて
ログの確認をする際にお役立てください。
User log
Cloudflare Zero Trustにログインしたユーザー情報を確認することが出来ます。そのユーザー名で登録されているデバイス情報や、最後のログイン、ログインしたロケーション情報などを確認することが出来るようになっています。
ユーザーのリストを表示するにはMy Team > Userに移動します。
このリストから確認したいユーザー名を選択します。
以下が確認できる情報です。
- Cloudflare Accessが有効になっているか
- Cloudflare Gatawayが有効になっているか
- このユーザーに紐づいているアクティブなデバイスの数とデバイスの名前
- 最後のログイン日時
- ユーザーのロケーション情報(特定の国から開始された一意のセッション数)
- 直近のアクティビティ
左側にあるRevokeを選択すると、そのユーザーのアクティブなセッションがすべて終了し、接続されているデバイスへのアクセスがすべて取り消されるようになっています。
Access authentication log
Zero Trustのダッシュボード上で確認できるCloudflare Accessが生成したログで、認証イベントに関してのログを確認することが出来ます。
Cloudflare Accessではユーザーやサービスがアプリケーションにログインしようとした際に、そのログインが成功したか否かに関わらず、ログを記録するようになっています。
Zero Trustダッシュボードからは、メール認証、IdP認証、SAML、OIDCなどのIDベースの認証のログを確認することが可能です。 これらのログは、6か月間保存されるようになっていて、CSVでエクスポートすることも出来ます。
実際に確認できる情報としては下記のとおりです。
- Application - どのアプリケーションにログインしようとしたのか
- Event - どんなアクションを実行しようとしたか(ログインや登録など)
- Email - 認証を試みたユーザーおメールアドレス
- App Type - アプリケーションがセルフホスト型かSaaSであるか
- Decision - アクセスが成功したかどうか
- Country - ユーザーのIPアドレスに関連付けられた国
- Request time - リクエストが行われた時間
アクセスがブロックされた場合にはViewという項目でブロックされたユーザーの詳細やどのポリシーに基づいてブロックされたのかを確認することが出来ます。
ログの量が膨大になってくると、目的のログを見つけるのが困難になるので、フィルター機能を活用しましょう。 以下の内容での絞り込みが可能です。
- Application - どのアプリケーションへのログインか
- Decision - アクセスが成功したかどうか
- App Type - 上記に記載のApp Typeでの絞り込み
- IDP - どの認証方法を使ってログインを試みているか
- Countr - どこの国からのログインか
- Ray ID - リクエストの識別のために付けられたIDでの絞り込み
- Service Auth - IdPログインを必要としない認証フローを含めるか否か
- Date Time Range - ログインを試みた日時
Cloudflare Gateway
Cloudflare GatewayではDNSクエリ、ネットワークパケット、HTTPリクエストログなどを確認することが出来ます。
デフォルトではこれらのすべてのログを記録し表示するような設定になっていますが、ログを無効にしたり、ブロックされたリクエストのログのみを記録するといった設定に変更することもできます。 設定の変更をしたい場合は以下の手順で変更できます。
- Zero Trustにログイン
- Settings > Network へ移動
- Activity Loggingで設定を変更する
また、従業員の個人識別情報(Pll)を安全に処理するためログに記載される情報から除外することも可能です。ここで除外出来るPllは以下のとおりです。
- 送信元IP
- ユーザーのメールアドレス
- ユーザーID
- デバイスID
- URL
- Referer
- ユーザーエージェント
Pllの除外設定も、setting > Network から変更で着るようになっています。
ではさっそくそれぞれのログでどのような情報が確認出来るのかを紹介していきます。
DNS
DNSサーバーにどのような問い合わせがあり、どのような返答をしたのかを記録したDNSのクエリログについて紹介します。 Logs > Gateway > DNS から確認することが可能です。
- DNS - クエリされたドメイン名
- Email - トラフィック発信元のWARPクライアントの登録に使われたメールアドレス
- Action - クエリに適用されたアクション。(例えば、DNSフィルタリングによってブロックされたものにはBlockが表示される。)
- Date - クエリを投げた日時 以上が上記画面で確認可能な項目です。さらに詳細を確認したい場合はドメイン名をクリックすると左側に詳細が表示されます。
DNSクエリログはフィルター機能を使い下記の条件で絞り込みを行うことが可能です。
- Event - クエリに適用されたアクションでの絞り込み(All Action・Allow・Block・Overrid)
- Policy - Firewallpolicyで作成したDNSPolicyに関連したログの抽出が可能
- Data Time Range ‐ 日時での絞り込み。時間は分単位、日付は1か月前の分まで遡って絞り込むことが可能
Network
Logs > Gateway > Netoworkからネットワークのトラフィックを確認することが可能です。 ここで確認できる情報は下記の通りです。
- Source IP - パケットを送信したユーザーのIPアドレス
- Destination IP - ターゲットのIPアドレス
- Action - ルールに基づいて実行されたアクション
- Session ID - セッションを識別するための一意のID
- Time - セッションが行われた日時
詳細を確認すると、これらの情報に加えてどのポリシーに基づいてアクションが実行されたのかや、パケットが送信されたプロトコル、どの国に対してパケット送信を行っているかなどを確認することが可能です。
また以下の条件での絞り込みが可能です。
- Action - セッションに対して行われたアクション(AllowやBlockなど)
- Policy - 関連づいているポリシーでの絞り込み
- Virtual Netowork - クライアントが接続している仮想ネットワークでの絞り込み
- Date Time Range - 日時での絞り込み(一か月前までさかのぼることが可能)
HTTP
Logs > Gateway > HTTPでGatewayを通ったHTTPリクエストのログを確認することが出来ます。 基本的にはHTTPボディの内容はログに記録されませんが、エラーが起きた場合はトラブルシューティングのために30日間ログにボディの情報が記録がされるようになっています。
また、HTTPトラフィックをより正確に分析するためにEnhanced file detectionの設定をすることが可能です。 この設定を行うことでGatewayはヘッダだけでなくボディからファイル情報を読み取ります。
Setting > Network > Enable only cipher suites を有効にすることで設定ができます。
- Host - ヘッダ内のホスト名
- Email - リクエストを行ったユーザーのメールアドレス
- Action - 実行されたアクション(HTTPポリシーを設定することで特定の要素のブロック等が可能)
- Request ID - 該当リクエストに設定された識別のための一意のID
- Time - ログが記録された時間
この情報に加えてログの詳細を確認することで、DLPフィルタリングが実行された場合にどのポリシーにしたがってアクションを実行したのかを確認することが出来たり、ファイルのアップロードやダウンロードがあった際にその詳細について確認することが可能です。
SSH
WARPクライアントとCloudflareのルート証明書をインストールしているデバイスであれば、SSHコマンドのロギングも可能です。
デバイスがSSH経由でオリジンサーバに接続すると、接続したユーザーやセッション期間とともに、セッション中に実行されたすべてのコマンドのログを記録することが出来ます。インシデントが起こった際や攻撃を受けた際の調査に有効です。
また、これらのログはセキュリティ対策として、ユーザーの公開鍵を使って暗号化されるようになっていて、許可されたユーザーのみがSSHコマンドを検査することが出来る仕様となっています。
Logpush
上記で説明したログはCloudflareのLogpushサービスを使用することで、サードパーティの保存先やイベント管理ツール(SIEM)などにログをエクスポートすることが可能です。(Enterprisプランのみ)
Logpushは5分ごとに更新されたログを宛先に出力するようになっています。上記で上げたログの詳しい分析を行いたい方はこちらの機能との統合をおすすめします。
現在、Logpushが出力出来る宛先として有効なサービス配下の通りです。
- Cloudflare R2
- HTTP エンドポイント
- Amazon S3
- S3互換エンドポイント
- Datadog
- Elastic
- Google Cloud Storage
- BigQuery
- Microsoft Azure
- New Relic
- Splunk
- Sumo Logic
- IBM QRadar
Logpush機能を使ってBigQueryでログ分析を行った記事もありますので、こちらも併せてご確認ください。
Posuture
Cloudflare ZeroTrustではデバイスの状態をチェックし、要件を満たしているデバイスのみのネットワークへの接続を許可することで、内部および外部リソースへのアクセス保護が可能です。例えば、特定のソフトウェアがインストールされているかどうか、登録されたシリアル番号に合致したユーザーなのかどうかなどの条件でアクセス制御を行うことが出来ます。
デバイスのポスチャチェックを有効にしている場合にLogs > Posuture からポスチャチェックのログの確認が可能です。
- Devaice name ― 登録されたデバイス名
- Email - デバイス登録時に使用されたメールアドレス
- Posuture name - どのルールによってポスチャチェックが行われたのか
- Conditions met - ルールに記載された要件を満たしたかどうか
- Date - チェックが行われた日付
これらのログを以下の条件で絞り込むことも可能です。
- OS
- Condition met - 要件を満たしたもの/満たしていないもの
- Rule ID - 登録されたルールのID
- Device ID - デバイスのID
- Date Time Range - 日時
まとめ
今回はCloudflare ZeroTrustで記録できるログの種類とどんなことが記載されているのかについてご紹介しました。ユーザー数が多いほど、ログの量はかなり膨大になってくるので、今回ご紹介したフィルター機能での絞り込みやLogpush機能を活用してログ分析基盤にログを出力して分析を行うなどの方法を試してみるのもいいと思います。
個人的には最後に紹介したデバイスのポスチャチェック機能も気になっているので、そこにフォーカスした記事も今後執筆予定です。