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. ログ確認: 接続数制限が正しく動作しているか、ログファイルで確認しましょう。
関連記事: