2026年5月29日
2026年5月29日
Apacheのmod_securityでWAFを設定する方法
ステップ1: mod_securityをインストールする
インストール方法
まず、Apacheサーバーにmod_securityプラグインをインストールします。これは通常、パッケージ管理ツールを通じて行います。
# CentOS/RHELの場合
sudo yum install mod_security -y
# Debian/Ubuntuの場合
sudo apt-get update && sudo apt-get install libapache2-mod-security2 -y
インストール確認
インストールが完了したら、Apacheのmod_securityモジュールが正しくインストールされていることを確認します。
apachectl -M | grep mod_security
# 例: Loaded Modules: ... mod_security2 ...
ステップ2: mod_securityを有効にする
Apacheのコンフィギュレーションファイルを開く
mod_securityを有効にするためには、Apacheのコンフィギュレーションファイル(通常は/etc/httpd/conf.d/mod_security.confまたは/etc/apache2/mods-enabled/security2.load)を開きます。
# CentOS/RHELの場合
sudo vi /etc/httpd/conf.modules.d/00-mod_security.conf
# Debian/Ubuntuの場合
sudo nano /etc/apache2/mods-enabled/security2.load
mod_securityを有効にする
ファイルの内容にLoadModule security2_module modules/mod_security2.soという行が含まれていることを確認します。もし該当の行がない場合は追加します。
# CentOS/RHELの場合
LoadModule security2_module modules/mod_security2.so
# Debian/Ubuntuの場合
<IfModule !mod_security2.c>
LoadModule security2_module /usr/lib/apache2/modules/mod_security2.so
</IfModule>
ステップ3: ルールセットを適用する
網羅的ルールセットのダウンロード
mod_securityは様々なルールセットを提供していますが、最も広く使われているのはOWASP ModSecurity Core Rule Set(CRS)です。この規則セットをインストールします。
# CentOS/RHELの場合
wget https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual-%E2%80%93-Rules -O modsecurity.conf-recommended
# Debian/Ubuntuの場合
sudo wget https://raw.githubusercontent.com/coreruleset/coreruleset/master/dist/modsecurity-crs-3.0-full.yaml -O /etc/modsecurity/modsecurity_crs_3_full.conf
網羅的ルールセットの設定
インストールした規則セットをApacheが読み込むようにします。これは通常、/etc/httpd/conf.d/mod_security.confまたは/etc/apache2/mods-enabled/security2.loadファイルに記述されています。
# CentOS/RHELの場合
IncludeOptional /usr/share/modsecurity-crs/*.conf
# Debian/Ubuntuの場合
Include /etc/modsecurity/modsecurity_crs_3_full.conf
ステップ4: セキュリティポリシーファイルの編集
カスタムルールの追加
基本的な設定は完了しましたが、具体的なセキュリティ要件に合わせてカスタマイズが必要です。例えば、特定のURLへのアクセスを許可するか禁止するなど。
# ファイル作成
sudo vi /etc/modsecurity/modsecurity.conf
# カスタムルール追加例
SecRule REQUEST_URI "/admin" "id:123456,rev:1,t:none,nolog,pass,\
msg:'Admin access detected.',\
phase:1,t:lowercase,\
ctl:requestBodyProcessor.absentCheck,\
!ARGS:username,!ARGS:password"
実践/トラブルシュート/監視
Apacheサーバーの再起動
mod_securityを有効化し、ルールセットを適用した後はApacheサーバーを再起動します。
# CentOS/RHELの場合
sudo systemctl restart httpd.service
# Debian/Ubuntuの場合
sudo service apache2 restart
セキュリティログの確認
mod_securityで生成されるログファイル(通常/var/log/httpd/modsec_audit.logまたは/var/log/apache2/modsec_audit.log)を監視することで、不正なアクセスや攻撃を把握できます。
tail -f /var/log/httpd/modsec_audit.log
注意事項
- パフォーマンス: mod_securityはセキュリティを向上させる一方で、サーバーのパフォーマンスに影響を与える可能性があります。過度なルール設定は処理速度を遅くする場合があります。
- 誤報対策: 通常のアクセスパターンから逸脱した非正規なリクエスト(誤報)を無視または許可することで、誤った警告を減らすことができます。
- アップデート: OWASP CRSは定期的に更新されるため、常に最新バージョンを使用することを忘れないでください。
まとめ
1. mod_securityのインストールと有効化: Apacheにmod_securityプラグインをインストールし、Apacheのコンフィギュレーションファイルで有効化します。
2. OWASP CRSの適用: 網羅的ルールセット(OWASP CRS)をダウンロードし、Apacheが読み込むように設定します。
3. カスタムルールの作成: カスタムルールを作成して特定のアクセスパターンに対応します。
4. サーバー再起動と監視: すべての設定を適用した後にApacheサーバーを再起動し、セキュリティログを定期的に確認します。
これにより、Apacheサーバーに強力なWebアプリケーションファイアウォール(WAF)が導入されます。適切な管理と更新を行い、システム全体の安全性を確保しましょう。