Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第117回 雲勉【オンライン】実際の課題から学ぶ:C1WS のメモリ不足の解消と AWS WAF の基本

第117回 雲勉【オンライン】実際の課題から学ぶ:C1WS のメモリ不足の解消と AWS WAF の基本

iret.kumoben

October 18, 2023
Tweet

More Decks by iret.kumoben

Other Decks in Technology

Transcript

  1. アイレット株式会社
    CI事業部_Sセクション
    日下 憧
    実際の課題から学ぶ:C1WS のメモリ不足の解消と AWS WAF の基本
    第117回 雲勉【オンライン】
    C1WS のメモリから学ぶメモリ断⽚化の解消について

    View full-size slide

  2. 0.講師自己紹介
    2
    ■ 日下 憧 (くさか しょう)
    ● クラウドインテグレーション事業部 セキュリティセクション 東京第一 G
    C1WSの初期構築・運用、WafCharmの販売代行などを行っています。
    ● 2022年1月入社 (アイレット歴1年10ヶ月)
    ● 応援している野球チームが暗黒期を迎えそうで複雑な心境です。

    View full-size slide

  3. アジェンダ
    3
    0. 自己紹介
    1. C1WSについて
    2. C1WSのメモリ不足イベントについて
    3. メモリとは
    4. メモリの断片化(フラグメンテーション)について
    5. 断片化の解消方法について
    6. おわりに

    View full-size slide

  4. 本日のゴール
    4
    メモリの断片化とその解消方法について理解しよう!

    View full-size slide

  5. 今回お話しないこと
    5
    ● 詳細な設定や機能について
    ● 事例以外の固有の製品について

    View full-size slide

  6. CONFIDENTIAL
    1.C1WSについて

    View full-size slide

  7. C1WSについて
    7
    ■ 概要
    Trend Micro Cloud One – Workload Security (以降C1WS)は
    サーバ保護に必要な複数のセキュリティ機能を提供する
    クラウド型総合 サーバセキュリティサービスです。
    Agentをサーバにインストールすることで、脆弱性対策や多層防御を提供されます。
    ■ Deepsecurity との違い
    DeepSecurityは自前でサーバを用意しDeepSecurityManagerをインストール・構築します。
    DeepSecurity as a Service(現C1WS)は、DeepSecurityのSaaS版であり
    トレンドマイクロ社が管理しているManagerを利用して、ブラウザ上から利用することが
    可能です。

    View full-size slide

  8. C1WSについて
    8
    Agentをインストールしたサーバに下記機能を提供します。
    ● 不正プログラム対策
    ● IPS/IDS(侵入防御)
    ● ファイアウォール
    ● 変更監視
    ● セキュリティログ監視
    ● etc…
    Trend Micro
    C1WSのユーザー(アイレット)
    Amazon EC2
    お客様AWS環境
    ■ 構成イメージ
    Amazon EC2
    ■ 提供機能

    View full-size slide

  9. C1WSについて
    9
    ■ 侵入防御機能について
    保護対象はL3〜L6(一部L7まで対応が可能)
    アプリケーション・ソフトウェアまたはOSの既知の脆弱性対する攻撃からコンピュータを保護します。
    侵入防御ルールを割り当て、通信がそのルールに合致するかを確認します。
    例) XSS、SQLiを保護するルール・Apacheや各種OSのバージョン対するルール など
    処理:検出モードの場合 – 検知イベントが作成され、その通信は遮断されません。
    →誤検知が生じやすいルールや仮運用期間などに利用。
    防御モードの場合 – 検出イベントが作成され、その通信は遮断される。
    9

    View full-size slide

  10. CONFIDENTIAL
    2.C1WSのメモリ不足イベントについて

    View full-size slide

  11. C1WSのメモリ不足イベントについて
    11
    ■ 概要
    侵入防御機能のイベントとして記録される「メモリ不足 (Out of Memory)」イベントは
    C1WSのネットワークエンジンが必要としている
    連続したカーネルメモリを確保できない場合に記録されます。
    つまり
    C1WSの侵入防御機能で検知に必要とされるメモリの確保に失敗した状態であり
    サーバ自体のメモリが十分に空いていても事象が発生します。

    View full-size slide

  12. C1WSのメモリ不足イベントについて
    12
    ■ イベントが発生したらどうなるのか?
    侵入防御機能を有効にしているAgentでは検知した通信を
    ひとつずつ割り当てられているルールに該当するかどうかを確認しています。
    イベントが発生したら
    その通信が割り当てられているルールに該当するかの確認をやめます。
    検知した通信を全て遮断してしまうことから、正常な通信も遮断することがあります。

    View full-size slide

  13. C1WSのメモリ不足イベントについて
    13
    ■ 実際の検知したイベント その1
    メモリ不足が発生したことで、発生中の通信は全て遮断されています。

    View full-size slide

  14. C1WSのメモリ不足イベントについて
    14
    ■ 実際の検知したイベント その2
    メモリ不足イベントの詳細 他のルールの詳細

    View full-size slide

  15. C1WSのメモリ不足イベントについて
    15
    ■ 考えられる原因
    前提として、サーバ全体のメモリが十分な空き容量があるにも関わらず
    当イベントが多発している場合、以下の要因が想定されます。
    ・メモリが断片化している
    ・特定の通信を監視する侵入防御ルールの数が多すぎる
    ・通信量が多く、C1WSが侵入防御機能に必要なカーネルメモリの慢性的な不足
    今回は3つのケースのうち「メモリが断片化している」場合についてお話します。

    View full-size slide

  16. C1WSのメモリ不足イベントについて
    16
    ■ メモリが断片化していない場合の解消方法
    ・不要な侵入防御ルールの割り当て解除
    監視する侵入防御ルールの数が多すぎることが原因の場合、
    割り当てられている侵入防御ルールを減らすことで解消することがあります。
    ※ただし、具体的なルール数は不明確であり
    サーバの用途やスペックによってルール数が多くても事象が発生しないことがあります。
    ・サーバのスペック自体をあげる
    カーネルメモリは物理メモリ量に応じて割り当てられますので、
    サーバのスペックを上げて物理メモリの増やすという方法です。

    View full-size slide

  17. CONFIDENTIAL
    3.メモリについて

    View full-size slide

  18. メモリについて
    18
    ■ メモリとは
    メモリとは、データを記録する部品のことです。
    基本的にRAM(Random Access Memory)のことを指します。
    ストレージなどから読み出したデータを一時的に記録しておく場所です。
    よくPCの部品を説明するときに
    メモリは「作業する机」と表現されることが多いです。
    つまり、メモリが大きければ大きいほど、作業スペースが大きいことから
    同時に行える作業の数が増えたり、処理の負担が大きい動作でも行えるようになります。

    View full-size slide

  19. メモリについて
    19
    ■ CPUとは
    PCのシステムの中心となって処理を行う部品のことです。
    Central Processing Unit(セントラル プロセッシング ユニット)」の略称で
    計算能力やデータの操作、電子部品の制御などを行います。
    よくPCの部品を説明するときに
    CPUは「人間の脳みそ」と表現されることが多いです。
    CPUの性能が高いほど動作は快適で重い処理もこなせるようになります。

    View full-size slide

  20. メモリについて
    20
    ■ ストレージとは
    SSDやHDDといったストレージは、データを長期間にわたって保管しておく場所です。
    よくPCの部品を説明するときに
    ストレージは「収納BOX」と表現されることが多いです。
    ストレージはメモリと比べると、データにアクセスするのに時間がかかるため、
    データの一時的な保管場所としてはメモリが使用されます。

    View full-size slide

  21. Mem:メインメモリのサイメインメモリのサイズ
    total:総容量
    used:使用量
    free:空き容量
    shared:共有メモリの使用量
    buff/cache :カーネルバッファとキャッシュ
    available: 空き容量の free に加えて、buff/cache のうちすぐに解放できる領域
    Swap:スワップ領域のメモリサイズ
    メモリについて
    21
    ■ メモリの使用量について(Linuxの場合)
    ・各項目について
    [ec2-user@ip-172-31-11-74 ~]$ free -m
    total used free shared buff/cache available
    Mem: 952 580 134 0 237 234
    Swap: 0 0 0
    [ec2-user@ip-172-31-11-74 ~]$

    View full-size slide

  22. CONFIDENTIAL
    4.メモリの断片化(フラグメンテーション)について

    View full-size slide

  23. メモリの断片化(フラグメンテーション)について
    23
    ■ メモリの断片化とは
    メモリの断⽚化とは、空きメモリが⼗分あるにも関わらず
    メモリ確保に失敗する状態のことです。
    メモリの空き領域はあるはずが、
    虫食いのような状態で小さな領域が飛び飛びになっていることで
    実際には使用できない状態になってしまったことのことです。

    View full-size slide

  24. メモリの断片化(フラグメンテーション)について
    24
    空き100GB
    初期化状態
    空き90GB
    Aで10GB
    製品Aで10GB使用
    空き70GB
    Aで10GB
    Bで30GB
    製品Bで30GB使用
    空き40GB
    Aで10GB
    Bで30GB
    製品Cで20GB使用
    Cで20GB
    空き10GB
    空き40GB
    Bで30GB
    製品Aの10GB解放
    Cで20GB
    空き10GB
    空き20GB
    Bで30GB
    製品Dの20GB使用
    Cで20GB
    Dで20GB
    空き10GB
    空き20GB
    空き20GB
    Bで30GB
    製品Cの20GB解放
    Dで20GB
    ■ 断片化が起こる流れ
    空き10GB
    空き20GB
    空き20GB
    Bで30GB
    製品Eの30GB使用するも・・・
    Dで20GB
    Eで30GB

    View full-size slide

  25. メモリの断片化(フラグメンテーション)について
    25
    ■ 断片化の状態とは
    [ec2-user@hogehoge ~]$ cat /proc/buddyinfo
    Node 0, zone DMA 1 0 0 1 2 1 1 0 1 1 3
    Node 0, zone DMA32 15084 14214 10944 503 3 0 0 0 0 0 0
    Node 0, zone Normal 20306 15297 1615 233 48 4 1 0 0 0 0
    [ec2-user@hogehoge ~]$
    断片化の状態は proc/buddyinfo から確認することができます。
    値が左に偏ると断片化しています
    断片化している場合
    [ec2-user@hogehoge ~]$ cat /proc/buddyinfo
    Node 0, zone DMA 1 0 0 1 2 1 1 0 1 1 3
    Node 0, zone DMA32 3 3080 7928 4671 1924 1166 934 972 921 16 7
    Node 0, zone Normal 1442 319 1544 3775 2591 2051 1531 1336 1248 0 0
    [ec2-user@hogehoge ~]$
    断片化していない場合

    View full-size slide

  26. CONFIDENTIAL
    5.断片化の解消方法について

    View full-size slide

  27. 断片化の解消方法について
    27
    ■ 断片化を解消する方法
    1. OS を再起動する
    2. compact_memory への書き込み ※OS を再起動しない場合
    3. 何もしない
    ※(キャッシュクリアをする ※OS を再起動しない場合)
    断片化を解消する方法は以下になります。

    View full-size slide

  28. 断片化の解消方法について
    28
    ■ compact_memory への書き込みでの解消方法
    /proc/sys/vm/compact_memory に以下を書き込むことで断片化が解消されます。
    上記を書き込むことで、すべてのZONEが圧縮されて
    可能な限りの連続する空きページフレームが利用可能になります。
    ※この機能は CONFIG_COMPACTION が有効化されていることが前提ですが
    kernel version 2.6.29 にて有効化されておりますことから
    有効化されていることが普通という考えで問題ないです。
    # echo 1 > /proc/sys/vm/compact_memory

    View full-size slide

  29. 断片化の解消方法について
    29
    ■ 実例紹介
    コマンドを直打ちするのではなく、cronによる設定を実施しました!
    【cronでコマンドを実施した理由】
    ● メモリ不足の事象が長らく続いていたこと
    ● 事例がなく1回のコマンド実施で効果があるか不明であったため
    0 22 * * * echo 1 > /proc/sys/vm/compact_memory

    View full-size slide

  30. 断片化の解消方法について
    30
    ■ 実施結果
    実施前
    無事断片化が解消し、メモリ不足のイベントも発生しなくなりました!
    [root@*** ~]# cat /proc/buddyinfo
    Node 0, zone DMA 1 0 0 1 2 1 1 0 1 1 3
    Node 0, zone DMA32 10173 23877 18123 10419 6440 3538 1565 346 29 0 0
    Node 0, zone Normal 24112 64261 47521 21348 8110 3465 1137 132 3 1 0
    実施後
    [root@*** ~]# cat /proc/buddyinfo
    Node 0, zone DMA 1 0 0 1 2 1 1 0 1 1 3
    Node 0, zone DMA32 215 1230 1491 1642 1130 699 493 357 270 227 249
    Node 0, zone Normal 4261 4524 3835 3335 3002 1535 918 460 261 314 367

    View full-size slide

  31. メモリ不足の解消方法(補足)
    31
    ■ キャッシュクリアの実施による解消
    # echo 3 > /proc/sys/vm/drop_caches
    C1WSのメモリ不足イベントでは
    上記のコマンドでOSキャッシュをクリアすることで解消した事例がございます。
    要するに、/proc/sys/vm/drop_cachesというファイルに数値を設定するだけです。
    ※cronで実施するケースが多いです。

    View full-size slide

  32. まとめ
    32
    ● C1WSのメモリ不足イベントはすべての通信を遮断する
    ● メモリの断片化は、メモリの割り当てと解放の繰り返しで発生しやすい
    ● メモリの断片化は、compact_memory への書き込みで解消される

    View full-size slide

  33. おわりに
    33
    ご清聴いただきありがとうございました!

    View full-size slide