nginxで国別アクセス制限をかける設定

Debian

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:ニュージーランド
タイトルとURLをコピーしました