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)が導入されます。適切な管理と更新を行い、システム全体の安全性を確保しましょう。

お気軽にご相談ください

お見積りへ お問い合わせへ