nginxで国外のIPをブロックする方法

海外からのツール攻撃がウザイ

Posted by めろん on 2024/10/06 20:59

【PR】本記事はアフィリエイト広告を利用しています。

アクセスログをみると

anime girl She's dancing wearing a shirt that says


nginxのアクセスログをみると結構な数で海外から攻撃されていることがわかります。
恐らくツールを使っているとみられていて短期間に色んなコマンド流してきているようです。



こんな感じに。

一応全部ブロックはしているものの気持ち悪いのでIPアドレスで完全に遮断してしまおうと考えたわけです。
そこで、海外は全部ブロックしてしまおうと日本のIP範囲を調べてnginxに設定しました。

各国の払い出している範囲の情報はここから取得できます。

ftp://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest

ftp://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-extended-latest

ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-extended-latest

ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-extended-latest

ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-extended-latest




ファイルフォーマットの説明も記載がありました。
https://www.apnic.net/about-apnic/corporate-documents/documents/resource-guidelines/rir-statistics-exchange-format/#Format

ただCIDRとして表現できない部分があるそうで、少し加工が必要のようです。
加工して纏められた方のデータもダウンロードできるようですが、直リンク張るのもご迷惑になるかもしれませんので
ここでは張っていません。

はじめはガッツリと、国内のIPアドレスだけでブロック設定をいれたところgoogleの
クローラーもブロックされていたので急遽クローラーのアドレス範囲を調べました。

余談ですが、

nginx.conf

こんな感じで起動時に取り込んであげるだけです。
順番があるらしく、先に書いたものが優先されるらしくDenyを書いてDenyの範囲にあるものを特別に
許可するように後で書いても先に書いた方が優先されるので注意することだそうです。

許可(allow)の例


設定ファイルはこんな感じで羅列されいるテキストファイル(utf-8)のファイルです。
CIDRで範囲を指定できます

不許可(deny)の例


不許可の例も同じです。
命令が「deny」になっただけです。

googleのクローラーリスト

anime girl She shows the permission list.
結論から言うと、

ここ

にありました。

ここでjsonファイルで指定された範囲の設定をnginxに入れるだけです。
セキュリティ設定なので実際のものをお見せすることはできませんが、それほど難しくはないです。

私は秀丸を駆使して変換し設定をいれました。
といっても単純に置換するだけです。

以上!

おまけ・ブロックされている様子


こんな感じで403扱いになってはじき返していい仕事しています。

The anime girl has a twin-tailed hairstyle and is smiling while wearing an

やったね!