GCEのファイアウォールで日本のIP限定化

ファイアウォールで日本に対してのみサービスをしたくないですか?

表記の通りですがそんな声に答えてスクリプトを作ってみました。
IPのネタ元はこちらの世界のIPアドレスリストです。
こちらのIPリストからcidr形式のものを取ってきてJP始まりの行だけを取ってきて、gcloudコマンドでファイアウォールを作成している、という形です。

2016年8月時点ではだいたい2700行程ありました。
管理コンソールで手打ちは不可能ですし、firewall作成にあたってソースレンジは256個迄しか指定出来ないため11個ファイアウォールを作成する必要があります。
最後の数字部分で名前を変えて11個作成します。
定期的に再作成する場合はFW_NAMEを変更して、元のものを削除する、という形にすれば良いでしょう。

いやー、久しぶりにプログラミングして楽しかったです。
前提として、wget,gzipあたりが入って無いと動きません。もちろんgcloudコマンドが叩けることも必要です。
以下、ソースを公開しますので、適当にご利用ください。

#!/bin/bash FW_NAME=”allow-japan” #ファイアウォールの名称の頭部分です ALLOW=”tcp:80,tcp:443″ #許可するポートです。 DESC=”Allow only from Japan firewalls” #備考です。 wget http://nami.jp/ipv4bycc/cidr.txt.gz #データ取ってきます。 gzip -d cidr.txt.gz sed -n ‘s/^JP\t//p’ cidr.txt > jpips.txt #初期化 numLine=1 numfw=1 IPLIST=”” for line in `cat jpips.txt` do IPLIST=$IPLIST$line”,” if [ $numLine -eq 256 ]; then echo -e “$IPLIST —— \n” IPLIST=`echo $IPLIST | sed -e ‘s/,$//’` gcloud compute firewall-rules create $FW_NAME$numfw –allow $ALLOW –network “default” –description “$DESC” –source-ranges “$IPLIST” & IPLIST=”” numLine=0 numfw=$((numfw + 1)) fi numLine=$((numLine + 1)) done gcloud compute firewall-rules create $FW_NAME$numfw –allow $ALLOW –network “default” –description “$DESC” –source-ranges “$IPLIST” & rm cidr.txt rm jpips.txt

公開サイトだとどうしてもGoogleのボットを弾くとまずい、とかあると厳しいかもです。
あと監視をStackDriverとかにしてるとそれも許可しないと、、とか実運用上は色々ありそうですが、こんなことも出来ますよ、というところです。

Google のクラウドサービスについてもっと詳しく知りたい、直接話が聞いてみたいという方のために、クラウドエースでは無料相談会を実施しております。お申し込みは下記ボタンより承っておりますので、この機会にぜひ弊社をご利用いただければと思います。

無料相談会のお申込みはこちら