Rubyと筋肉とギターとわたし

筋トレが仕事です

【gloudコマンド】ファイアーウォール ルールへ複数IPを設定する

f:id:rdwbocungelt5:20180727094804j:plain

いろんなサイトをサーバー移行しています。

その中で、とあるサイトがかなり攻撃を受けるらしく、ストレージをS3に持って行き、サクラVPSで運用しているといったことを聞き、それならいっそのこと攻撃元の海外を全て遮断してしまえばいいんじゃないかと思いやってみました。

gloudコマンドのインストール

まずcurlでとってくる。

$ curl https://sdk.cloud.google.com | bash

Y/nと何回か聞かれるけど、基本的に全部Enterでおk。

最後に

Enter a path to an rc file to update, or leave blank to use [/home/User/.bashrc]:

と聞かれるので、bashrcで管理してる人は特に意識せずそのままEnter。僕はこのまま行きました。

zshだとめんどくさいみたいですけど。

.bashrcを読み込みなおしてwhichでパスが表示されればおk。

$ source ~/.bashrc

$ which gloud
~/google-cloud-sdk/bin/gcloud

gloud initで認証

自分のアカウントにログインします。

$ gcloud init
Welcome! This command will take you through the configuration of gcloud.

Your current configuration has been set to: [default]

You can skip diagnostics next time by using the following flag:
  gcloud init --skip-diagnostics

Network diagnostic detects and fixes local network connection issues.
Checking network connection...done.                                                                                                                                                            
Reachability Check passed.
Network diagnostic (1/1 checks) passed.

You must log in to continue. Would you like to log in (Y/n)?  y

yもしくはEnterを押すと、ブラウザが開いて、googleのアカウントログイン画面に飛びます。

ログインがうまく行けば認証完了。 ターミナルに戻ると、

既存のブラウザ セッションに新しいウィンドウが作成されました。
You are logged in as: [example@test.com].

Pick cloud project to use: 
 [1] test-project
 [2] testtest-project
Please enter numeric choice or text value (must exactly match list item):

と、プロジェクトを既に作成していれば、候補が出てくるので適当に選択します。

次に、リージョンを選択すれば終わりです。僕は面倒だったのでデフォルトのままにしてます。

中国、韓国、北朝鮮のIPを遮断

する前に、リストを作成します。

以下にアクセス。

https://ipv4.fetus.jp/krfilter

cn,kr,kpのnginx用の雛形を開きます。

全てコピーして、vim42.156.0.0/19,の形に総置換、総整形します。

これでおk。

実際には250行ごとに改行をなくす置換したものを使っていきます。

firewallルールの作成

ブラウザ上で作成したものに対してupdateかければ簡単です。

雛形こんな感じ。

f:id:rdwbocungelt5:20180806144637p:plain

ソースIPの範囲は適当で大丈夫です。あとからupdateかけるので。

ちなみに、この一つのルールに255個しか設定できないみたいなので、何個も作る形になります。

根気、大事。

gloudコマンドでfirewallをアップデート

gcloudコマンドはTAB補完が優秀ですね。

それはおいておいて、今回の対象ルールはchina-block-01です。

前に準備しておいた、中国IPを250個くらいコピーして--source-rangesオプションの後にくっつけます。

