wazuhでPCのセキュリティ監査、脆弱性管理を考えてみる

背景

私は元コーポレートエンジニアです。(今もコーポレートIT領域を兼任してますが心はセキュリティエンジニア)。コーポレートエンジニア時代、スタートアップ界隈を見るとmacOSはJamf Proでセキュリティ設定を行い、WindowsはIntuneでセキュリティ設定を行うという光景をよく見ました。

課題

そのような背景の中で、セキュリティ設定はしたものの設定値を強制すること(変更できないようする)は中々難しいです。(Jamf Proで一部可能です)

PC初期設定の段階ではちゃんとセキュリティ設定はされているけど、運用していく中でその設定がどうなっているのか、という課題を持ちました。その解決として、可視化したい、設定のチェックをしたい、可能であれば強制したいと思い始めます。

※Jamf Proでもスクリプトを書くことで設定値が外れてるかどうかは実現可能です。ただ結構大変でしたw

wazuhを活用することを考える

そんな課題をモヤモヤと抱えているなかでJamf Protectであればセキュリティ設定の監査ができるというのは知っていましたが、導入までには至りませんでした。そして、前職では自分でコード書いて、というのも裏でやっていましたが、途中で挫折した過去がありました。

そこでたまたま教えてもらったwazuhでこの課題が解決できそうというを知りました。

このwazuhは色々な機能があるのですが、PCに対して適用した場合の機能としてPCのセキュリティ設定の監査機能(macOS、Windows)、Slack通知、脆弱性スキャン機能を試してみたところ、上記の課題解決の方法としてはありだなという印象を持ちました。

OSSだと運用が大変になるので最初はスモールスタートでOSS+IaaSで運用しつつ、本格的にやるぞってなったらSaaS版(有償)に切り替えるのが良さそうです。

wazuhの設定

以降、エンジニア向けの技術情報です。

いきなり設定からですが、インストールはドキュメント読めば簡単にできます。AWSのMarket Placeを使うのがラクかと思います。

設定はドキュメントを読んでも最初はかなり難解です。なのでこのブログと並行してドキュメントを読むのを推奨です。

セキュリティ監査機能

macOS

まずはメイン機能のセキュリティ設定の監査です。

wazuhサーバ側の操作になります。
ポリシーファイル(xxxx.yml)をコピーしてきて該当フォルダに入れます。
そしてそのポリシーファイルのパスを設定ファイルに設定するだけです。

該当フォルダ : /var/ossec/etc/shared/default/
設定ファイル : /var/ossec/etc/shared/default/agent.conf

$ cd /var/ossec/etc/shared/default/
$ ll | grep cis_apple_macOS_11.1.yml 
-rw-r----- 1 root  wazuh  77005 Jun  3 09:48 cis_apple_macOS_11.1.yml
$ cat /var/ossec/etc/shared/default/agent.conf 
<agent_config>

  <!-- Shared agent configuration here -->
    <sca>
        <policies>
            <policy>etc/shared/cis_apple_macOS_11.1.yml</policy>
        </policies>
    </sca>

</agent_config>

私の場合、エージェントを入れたmacOSがMonterey(12.3.1)で対応するポリシーがなかったのでバージョン違いの11.1のポリシーを使っています。
このポリシーファイルには冒頭にバージョンチェックがあるのでそこを書き換えてポリシー適用できるようにする必要があります。

具体的にはrules以下の3行を書き換えています。

requirements:
  title: "Check macOS version."
  description: "Requirements for running the SCA scan against macOS 11.x (Big Sur)."
  condition: any
  rules:
    - 'c:sw_vers -> r:^ProductVersion:\t*\s*12\p'
    - 'c:system_profiler SPSoftwareDataType -> r:System Version:\.*12\p'
    - 'c:defaults read loginwindow SystemVersionStampAsString -> r:^\t*\s*12\p'


