RAM DiskのSoftPerfect RAM Disk, Passmark OSFMount, ImDisk Toolkitを試した

SSDとNVMeで大容量化・高速化された今の時代にRAM Diskは別に必要ないんだけど、メモリ128GBなマシンを組むと持てあますわけです。一時領域として使ってもよかろうということでRAM Diskを検討。

要約

  • SoftPerfect RAM Diskは ベンチマークの結果はよかったが、継続にはライセンス購入が必要
  • Passmark OSFMountもベンチマークの結果は良かったが、機能面に難あり。バッチファイルを書いて対処できそう
  • ImDisk Toolkitは前2つと比べると性能は良くなかった。機能は十分
  • WindowsにおいてはファイルシステムexFATがよさそう。1ファイルのサイズ制限がほぼ無いのと、ベンチマーク結果がNTFSよりも良かった
  • アロケーションユニットはなんでもよさそう
続きを読む

Web Application Firewall(WAF)に意味はあるのか

Web Application Firewall(WAF)に意味は無いという話ではないです。ただ、私は費用対効果が薄いので否定的な気持ちです。運用を行える労力と金が許すなら入れればいいのではと思います。

なぜか仕事でWAFの導入相談をされることがあり、その時の考えを2022年の終わりぐらいから書き散らしては塩漬けを繰り返していたのですが、今も気持ちは変わってないので公開してみます。

要約

私の記事には新規性はないです。mod_securityなど具体的なWAF製品には触れません。

こんな記事を見るより、以下をお読みください。

2011年にIPAもWAFの導入に関する手引きを書かれています。WAFのメリット、導入判断、運用についても触れられています。

www.ipa.go.jp

2008年に徳丸先生が以下の記事を書かれています。

blog.tokumaru.org

古い記事に見えますが、現状はあまり変わってないと私は感じます。

このあたり読んでおけば判断できるはずです。ありがとうございました。

私の感想

Azure FrontDoorとAzure ApplicationGatewayのWAFを少し運用している程度のペーペーの一意見としてください。

私は「WAFは費用対効果が薄いのでは」という立場です。

  • WAFは効果はあるが万能ではない
    • 既知の攻撃には意味がある
    • 潜在的脆弱性に対する攻撃を防ぐ意味がある
    • 完全な未知の攻撃には意味がない
      • SaaSで提供されているWAFはアップデートがある。そのため「未知の攻撃」が「既知の攻撃」に変わり防げるようになることがある(最近ではlog4shellなど)
  • WAFは入れてお終いではなく、WAFのための運用も必要(マネージドでも必要)
  • コストが掛かるし、オーバーヘッドも掛かる

徳丸先生の記事で以下の記述がありました。

割高で あてにならぬも 負担増

私の感覚ですが、この状況は今もさほど変わっていないように思います。

クラウドサービスの台頭で必要な時にすぐ導入でき、コストも月5000円程度から使えるようになっており導入はしやすくなりました。何かあったときに困るからとにかく入れておけ、という選択もさほど悪くないとも思います。金があるなら入れるといいでしょう。(AzureもFrontDoor Classic時代は安価に始められたのですが、それが廃止予定になってしまい現状の最低ラインは月$300からであり、ちょっと「ウッ」となる金額感)

しかしまだ運用があります。手元では動いても動作環境だとリクエストをふさがれてしまい、ため息をつきながら除外ルールを書くという作業が増えたりといったことも。それでいて絶対ではない。

そんな感じで、WAFはめちゃくちゃ高くてお手入れが必要な「おまもり」という認識です。

蛇足:「セキュリティ」という言葉について

WAFとはあまり関係ないですが、次の動画で竹迫先生が「セキュリティという言葉を使わずにやりたいことを説明してみる」とおっしゃっていました。

youtu.be

セキュリティというワード自体はメジャーになっているが故か、アプリケーション開発するときにお客様とか上司とかから「セキュリティは大丈夫?」と口を出されることがよくありました。

これに対してYES/NOで答えるには難しく、セキュリティに絶対はないと思っているのでYESと言い切れないし、かといってNOとは言えないので、「頑張ってます。アハハハ」と返すこともありました。

とはいえ「具体的に何を気にされています?」と掘り下げると、時間を食いつぶす話題でもあり、その割には得られるものが少なかったり発言が有識者に偏るみたいな状態になったり、うまく回せない。みんなそんなことより早く開発進めてスケジュール通りにリリースしたいよな、と思ったり。でも蔑ろにできないもどかしさがあったり。壁打ちできる相手がほしい。でもコミュニティは怖い

ただやっぱりセキュリティというワードは広すぎるので、1個1個具体的にして潰していくしかないのだなと思ってます。(浅い感想)

以降も書き散らし。

続きを読む

Linux MD(mdadm)で組んだRAID1はデータの異常に耐性がないことが分かった話

これは私の思い違いだったってだけの記事です。

要約

RAID*1の目的は複数のデバイスを使って冗長化する仕組み。データのバックアップや、データ保護といった仕組みはない。」

ということだけ、持ち帰ってもらえればと思います。

  • Linux MD(mdadm)におけるRAID1は1byteの異常では故障扱いにならない
  • 1blockの読み取り不備が起きるぐらいでは故障扱いにならない
    • 残りのデバイスがある場合は正常なデバイスを使って読み直すが、故障扱いにならない
    • 残りのデバイスがない場合はIOエラーが起きるが、故障扱いにならない
  • 具体的に故障扱いになる理由はよくわからなかった
  • データの破損がないか確認する仕組みにも配慮したほうがよさそう(未完)
    • データの完全性を確認するdm-integrityをブロックデバイスレイヤに挟む
    • データの完全性を確認するファイルシステムを使う(Btrfs, ZFSなど)

背景

新しくNASのハードウェアを組み立ててから1年経っているがまだ本番投入していない…

RAID構成やZFSの採用でずっと悩んでいた。手元でベンチマークを雑にとると、ZFSは比較的安定しているが、CPU使用率が高くなったり、Linux MDのほうがCPU使用率が明らかに少ないとかでずっと悩んでいた。

Linux MDでRAID6にすべきかZFSRAID-Z2にすべきか、としか考えてなかったが、次の記事を見て少し考えが変わった。

jrs-s.net

この記事自体は「ZFSではRAID-Zを使うな、mirror vdevをpoolして使え」という記事で、実際それはどうなんだ?と思っていたんですが、考えてみればストレージ効率が50%になるのと、2台故障かつ屑運引いた場合に復旧できないことがある以外にデメリットが全くないとも思えたんですね。

で、なら今まで通りLinux MDでRAID1でいいんじゃないか、ってちょっと思ったわけですが、ふと、RAID1ってどこまで故障を直してくれるのか、って思ったんですよ。

故障って何なんですかね。故障を検知はできるのは過去に経験はしていたんだけども、溜まっているデータを見るとまれに日付が1970年みたいなデータもあって、あれこれこんな日付だったっけ、っておもうこともあったり。

そもそも、RAID1なら1台で誤ってるデータがあったらそれ比べて異常検知できるんじゃないんか?って。

じゃ、やってみましょう、というのが今回の記事。結果は要約の通りです。

*1:ただしRAID0を除く

続きを読む