Rocky Linux 9のApache 2.4でmod_maxminddbを使って国制限をしてみよう
Rocky Linux 9でApache2.4にmod_maxminddbを使って国別アクセス制限を行う手順は以下の通りです。
1. 必要パッケージのインストール
EPELリポジトリと必要な開発ツール、ライブラリをインストールします。
sudo dnf install epel-release
sudo dnf install httpd httpd-devel gcc cmake make git libmaxminddb libmaxminddb-devel redhat-rpm-config
2. mod_maxminddb のダウンロードとインストール
最新バージョンを GitHub から取得し、ビルド・インストールします。
wget https://github.com/maxmind/mod_maxminddb/releases/download/1.2.0/mod_maxminddb-1.2.0.tar.gz
tar xvfz mod_maxminddb-1.2.0.tar.gz
cd mod_maxminddb-1.2.0
./configure --with-apxs=/usr/bin/apxs
make
sudo make install
※apxsのパスは環境によって異なる場合があります。
3. モジュールの読み込み設定
/etc/httpd/conf.modules.d/00-maxminddb.conf などに以下を記述して、モジュールを読み込みます。
LoadModule maxminddb_module modules/mod_maxminddb.so
4. GeoLite2 データベースの配置
MaxMind公式サイトから「GeoLite2-Country.mmdb」などのデータベースファイルをダウンロードし、/usr/share/GeoIP/ に配置します。
sudo mkdir -p /usr/share/GeoIP/
sudo wget https://your-download-link/GeoLite2-Country.mmdb -O /usr/share/GeoIP/GeoLite2-Country.mmdb
※MaxMind公式サイトでアカウント登録が必要です。
5. Apache 設定ファイルの編集
例: 日本(JP)とアメリカ(US)のみ許可
/etc/httpd/conf.d/geoip.conf などに以下を追加します。
※他のディレクトリやバーチャルホストにも同様に設定できます。
6. 設定のテストとApache再起動
sudo apachectl configtest
sudo systemctl restart httpd
7. 動作確認
海外IPからアクセスしてブロックされるか、国内IPからアクセスして許可されるかを確認してください。
ポイント
MaxMindDBのパスや国コードは環境・要件に合わせて調整してください。
データベースは定期的に更新してください。
SetEnvIfの正規表現部分で許可・拒否する国を追加・削除できます。
この手順で mod_maxminddb を使った国別アクセス制限が可能です。
1. 必要パッケージのインストール
EPELリポジトリと必要な開発ツール、ライブラリをインストールします。
sudo dnf install epel-release
sudo dnf install httpd httpd-devel gcc cmake make git libmaxminddb libmaxminddb-devel redhat-rpm-config
2. mod_maxminddb のダウンロードとインストール
最新バージョンを GitHub から取得し、ビルド・インストールします。
wget https://github.com/maxmind/mod_maxminddb/releases/download/1.2.0/mod_maxminddb-1.2.0.tar.gz
tar xvfz mod_maxminddb-1.2.0.tar.gz
cd mod_maxminddb-1.2.0
./configure --with-apxs=/usr/bin/apxs
make
sudo make install
※apxsのパスは環境によって異なる場合があります。
3. モジュールの読み込み設定
/etc/httpd/conf.modules.d/00-maxminddb.conf などに以下を記述して、モジュールを読み込みます。
LoadModule maxminddb_module modules/mod_maxminddb.so
4. GeoLite2 データベースの配置
MaxMind公式サイトから「GeoLite2-Country.mmdb」などのデータベースファイルをダウンロードし、/usr/share/GeoIP/ に配置します。
sudo mkdir -p /usr/share/GeoIP/
sudo wget https://your-download-link/GeoLite2-Country.mmdb -O /usr/share/GeoIP/GeoLite2-Country.mmdb
※MaxMind公式サイトでアカウント登録が必要です。
5. Apache 設定ファイルの編集
例: 日本(JP)とアメリカ(US)のみ許可
/etc/httpd/conf.d/geoip.conf などに以下を追加します。
<IfModule mod_maxminddb.c> MaxMindDBEnable On MaxMindDBFile DB /usr/share/GeoIP/GeoLite2-Country.mmdb MaxMindDBEnv MM_COUNTRY_CODE DB/country/iso_code </IfModule> <Directory "/var/www/html"> Require all granted SetEnvIf MM_COUNTRY_CODE ^(JP|US)$ AllowCountry Require env AllowCountry </Directory>※対象ディレクトリが/var/www/htmlの場合です。
※他のディレクトリやバーチャルホストにも同様に設定できます。
6. 設定のテストとApache再起動
sudo apachectl configtest
sudo systemctl restart httpd
7. 動作確認
海外IPからアクセスしてブロックされるか、国内IPからアクセスして許可されるかを確認してください。
ポイント
MaxMindDBのパスや国コードは環境・要件に合わせて調整してください。
データベースは定期的に更新してください。
SetEnvIfの正規表現部分で許可・拒否する国を追加・削除できます。
この手順で mod_maxminddb を使った国別アクセス制限が可能です。
コメント
コメントを投稿