特定の国からのアクセスをブロックするapacheの.htaccess設定

ALL
スポンサーリンク

中国などの特定の国をブロックしたり、日本だけアクセス許可したりする、apacheの .htaccessファイル用の設定です。
Linux で作成します。
iptables での制限の場合は、以下の記事の方を見て下さい。

iptables - 国内からの接続のみ許可して海外からの接続を遮断する パソコン鳥のブログ
特定の国を許可したり拒否する iptables設定 パソコン鳥のブログ

次のサイトで公開されているリストを使用します。

世界の国別 IPv4 アドレス割り当てリスト

次のコマンドでリストを取得します。

wget http://nami.jp/ipv4bycc/cidr.txt

特定の国をブロックする .htaccessファイルは、次のように作成します。

まず、下記を実行します。この例では、中国をブロックする場合です。
他の国をブロックしたい場合は、cn の部分を、ドメイン名の種類 – JPNIC を参照して、別の国コードに置き換えて下さい。

grep -i cn cidr.txt|sed -r "s/cn\s+/deny from /i" > deny_from.txt

deny_from.txt が出来ます。
下記の .htaccess ファイルのように order allow,deny、allow from all に続けて、deny_from.txt の内容をコピーして下さい。

.htaccess

order allow,deny
allow from all
deny from 1.0.1.0/24
deny from 1.0.2.0/23
...(省略)

日本だけアクセス許可したい場合は、以下を実行します。

grep -i jp cidr.txt|sed -r "s/jp\s+/allow from /i" > allow_from.txt

allow_from.txt が出来るので、下記の .htaccess ファイルのように order deny,allow、deny from all に続けて、allow_from.txt の内容をコピーして下さい。

.htaccess

order deny,allow
deny from all
allow from 1.0.16.0/20
allow from 1.0.64.0/18
...(省略)

コメント