2026年5月19日

2026年5月19日

Apacheのmod_limitipconnで接続数を制限する方法

はじめに

Apache HTTPサーバーは、Webサイトやアプリケーションを提供する際に広く使用されています。しかし、特定のIPアドレスからの過度な接続要求はサーバーのパフォーマンスに悪影響を与え、サービス中断の原因となることがあります。mod_limitipconnモジュールを利用することで、特定のIPアドレスからの接続数を制限し、サーバーの安定性とセキュリティを向上させることができます。

症状・背景

  • 特定のIPアドレスから大量のHTTP要求が送られてきている。
  • サーバーに過度な負荷がかかり、応答速度が遅くなっている。
  • ウォーターフォール攻撃など、特定のIPからの不正アクセスを防ぎたい。

手順・設定方法

ステップ1: mod_limitipconnモジュールの有効化

# Apache 2.4以降の場合
sudo a2enmod limitipconn

# Apache 2.2以下の場合
# サーバー構成ファイルでmod_limitipconnを有効にする
sudo nano /etc/apache2/mods-enabled/limitipconn.conf

ステップ2: 接続数制限の設定

# サーバー構成ファイルの末尾に以下の内容を追加する
<IfModule mod_limitipconn.c>
    LimitRate 1000 # 1秒間に送信される最大接続数を指定 (バイト/秒)
</IfModule>

# 具体的な制限設定例
<LimitRequestRate 300 10> # 1秒間に300件未満のリクエストを許可
    Allow from all
    Deny from 192.168.1.100
</LimitRequestRate>

ステップ3: ユーザーごとの接続数制限

# サーバー構成ファイルの末尾に以下の内容を追加する
<IfModule mod_limitipconn_user.c>
    <LimitRequestRateUser 100 60> # 1分間に100件未満のリクエストを許可
        Allow from all
        Deny from example.com
    </LimitRequestRateUser>
</IfModule>

ステップ4: 設定適用と監視

# 配置ファイルを保存してApacheを再起動する
sudo systemctl restart apache2

# 接続数制限の有効性を確認する
sudo tail -f /var/log/apache2/error.log

注意事項

  • LimitRateパラメータは接続数ではなく、バイト/秒単位で設定される点に注意。
  • 設定が正しく適用されているか、ログファイルを確認する。
  • セキュリティ上の理由から特定のIPアドレスをブロックした場合でも、適切な監視と管理が必要。

まとめ

1. LimitRate: 接続数制限を設定します。特定のIPからの不正アクセスや過度な負荷を防ぐために使用します。

2. LimitRequestRate: ユーザーごとの接続回数制限を設定できます。特定ユーザーからの不正アクセス防止に有効です。

3. AllowとDeny: 発生する可能性のある接続の許可と拒否を指定します。

4. Apache再起動: 設定が反映されるため、サーバーを再起動します。

5. ログ確認: 接続数制限が正しく動作しているか、ログファイルで確認しましょう。

関連記事:

お気軽にご相談ください

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