nginxで国別アクセス制限をかけるスクリプトを作成しました。
3ヶ所の??の部分を修正してご活用ください。
#!/bin/sh
### nginx版国別アクセス制限スクリプト Ver1.0
### このスクリプトはrootで作成・実行してください
### ??の部分をCountry Codeに修正してから実行してください
### 動作確認 令和4年7月13日
# uname -a
# Linux 5.10.0-16-amd64 #1 SMP Debian 5.10.127-1 (2022-06-30) x86_64 GNU/Linux
### rootで作成・実行例
# cd
# nano nothanksCc.sh
# chmod +x nothanksCc.sh
# ./nothanksCc.sh
### このスクリプトでは有志の方が作成された国別IPアドレスリストを使用させていただいております。ありがとうございます。
# ----------- 処理ここから -----------
cd
cd /etc/nginx/
wget http://nami.jp/ipv4bycc/cidr.txt.gz
gunzip cidr.txt.gz
# 主なアジア・太平洋地域のIPアドレスの国名の呼称(Country Code, CC)
# ??の部分をCountry Codeに修正します。
# 例 sed -n 's/^[??]\t\(.*\)/deny \1;/p' ./cidr.txt > /etc/nginx/deny.conf
# 3カ国まで追加できます。??の部分を下にあるCountry Codeに修正します。
# 必要であれば最終行を追加・削除して増減してください
sed -n 's/^??\t\(.*\)/deny \1;/p' ./cidr.txt > /etc/nginx/deny.conf
sed -n 's/^??\t\(.*\)/deny \1;/p' ./cidr.txt >> /etc/nginx/deny.conf
sed -n 's/^??\t\(.*\)/deny \1;/p' ./cidr.txt >> /etc/nginx/deny.conf
rm cidr.txt
if [ ! -e /etc/nginx/nginx.conf.bak ]; then
# 既存の/etc/nginx/nginx.confバックアップ
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
fi
# /etc/nginx/nginx.conf初期化
cp /etc/nginx/nginx.conf.bak /etc/nginx/nginx
# /etc/nginx/nginx.confへinclude /etc/nginx/deny.conf;追加
sed -i -e "s/*;/*;\n\tinclude \/etc\/nginx\/deny.conf;/" /etc/nginx/nginx.conf
# nginx再起動
systemctl restart nginx.service
# nginxステータス表示 Qキーで抜ける
systemctl status nginx.service
# ----------- 処理ここまで -----------
### 主なアジア・太平洋地域のIPアドレスの国名の呼称(Country Code, CC)
# https://memorva.jp/internet/security/spam_ip_address_asia.php
# JP:日本
# KR:韓国
# TW:台湾
# CN:中国
# HK:香港
# KP:北朝鮮
# SG:シンガポール
# PH:フィリピン
# TH:タイ
# MY:マレーシア
# ID:インドネシア
# IN:インド
# AU:オーストラリア
# NZ:ニュージーランド