その後に、一度スキャンをする必要があるのでエージェント側(今回はmacOS)でプロセスを再起動してスキャンを実行させます。その後にログファイルを確認し、ポリシーチェックの開始と完了が確認できればOKです。

※エージェント側でプロセスを再起動する前にwazuhサーバで設定したポリシーが反映されてるか確認したほうがよいです。

$ pwd
/Library/ossec/etc/shared
$ ls -la | grep cis_apple_macOS_11.1.yml 
-rw-r--r--   1 wazuh  wazuh   77216 Jun 22 23:23 cis_apple_macOS_11.1.yml
$ /Library/ossec/bin/wazuh-control restart
$ cd /Library/ossec/logs
$ tail -f ossec.log
2022/06/23 09:20:07 sca: INFO: Starting evaluation of policy: '/Library/Ossec/etc/shared/cis_apple_macOS_11.1.yml'
(中略)
2022/06/23 09:20:59 sca: INFO: Evaluation finished for policy '/Library/Ossec/etc/shared/cis_apple_macOS_11.1.yml'

すべてが正常になっていればWebダッシュボードで下記のように見えるはずです。個別のチェックに対してFailed、Passedが右に表示され、PC単位でセキュリティ設定のギャップが見れます。

PCごとのチェック結果

Eventsタブで少しデータを弄ると下記のように全PCのfailed結果が一覧でわかります。右端にホスト名を表示させているのでどのPCが該当するかわかります。

全PCのfailed結果(設定がポリシーと異なっている一覧)


Windows

Windowsは特にやることはなく、WindowsPCにエージェントをインストールするだけで適切なポリシーが自動で適用されます。

もしポリシーを変更したい場合はmacOSと同様に行うとできそうです。

Windowsのチェック結果


Slack通知機能

wazuhサーバ側で設定を行います。設定後プロセスを再起動します。

$ vi /var/ossec/etc/ossec.conf
<ossec_config>
  <integration>
    <name>slack</name>
    <hook_url>https://hooks.slack.com/services/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</hook_url>
    <alert_format>json</alert_format>
    <level>9</level>
  </integration>
</ossec_config>
$ systemctl restart wazuh-manager

今回はファイアウォールのステルスモードを無効にしました。設定がPassedからFailedになったときに通知されます。逆のパターンのときは通知されません。

Slack通知

脆弱性スキャン

wazuhの機能は脆弱性をスキャンして確認できるだけで自動でパッチ適用する仕組みはないです(たぶん)

脆弱性スキャン機能は最初無効になっているため、設定ファイルで有効にする必要があります。その後、wazuhマネージャを再起動します。

$ pwd
/var/ossec/etc
$ vi ossec.conf
  <vulnerability-detector>
    <enabled>yes</enabled>
    <interval>5m</interval>
    <min_full_scan_interval>6h</min_full_scan_interval>
    <run_on_start>yes</run_on_start>
$ systemctl restart wazuh-manager

そうするとWebダッシュボードに下記のように表示されます。

PCごとの脆弱性スキャン結果

これもセキュリティ監査機能と同様にEventsタブでデータをいじると全PCの脆弱性スキャン結果が見れます。これも右端にホスト名を表示させています。

全PCのSeverityがHigh以上の脆弱性

脆弱性スキャンの問題点は通知が大量にされるという点です。細かく通知を制御できるといいのですが、今のところ方法はわかっていません。

まとめ

さてここまでPCのセキュリティ監査に関する課題とwazuhでの解決方法、そしてエンジニアリング部分について簡単に説明してきました。

これ以外にもログ管理や実行コマンドの監視もできるようです。いつか検証したらこれも記事にしたいと思います。

PCに対してここまでセキュリティ管理するかどうか、というのは議論のポイントの1つですが、デバイスに対する攻撃を想定し、そのリスクを重く見ている場合は検討してみてもよいかもしれません。

この記事が気に入ったらサポートをしてみませんか?