Scribble at 2024-11-22 17:36:24 Last modified: 2024-11-23 10:33:36

添付画像

httpd のモジュールとして組み込める WAF として知られている ModSecurity には、TrustWave から今年に入ってプロジェクトを引き継いだ OWASP 版と Apache Lounge 版がある。これは開発したりサポートしている組織による違いで、運用方法に大きな違いはないと思うのだが、まずローカルで httpd を動かしている僕としては、httpd を Apache Lounge からもらっているため、同じコンパイルの条件でリリースされている Apache Lounge 版の ModSecurity を使うということになる。

ただ、これが実装先のリモート・サーバとなると事情は変わってくる。最近は客先のサーバとして IIS を触らないといけないなんて事例はないし、ましてや IIS で ModSecurity を使っている事例など更に少ないから想定しなくてはいいとは思うが、もしそういう環境で運用するなら、IIS で動作させる想定でリリースされているらしい OWASP 版を使うことになるのだろう。それから、もちろんリモートのウェブ・サーバで運用するときは Linux であることが大半であるから、これは対応しているリポジトリに依存して色々と変わるのかもしれない。

ちなみに、いま某万博サイトで運用している Kusanagi でも WAF として ModSecurity を使っている。ただし、Kusanagi は WordPress の専用 OS であるから、せめてディフォールトで WordPress の運用を邪魔しないルールくらい設定しておいてほしいものだが、そのへんは最も厳しい条件を設定して少しずつ緩和していく方針らしく、WAF を有効にした後で幾つかのルールを無効にする必要がある(でないと、たとえば WordPress の固定ページを投稿できなくなったり、キー・ビジュアルを登録できなくなったりする)。

なお、あいかわらずのことだが ModSecurity については日本語のリソースを検索しても無駄である。せいぜい Qiita などに投稿されている、新卒の「やってみた」式のクズみたいな投稿記事が山のように出てくるだけで、検索するだけ無駄というものである。 EGセキュアソリューションズの初歩的な解説ですら、結局は自社でリリースしている WAF にクロージングするためにやたらと ModSecurity の運用ハードルを引き上げるようなことを書いている(さくらインターネットで経験済みだが、実際には EGセキュアソリューションズの SiteGuard の方が面倒臭い)。ということなので、われわれのような見識を持つエンジニアが暇潰しに丁寧な記事を書いてくれるのを待つくらいなら、諸君は英語の勉強をする方が早いと言っておく。

ただ、そうは言っても海外のリソースが充実しているかと言えば、OWASP のマニュアルが最大のリソースとして有用であることは確かだが、それ以外に何かあるかと言えば、実はそう充実しているわけでもないのが残念だ。これは SELinux のようなシステムについても言えることだが、よく知られている割に、実は敬して遠ざけられていて使われてはいないがゆえに、さほど documentation や情報として有用なものが海外でも少なくて、やはり日本と同じように紹介記事ばかりが増えていくという馬鹿げた状況にある。したがって、当然のことだが、そういうゴミばかり食べている生成 AI に質問しても本当に役に立つ情報は大して答えてもらえないわけである。

なお、さきほど自宅で運用している Raspberry Pi Zero W に ModSecurity 2 (2.9.3-3+deb11u2 armhf) を入れている。OS が古いので、現時点での最新版である 2.9.7 ではないが、ひとまず運用の練習には十分だろう。それから、ModSecurity には後継の version 3.x 系統があって、これは Nginx のユーザにとっては 3.x になってネイティブでしっかり対応できるようになったというので、選択するだけの価値はあると思う。だが機能としては 2.x の下位互換とは言えず、2.x がもつ多くの機能を取り込めていないというので、Apache のユーザは 2.x を使う方が良いと言われるので、選択には注意が必要だ。お恥ずかしながら、僕は Nginx の運用経験が殆どないし、運用する(べき)理由も見当たらないので、まだ 3.x 系統を使うつもりはない。したがって、仮に僕が当サイトで解説を書くとしても、まだ 2.x 系統の内容になるだろう(但し、3.x 系統が十分に下位互換となったら、どのみち 2.x 系統の解説は部分集合として役立つであろう。それは C の解説が C++ を学ぶに当たって十分に役立つのと同じことだ)。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る