こんにちは、SB C&Sの片山です。
本日はランサムウェア対策としても有効なNutanix FilesのWORM機能についてご紹介します。
WORM(Write Once Read Many)とは
WORMとは「Write Once Read Many」の略で、一度データを書き込んだら変更・削除ができないようにする仕組みのことです。身近な例としては、CD-RやDVD-RなどがWORM型メディアに当たります。
近年、ランサムウェアによって企業のデータが暗号化され、身代金を要求されるケースが急増しています。ランサムウェアによる被害を防ぐため、このWORMの仕組みを使って大事なデータを暗号化から守るという対策手法が取られるようになりました。
WORM機能を利用し、重要なデータやバックアップデータを改ざん/暗号化できない状態にしておくことで、万が一ランサムウェアに侵入されたとしても、重要なデータを暗号化から守ることができ、さらにバックアップデータを削除されて復元できないという事態も回避することができます。
本日は、Nutanixをファイルサーバーとして使用する際にWORM機能を有効にする方法と、有効にした場合どのようにファイルの状態が変化するのかについてご紹介したいと思います。
Nutanix FilesのWORM機能について
おさらいですが、Nutanix Filesは、Nutanixによる共有ストレージの一部をファイルサーバーとして利用する機能です。Nutanix Filesで提供されているWORM機能について簡単にご紹介します。
Nutanix Filesで共有フォルダ(Share)を作成する際に、WORM機能を有効にすることで、その共有フォルダに置かれたファイルは以下のように状態が変化します。
まずファイルがフォルダにアップロードされてから、一定時間は通常のフォルダと同様にファイルを編集したり、削除したりできます。このファイルを操作可能な時間のことを「クールオフ間隔」と呼びます。
クールオフ間隔が経過するまでにフォルダ上のファイルに変更を加えると、その時点でクールオフ間隔が0にリセットされ、またクールオフ間隔のカウントがスタートします。
そして、クールオフ間隔が過ぎるとファイルは読み取り専用になり、編集・削除できない状態で一定期間そのフォルダで保存されます。この期間のことを「保存期間」と呼びます。
保存期間が過ぎると、ファイルは削除のみ可能な状態となります。
これが基本的なNutanix FilesにおけるWORM機能となります。次章ではWORM機能を利用するための設定方法や、実際に共有フォルダに置いたファイルがどのように変化するかについてご紹介します。
WORM機能の設定方法
1.WORM機能を有効にした共有フォルダの作成
WORM機能は既に作成された共有フォルダに対して有効にすることはできないため、新規に共有フォルダを作成する必要があります。
現在のところWORM機能を有効にした共有フォルダの作成はコマンドでしか行えないため、FSVMに対してSSH接続し以下のコマンドを実行してWORM機能を有効にした共有フォルダを作成します。
nutanix@fsvm$ afs share.add share_name worm_enabled=true
share_nameには任意の共有フォルダ名を入力します。worm_enabledというパラメータをtrueに設定することで作成する共有フォルダに対しWORM機能を有効化できます。
コマンドを実行し、上記の画像のように「Share-create operation finished successfully」と表示されたら共有フォルダの作成完了です。
注意事項として、Nutanix FilesのWORM機能はFilesバージョン4.1で実装されたため、WORM機能について検証する際はFilesをバージョン4.1以降にアップデートする必要がございます。(後ほどバージョン4.2.1にて実装されたWORM機能についても紹介いたします)
それでは以下のコマンドを実行し、先ほど作成した共有フォルダのWORMに関する情報を確認します。share nameには先ほど作成した共有フォルダ名を入力します。
nutanix@fsvm$ afs worm.spec share_name=share name
共有フォルダの情報が表示されます。デフォルトでは、クールオフ間隔は600秒、保存期間としては31449600秒(52週間)が設定されることが分かります。それぞれの値はあとから変更することはできませんので、指定したい場合は共有フォルダ作成時に設定する必要があります。(設定方法については項目3で解説)
また、GUIの管理コンソールから作成した共有フォルダを確認したところ、GUIからでは各共有フォルダがWORM機能を有効にしているかどうかが分からないため、共有フォルダにはWORM機能を有効にしていることを示す名前を付けるのがおすすめです。
2.検証:WORM機能を有効にした共有フォルダにファイルをアップロード
それでは先ほど作成した共有フォルダにファイルをアップロードしてみます。
「おはようございます」と書かれたtest1.txtというファイルを15:16に共有フォルダにアップロードしました。
アップロードしてすぐの状態で、さらに「こんにちは」と追記し上書きすると成功しました。
次に、クールオフ間隔10分間が経過した後15:30に再度ファイルに「こんばんは」と追記し上書きしてみます。
すると、先ほどはそのまま上書き完了となりましたが、今度は名前を付けて保存の画面に遷移し、さらにtest1.txtファイルを選択して保存・上書きを実行すると、画面のように「読み取り専用に設定されています」と表示され上書きできなくなりました。
ファイルのプロパティを確認すると読み取り専用モードになっていることが分かります。読み取り専用のチェックを外そうとしたり、ファイル名や権限を変更しようとしても実行することはできませんでした。
また、別のファイルにてクールオフ間隔10分間が経過する前にファイルに上書きを行い続ける検証を行ったところ、想定通りファイルに上書きする度にクールオフ間隔がリセットされ、最後の書き込みから10分経過後に読み取り専用に変化しました。
デフォルトの設定だと保存期間が終了するのに52週かかるため、次の項目でクールオフ間隔と保存期間を指定して共有フォルダを作成したいと思います。
3.WORM機能に関するパラメータの設定方法
WORM機能を有効にした共有フォルダを作成する際、いくつかのWORM機能に関するパラメーターを設定することができます。今回はクールオフ間隔を3分、保存期間を10分に指定した共有フォルダを作成してみます。
また、このクールオフ間隔と保存期間に関してですが、現状特に上限値などは設けられていないようで、例えば保存期間100年(3153600000秒)なども設定可能でした。ですので例えばクールオフ間隔1秒、保存期間100年と設定すればアップロードされたファイルを半永久的に読み取り専用にして保存するような共有フォルダを作成することも可能です。(クールオフ間隔0秒も設定できますが、その場合共有フォルダへのファイルのアップロードが失敗しました)
4.検証:WORM機能を有効にした共有フォルダにファイルをアップロード
それでは、項目3で作成した共有フォルダにファイルをアップロードします。
test4.txtというファイルを10:51にアップロードしました。クールオフ間隔3分が経過した後、10:55にファイルを上書きしようとすると失敗しました。ファイルも読み取り専用になっているので、指定したクールオフ間隔がきちんと設定されていることが分かります。
さらに、保存期間の10分が過ぎた後、ファイルのプロパティを確認するとアーカイブにだけチェックが入っている状態に変化していました。ファイルの上書き・名前変更などはできませんが、ファイルの削除を行うと、削除することができました。
このように、WORM機能を有効化した共有フォルダにアップロードされたファイルは、クールオフ間隔経過後読み取り専用状態になり、保存期間終了後は削除のみ可能な状態になることを検証にて確認することができました。
5.誤ってファイルをアップロードしてしまった場合の削除方法
WORM機能を有効にした共有フォルダにファイルをアップロードすると、クールオフ間隔が経過し保存期間に入った後は保存期間が終了するまでは基本的に削除することはできません。
しかし、以下の特権ユーザーによる削除コマンドを使用することで保存期間中のファイルを削除することができます。share_nameは共有フォルダ名、file_pathには削除したいファイルのパスを入力します。
nutanix@fsvm$ afs worm.priv_delete share_name path=file_path
worm-share7という名前の共有フォルダにアップロードされたtest12.txtというファイルを削除してみたいと思います。worm-share7はクールオフ間隔1秒、保存期間100年に設定された共有フォルダなので、このフォルダにあるファイルはすべて保存期間中に該当します。
fsvmにSSH接続し、削除コマンドを実行します。コマンド実行後、フォルダを確認するとファイルが削除されたことが分かります。
補足ですがこちらのコマンドは保存期間中のファイルに対して使えるものです。クールオフ間隔中や保存期間終了後のファイルをこちらのコマンドで削除することはできませんのでご注意ください。
6.特権ユーザーによる保存期間中のファイル削除を防ぐ方法
項目5の特権ユーザーによる保存期間中のファイル削除機能は、主に誤ってアップロードしたファイルを削除するためのものですが、より厳格にファイルサーバーを運用したい場合欠点となる機能でもありました。
そこで、Nutanix Filesバージョン4.2.1から、特権ユーザーによるファイル削除を無効にする「コンプライアンスモード」が登場しました。
WORM機能を有効化した共有フォルダを作成する際に、worm_complianceというパラメータにtrueを設定することで、作成した共有フォルダにおいて保存期間中も特権ユーザーによるファイル削除を防ぐことができます。一度コンプライアンスモードに設定した共有フォルダは、コンプライアンスモードを無効にすることはできませんのでご注意ください。
worm-complianceという名前の共有フォルダを作成します。worm_complianceにtrueが設定されていることが共有フォルダの情報からも確認できます。
作成した共有フォルダにtest13.txtというファイルをアップロードします。プロパティからもファイルが読み取り専用になっており、保存期間中であることが確認できます。
それではこの状態で、項目4で実行した特権ユーザーによるファイル削除コマンドを実行します。test13.txtファイルを削除しようとすると、削除は失敗し「test13.txt,possibly because the share is in compliance mode」と表示されます。共有フォルダをコンプライアンスモードに設定しているため、特権ユーザーによるファイル削除が失敗したことが確認できました。
7.リーガルホールド機能の設定方法
また、Nutanix Filesバージョン4.2.1から共有フォルダをコンプライアンスモードに設定後、さらにリーガルホールド機能を有効化することもできるようになりました。リーガルホールド機能を有効化することで、保存期間終了後のファイルも削除できなくなるため、訴訟等に必要な証拠をそのままの状態で安全に保存することができます。
設定方法は、まず項目6と同様にWORM機能を有効化した共有フォルダを作成する際worm_complianceにtrueに設定します。共有フォルダ作成後、下記コマンドを実行し作成した共有フォルダに対してリーガルホールド機能を有効にします。
nutanix@fsvm$ afs worm.edit share_name=share name legal_hold=true
共有フォルダworm-legalholdに対してリーガルホールド機能を有効に設定しました。共有フォルダの情報からもlegal_holdがtrueに設定されていることが確認できます。また、このlegal_hold機能はいつでも有効/無効を切り替えることが可能です。
共有フォルダworm-legalholdにファイルをアップロードします。保存期間終了後にファイルのプロパティを確認すると、今までと異なり保存期間終了後も読み取り専用にチェックが入ったままになっていることが確認できました。
おわりに
Nutanix FilesのWORM機能についてご紹介させていただきました。ランサムウェア対策として、少しでも皆様のお役に立てれば幸いです。
他のおすすめ記事はこちら
著者紹介
SB C&S株式会社
ICT事業本部 技術本部 第3技術部 2課
片山 佑香