0
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?

Amazon FSx for NetApp ONTAPのウイルス対策機能ARPを有効にしてみる

0
Posted at

NetAppでSales Specialistをしている小寺です。昨日はAmazon FSx for NetApp ONTAP(以下、FSx for ONTAP)のウイルス対策機能であるARPの仕組みについてご紹介しました。こちら

今日は、実際にARPを有効にして、動作を確認してみます。

ARPを有効にしてみる

有効化の手順を参考にボリューム「vol1」でARPを有効にします。

::> version
NetApp Release 9.17.1P2D1: Wed Nov 19 09:35:42 UTC 2025


FsxId0cbc79bab7970edad::> security anti-ransomware volume enable -volume vol1 -vserver fsx


::> security anti-ransomware volume show
Vserver    Volume           State            Dry Run Start Time
---------- ---------------- ---------------- ------------------
fsx        vol1             enabled          -

::>

他に攻撃を受けたときの設定も確認します。

::>  security anti-ransomware volume attack-detection-parameters show -vserver fsx -volume vol1
                                             Vserver Name : fsx
                                              Volume Name : vol1
           Block Device Auto Learned Encryption Threshold : 0
            Is Detection Based on High Entropy Data Rate? : true
  Is Detection Based on Never Seen before File Extension? : true
                  Is Detection Based on File Create Rate? : true
                  Is Detection Based on File Rename Rate? : true
                  Is Detection Based on File Delete Rate? : true
           Is Detection Relaxing Popular File Extensions? : true
                High Entropy Data Surge Notify Percentage : 100
                 File Create Rate Surge Notify Percentage : 100
                 File Rename Rate Surge Notify Percentage : 100
                 File Delete Rate Surge Notify Percentage : 100
 Never Seen before File Extensions Count Notify Threshold : 5
       Never Seen before File Extensions Duration in Hour : 48

::>

ARPを試してみる

KBのランサムウェア攻撃の検知を簡単にテストする方法を参考にしています。NetAppのサポートIDがある方はログインして閲覧可能です。
存在しない拡張子ファイルを複数作り、複数回書き込み等を行い、エントロピーが高い状況を作っています。

#!/bin/sh
# POSIX-compatible ARP ext test (no bash arrays/functions)

set -eu

# ===== 設定 =====
TARGET_DIR="/mnt/fsx_vol1"   # ここを実環境のマウントパスに
FILE_SIZE_KB=256             # 1ファイルあたりの初回書き込みサイズ(KB)
WRITE_LOOPS=3                # 同一ファイルへの追記ループ回数
COPY_ROUNDS=2                # 全ファイル一括コピー回数
PAUSE_SEC=1                  # 操作間の待ち秒数
EXT_PREFIX="novel"           # 未既知拡張子のプレフィックス
COUNT=50                     # 生成する拡張子/ファイルの数

# ===== 前提チェック =====
if [ ! -d "$TARGET_DIR" ]; then
  echo "ERROR: TARGET_DIR '$TARGET_DIR' が存在しません。" 1>&2
  exit 1
fi

if [ ! -w "$TARGET_DIR" ]; then
  echo "ERROR: TARGET_DIR '$TARGET_DIR' に書き込み権限がありません。" 1>&2
  exit 1
fi

# ===== 作業ディレクトリ =====
RUN_ID=$(date +%Y%m%d_%H%M%S)
WORK_DIR="$TARGET_DIR/arp_test_$RUN_ID"
mkdir -p "$WORK_DIR"

echo "== 開始: 未既知拡張子ファイルの作成・I/O・コピー =="
echo "ターゲット: $TARGET_DIR"
echo "作業ディレクトリ: $WORK_DIR"

# ===== 拡張子リスト生成(ファイルに書き出し)=====
EXT_LIST_FILE="$WORK_DIR/ext_list.txt"
: > "$EXT_LIST_FILE"

i=1
while [ "$i" -le "$COUNT" ]; do
  # ランダム英数字5文字生成(/dev/urandom → tr → cut)
  rand=$(dd if=/dev/urandom bs=1 count=16 2>/dev/null | tr -cd 'a-z0-9' | cut -c1-5)
  # 01, 02...のゼロパディング
  pad=$(printf "%02d" "$i")
  echo "${EXT_PREFIX}_${pad}${rand}" >> "$EXT_LIST_FILE"
  i=$((i+1))
done

# ===== 1) ファイル作成 & 初回書き込み =====
echo "== STEP 1: ファイル作成 + 初回書き込み =="
line_no=1
while read -r ext; do
  fname=$(printf "file%02d.%s" "$line_no" "$ext")
  fpath="$WORK_DIR/$fname"

  # ランダムデータを書き込み(エントロピー向上)
  dd if=/dev/urandom of="$fpath" bs=1024 count="$FILE_SIZE_KB" status=none 2>/dev/null
  echo "UNSEEN-EXTENSION:$ext" >> "$fpath"

  line_no=$((line_no+1))
  sleep "$PAUSE_SEC"
done < "$EXT_LIST_FILE"

# ===== 2) 追記I/Oループ =====
echo "== STEP 2: 同一ファイルへの追記I/O =="
loop=1
while [ "$loop" -le "$WRITE_LOOPS" ]; do
  echo "-- ループ $loop / $WRITE_LOOPS"
  line_no=1
  while read -r ext; do
    fpath="$WORK_DIR/$(printf "file%02d.%s" "$line_no" "$ext")"
    echo "APPEND_LOOP:$loop EXT:$ext TS:$(date -Is)" >> "$fpath"
    # 追記:oflag=append は sh だと未対応の環境もあるので cat → >> で代替
    dd if=/dev/urandom bs=512 count=64 2>/dev/null | cat >> "$fpath"
    line_no=$((line_no+1))
    sleep 0.2
  done < "$EXT_LIST_FILE"
  loop=$((loop+1))
  sleep "$PAUSE_SEC"