$ gloud compute firewall-rules update chine-block-01 \
--source-ranges 1.0.1.0/24,1.0.2.0/23,1.0.8.0/21,1.0.32.0/19,1.1.0.0/24,1.1.2.0/23,1.1.4.0/22,1.1.8.0/21,1.1.16.0/20,1.1.32.0/19,1.2.0.0/23,1.2.2.0/24,1.2.4.0/22,1.2.8.0/21,1.2.16.0/20,1.2.32.0/19,1.2.64.0/18,1.3.0.0/16,1.4.1.0/24,1.4.2.0/23,1.4.4.0/22,1.4.8.0/21,1.4.16.0/20,1.4.32.0/19,1.4.64.0/18,1.8.0.0/16,1.10.0.0/21,1.10.8.0/23,1.10.11.0/24,1.10.12.0/22,1.10.16.0/20,1.10.32.0/19,1.10.64.0/18,1.11.0.0/16,1.12.0.0/14,1.16.0.0/14,1.24.0.0/13,1.45.0.0/16,1.48.0.0/14,1.56.0.0/13,1.68.0.0/14,1.80.0.0/12,1.96.0.0/12,1.116.0.0/14,1.176.0.0/15,1.180.0.0/14,1.184.0.0/15,1.188.0.0/14,1.192.0.0/13,1.201.0.0/16,1.202.0.0/15,1.204.0.0/14,1.208.0.0/12,1.224.0.0/11,14.0.0.0/21,14.0.12.0/22,14.0.32.0/19,14.0.64.0/18,14.1.0.0/22,14.1.24.0/22,14.1.96.0/22,14.1.108.0/22,14.4.0.0/14,14.16.0.0/12,14.32.0.0/11,14.64.0.0/11,14.102.128.0/22,14.102.156.0/22,14.102.180.0/22,14.103.0.0/16,14.104.0.0/13,14.112.0.0/12,14.128.128.0/17,14.129.0.0/16,14.130.0.0/15,14.134.0.0/15,14.138.0.0/16,14.144.0.0/12,14.192.60.0/22,14.192.76.0/22,14.192.80.0/20,14.196.0.0/15,14.204.0.0/15,14.206.0.0/16,14.208.0.0/12,27.0.128.0/21,27.0.160.0/21,27.0.188.0/22,27.0.204.0/22,27.0.208.0/21,27.0.236.0/22,27.1.0.0/16,27.8.0.0/13,27.16.0.0/12,27.34.232.0/21,27.35.0.0/16,27.36.0.0/14,27.40.0.0/13,27.50.40.0/21,27.50.128.0/17,27.54.72.0/21,27.54.152.0/21,27.54.192.0/18,27.96.128.0/18,27.98.208.0/20,27.98.224.0/19,27.99.128.0/17,27.100.128.0/17,27.101.0.0/16,27.102.0.0/15,27.106.128.0/18,27.106.204.0/22,27.109.32.0/19,27.109.124.0/22,27.111.96.0/19,27.112.0.0/18,27.112.80.0/20,27.112.112.0/21,27.112.128.0/17,27.113.0.0/17,27.113.128.0/18,27.115.0.0/16,27.116.44.0/22,27.116.64.0/18,27.116.128.0/17,27.117.0.0/16,27.118.64.0/18,27.118.128.0/17,27.119.0.0/16,27.120.0.0/18,27.121.72.0/21,27.121.120.0/21,27.122.128.0/17,27.123.232.0/22,27.124.128.0/17,27.125.0.0/17,27.126.0.0/18,27.128.0.0/15,27.131.220.0/22,27.144.0.0/16,27.148.0.0/14,27.152.0.0/13,27.160.0.0/11,27.192.0.0/11,27.224.0.0/14,27.232.0.0/13,27.255.64.0/18,36.0.0.0/22,36.0.8.0/21,36.0.16.0/20,36.0.32.0/19,36.0.64.0/18,36.0.128.0/17,36.1.0.0/16,36.4.0.0/14,36.16.0.0/12,36.32.0.0/14,36.36.0.0/16,36.37.0.0/19,36.37.36.0/23,36.37.39.0/24,36.37.40.0/21,36.37.48.0/20,36.38.0.0/15,36.40.0.0/13,36.48.0.0/15,36.51.0.0/16,36.56.0.0/13,36.96.0.0/11,36.128.0.0/10,36.192.0.0/11,36.248.0.0/14,36.254.0.0/16,36.255.116.0/22,36.255.128.0/22,36.255.164.0/22,36.255.172.0/22,36.255.176.0/22,36.255.220.0/22,39.0.0.0/24,39.0.2.0/23,39.0.4.0/22,39.0.8.0/21,39.0.16.0/20,39.0.32.0/19,39.0.64.0/18,39.0.128.0/17,39.4.0.0/14,39.16.0.0/12,39.64.0.0/11,39.96.0.0/13,39.104.0.0/14,39.108.0.0/16,39.112.0.0/12,39.128.0.0/10,40.72.0.0/15,40.125.128.0/17,40.126.64.0/18,42.0.0.0/22,42.0.8.0/21,42.0.16.0/21,42.0.24.0/22,42.0.32.0/19,42.0.128.0/17,42.1.0.0/19,42.1.32.0/20,42.1.48.0/21,42.1.56.0/22,42.1.128.0/17,42.4.0.0/14,42.8.0.0/13,42.16.0.0/12,42.32.0.0/12,42.48.0.0/13,42.56.0.0/14,42.62.0.0/17,42.62.128.0/19,42.62.160.0/20,42.62.180.0/22,42.62.184.0/21,42.63.0.0/16,42.80.0.0/15,42.82.0.0/16,42.83.64.0/20,42.83.80.0/22,42.83.88.0/21,42.83.96.0/19,42.83.128.0/17,42.84.0.0/14,42.88.0.0/13,42.96.64.0/19,42.96.96.0/21,42.96.108.0/22,42.96.112.0/20,42.96.128.0/17,42.97.0.0/16,42.99.0.0/18,42.99.64.0/19,42.99.96.0/20,42.99.112.0/22,42.99.120.0/21,42.100.0.0/14,42.120.0.0/15,42.122.0.0/16,42.123.0.0/19,42.123.36.0/22,42.123.40.0/21,42.123.48.0/20,42.123.64.0/18,42.123.128.0/17,42.128.0.0/12

Updated [https://www.googleapis.com/compute/v1/projects/あなたのプロジェクト名/global/firewalls/china-block-01].

問題なければupdatedと出てきます

GCPのファイアーウォールルールを確認すると。。。

f:id:rdwbocungelt5:20180806145520p:plain

(入りきれてないですが)ちゃんと更新されてるのが確認できました\(^o^)/

おわりに

https://cloud.google.com/compute/docs/reference/rest/v1/firewalls/update

ここのTry this APIが固まって使えなかったので、gcloudコマンド入れてやる次第になったのですが、複数一気に追加できるのは凄い便利です。

updateではなくcreateで作った方がいいなと思ったり思わなかったり。

追記

最終的にファイアーウォールルールを24個も作成しました。

同じ作業の繰り返しでうつになるかとおもった。