
しばらく自分のサイトで何もしていませんでした。最近、Ubuntu を 12.04 から 14.04 LTS にアップグレードしたのですが、次のようなエラーが発生するようになりました。
Modsecurity: no action id present
ネットで調べてみたところ、ほとんどの回答ではルールに id=1234 などを追加するよう指示されていますが、なぜそうするのか、id が何をするのかについては説明されていません。誰かこれについて説明してくれませんか?
答え1
ModSecurity 2.7 では ID が必須になりました。最近の OS のアップグレードで、この前のバージョンから移行したと思われます。また、ModSecurity を手動で再インストールしたときに、古いバージョンに戻ってしまったようです。
ID は、次のような理由からルールを一意に識別するのに便利です。
- ルールが実行されたときに、ログ ファイル内でルールを一意に識別します。
- SecRuleRemoveById を使用してルールをオフにする
- SecRuleUpdateTargetById を使用してルールの部分的な処理をスキップします (例: ルール内で処理される 1 つのパラメータを無視する)。
ID は一意である必要があります。一意でない場合は、識別子とは言えません ;-)
https://github.com/SpiderLabs/ModSecurity/wiki/リファレンスマニュアル#id
答え2
Modsecurity を再インストールすることでこの問題を解決しましたが、その後、重複 ID の問題が発生しましたが、構成ファイルに Modsecurity が 1 回だけ含まれていることを確認することで解決しました。