GeoIPで特定の海外IPをブロックする

apacheモジュールのインストール

モジュールがインストール可能か確認

dnf search mod_maxminddb

インストールされているかの確認

dnf list installed | grep mod_maxminddb

インストール

dnf install mod_maxminddb

データベースのインストール

データベースをダウンロードするには、MaxMindのサイトにアクセスして、アカウントを作る必要がある。

アカウント作成が完了したら、ログインして、GeoLite2データベースをダウンロードする。

国別のIP制限をしたいので GeoLite2 Country を選択。

ダウンロードしたファイルをサーバーにアップロードして解凍。

tar -xvzf GeoLite2-Country.tar.gz

GeoLite2-Country.mmdbというファイルがあるので/usr/share/GeoIPに移動。

sudo mv GeoLite2-Country.mmdb /usr/share/GeoIP/

/usr/share/ は、共有データファイルやアプリケーションデータを配置するための標準的なディレクトリ。読み取り専用のデータを配置するための場所。

shareディレクトリにgeoipというディレクトリがなければ作る

sudo mkdir -p /usr/share/GeoIP
sudo chmod 755 /usr/share/GeoIP

apacheの設定

/etc/httpd/conf.d/ に maxminddb.conf というファイルができていたのでそこの記述する

<IfModule mod_maxminddb.c>
  MaxMindDBEnable On
    MaxMindDBFile COUNTRY_DB /usr/share/GeoIP/GeoLite2-Country.mmdb
    MaxMindDBEnv COUNTRY_CODE COUNTRY_DB/country/iso_code
</IfModule>

# ロシア、ブラジル、北朝鮮、ウクライナ、イランを拒否
<Location "/">
    SetEnvIf MM_COUNTRY_CODE ^(RU|BR|KP|UA|IR) BlockCountry
    Deny from env=BlockCountry
</Location>

設定を反映させるために再起動

sudo systemctl restart httpd

その他

MaxMindのライセンスキー取得方法はこちらが分かりやすい

IPv4アドレス移転履歴

IPv4アドレス移転履歴 - JPNIC
タイトルとURLをコピーしました