20200505_まなんだこと
一応お休み中ですけど。地域アクセス制御の方法について色々。
「FWポリシーべた書き以外にもっと他に楽な方法あるよな、GeoなんちゃらとかDNSの解決のまわりとか・・Route53もGeoルーティング的なのあったよな確か・・」くらいの淡い淡い認識だったので調べ直した。
基本、リクエストヘッダのsrcIPアドレス or 任意の値を見て制御。IPアドレスの取得元については、GeoIP DBもしくは各RIRが出しているIPアドレスDB。
1.ネットワーク側でできること
・FWポリシーで設定
FortiとかPaloだと地域/国指定ができて、自分でGeoIPリストを確認して更新して~をやらなくていいんですね。
が、checkpointとかjuniper※は見つからなかった・・アドレス移転情報に気を配って都度アップデートしないとってことですよね・・まさかGUIでいっこいっこやるなんてことは・・
※GeoIP見てくれる製品はあるみたい。
cf. アップデートが追いついてないと何が起こるか
・DNSのGeoIP機能を使う
bind9.10~で実装されてるGeoIP機能:srcIPの国を見て応答する内容を変える機能を使って、特定の国からのリクエストのみ正しいIPを答えるようにさせればよくねという発想。・・・ただ、調べてる中でそういう使い方をしてるケースって全然出てこないので、あんまりよろしくないのかもしれない。
https://blog.apnic.net/2018/11/14/geoip-in-knot-dns-2-7/
cf. Route53のGeo Routingなら・・・
・CDN / WAF使う
Geoフィルタリング系の機能をつけているCDN/WAFは多いし金があるなら使えばいいと思う。確認したAWSのはGeoIP DBベースでやってる※1※2ので、自分でIPリストのメンテが不要。
2.サーバ側でできること
・IPアドレスを.htaccess / httpd.conf / iptables(firewalld) / hosts.allow(deny)に突っ込む、モジュールやプラグインを使う
無論、GeoIPリスト更新は自動的にやらないとしんどい。
https://www.linuxsecrets.com/3805-tcp-wrapper-block