done

# ===== 3) 一括コピー =====
echo "== STEP 3: 一括コピー($COPY_ROUNDS ラウンド) =="
round=1
while [ "$round" -le "$COPY_ROUNDS" ]; do
  dst="$WORK_DIR/copy_round_$round"
  mkdir -p "$dst"
  # 拡張子パターンでコピー
  cp -a "$WORK_DIR"/file*.${EXT_PREFIX}_* "$dst"/ 2>/dev/null || true
  round=$((round+1))
  sleep "$PAUSE_SEC"
done

# ===== 4) ランダムリネーム =====
echo "== STEP 4: ランダムリネーム =="
for f in "$WORK_DIR"/file*.${EXT_PREFIX}_*; do
  [ -e "$f" ] || continue
  base=$(basename "$f")
  # 拡張子抽出
  ext="${base##*.}"
  name="${base%.*}"
  rnd=$(dd if=/dev/urandom bs=1 count=8 2>/dev/null | tr -cd 'a-z0-9' | cut -c1-4)
  mv "$f" "$WORK_DIR/${name}_renamed_${rnd}.${ext}"
  sleep 0.05
done

echo "== 完了: I/Oとコピー操作を実施しました =="
echo "作業ディレクトリ: $WORK_DIR"
echo

シェルを実行してみました。

$ ./arp_ext_test.sh
== 開始: 未既知拡張子ファイルの作成・I/O・コピー ==
ターゲット: /fsx
作業ディレクトリ: /fsx/arp_test_20251214_085928
== STEP 1: ファイル作成 + 初回書き込み ==
== STEP 2: 同一ファイルへの追記I/O ==
-- ループ 1 / 3
-- ループ 2 / 3
-- ループ 3 / 3
== STEP 3: 一括コピー(2 ラウンド) ==
== STEP 4: ランダムリネーム ==
== 完了: I/Oとコピー操作を実施しました ==
作業ディレクトリ: /fsx/arp_test_20251214_085928
$

現時点でのARPアラートの表示を確認してみます。攻撃性がないと判断されています。念のために再度シェルを実行しましたが、同じく「Attack Probability: none」のままでした。

::> security anti-ransomware volume show -vserver fsx  -volume vol1

                      Vserver Name: fsx
                       Volume Name: vol1
                             State: enabled
                Dry Run Start Time: -
              Attack Probability: none
                   Attack Timeline: -
                 Number of Attacks: -
                Attack Detected By: -
     Block Device Detection Status: -
Block Device Evaluation Start-time: -

スナップショットの取得がされているかを「snapshot show -volume vol1 -instance」で確認します。2つ取得がされていました。
実際のディレクトリも確認してみます。「backup-05984557572e5f347」ディレクトリにシェル実行後のリネーム後のファイルが確認できました。

# ls -la /fsx/.snapshot/*
/fsx/.snapshot/Anti_ransomware_periodic_backup.2025-12-14_0839:
total 8
drwxr-xr-x. 3 root root 4096 Dec 11 12:35 .
drwxrwxrwx. 4 root root 4096 Dec 14 09:17 ..

/fsx/.snapshot/backup-05984557572e5f347:
total 24
drwxr-xr-x. 4 ec2-user ec2-user 8192 Dec 14 09:00 arp_test_20251214_085928
drwxr-xr-x. 4 ec2-user ec2-user 8192 Dec 14 09:09 arp_test_20251214_090757
#

ARPレポートを生成します。

::> security anti-ransomware volume attack generate-report  -vserver fsx -volume  vol1 -dest-path fsx:vol1/
Report "report_file_fsx_vol1_14-12-2025_09-23-57" available at path "fsx:vol1/".

::>

実際のレポートです。ランサムウェアの可能性があると疑われるファイルの一覧が表示されています。

# cat report_file_fsx_vol1_14-12-2025_09-23-57
1 12/14/2025 09:00:58 csq_min=275 csq_avg=239 unsafe_extn=0 file_hdr=0 safe_extn=0 score=0.9                 999973280131972 novel_01a2 /arp_test_20251214_085928/file01_renamed_.novel_01a2
2 12/14/2025 09:00:45 csq_min=275 csq_avg=237 unsafe_extn=0 file_hdr=0 safe_extn=0 score=0.9                 999973413222192 novel_02u8b /arp_test_20251214_085928/file02_renamed_.novel_02u8b
3 12/14/2025 08:59:33 csq_min=275 csq_avg=242 unsafe_extn=0 file_hdr=0 safe_extn=0 score
以下略

・unsafe_extn=0 / safe_extn=0は、システムの拡張子分類リストに従って安全でない、または安全として分類された拡張子と一致しないことを示します。
・csq_min、csq_avg、file_hdr、scoreなど、その他のパラメータはシステムによって生成される指標で、ファイルのスキャンと分類に内部的に使用されます。この定義については、現時点では公開されていません。
※KBのセキュリティランサムウェア対策ボリューム攻撃レポート出力を参考。

ファイルを作成して、ランダム書き込みを行ったうえで、存在しない拡張子に変更することで、ARPでスナップショットを取得し、レポート出力されることが確認できました。
どのような通知がされるのかはまた別途、試してみたいと思います!

0
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
0
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?