超ざっくり日本国内だけ通信許可するさくらのVPSのパケットフィルター
ネットマスクをいい感じにいじって(もうらうようにAIにお願いして)日本国内(国外もそれなりに混じる)からのアクセスだけ許可するよう設定しました
経緯¶
10年前(2015)に ざっくり日本国内だけ通信許可するiptables というブログを書いたんですが、当時は
- アメリカとか中国とか色んな国から、なんか悪いことを目的としたアクセスが頻繁にくる
- よって、httpとhttps以外のポートは全て閉じたいが、自分的に不便
- そうだ、日本国内だけ許可したらいいじゃない
- ところが、SeversMan@VPSのCentOSのiptablesは、登録できるエントリー上限が256の模様 なんとか256個の制限内に収めたい
で、日本で使われているIPアドレスの第一オクテッド(つまり、aaa.bbb.ccc.ddd のaaa)だけを見て、日本かどうか判断するというのをやっていました(それなりに効果はあったと思う)
それで10年たった今、似たような状況がまた発生したんですね
- アメリカとか中国とか色んな国から、なんか悪いことを目的としたアクセスが頻繁にくる( 10年前よりひどい )
- よって、httpとhttps以外のポートは全て閉じたいが、自分的に不便
- そうだ、日本国内だけ許可したらいいじゃない
- ただCPUもメモリも少ないVPSを使っているのでiptablesに大量に登録したくない
- さくらのVPSのパッケットフィルター(無料!)で防げばいいじゃない
- ところが登録できるルールの上限が20の模様 なんとか20ルールの制限内に収めたい
…10年前より制限きついやんけ、、とうわけでチャレンジしました
さくらのVPSのパッケットフィルターとは¶
- さくらのVPSを使っている人のみが使えし無料のファイアウォール
- 登録ルールは20が上限、ただ許可する送信元IPアドレスをCIDRで設定できる。なので やりようによっては許可するIPアドレスをおおきくまとめることができる
- 使っているVPSとは別の装置でフィルタリングしてくれているので、VPSがパケットフィルタリングのリソースを割かなくてもよい(うれしい!)
日本国内で使っているIPアドレスをいい感じにまとめる¶
国外のIPアドレスが混じっちゃってもかまわない(妥協)ので、いい感じにまとめてくれとAIくんにお願いしました
最初は、渋って20以上のルールとか回答してきたAIくんですが、「 頑張れ頑張れできるできる絶対出来る頑張れもっとやれるって!やれる気持ちの問題だ頑張れ頑張れそこだ!そこで諦めんな絶対に頑張れ積極的にポジティブに頑張る頑張る!iptablesだって頑張ってるんだから! 」と修造ばりに熱く語りかけることで、いい感じの回答が得られました
AIのしごと¶
厳密に検証していません、が、おおむねカバーできてそう。5ルールで。でかした!
これならまだ15ルール分余裕があるので、細かく制御したい分はルール追加すればいいんじゃ
以下、AIの回答
サマリ¶
日本の全 IPv4 アドレス(約1.99億アドレス)はすべて APNIC(アジア太平洋地域インターネットレジストリ)の管轄下にある複数の /8 ブロックで割り当てられています。これらを効果的に 5 つの大きな CIDR(/4, /4, /3, /3, /2)にまとめることで、国内 IP をすべてカバーしつつ、海外 IP の一部混在も許容したまま、パケットフィルターのルール数を大幅に削減できます
日本の IP 割り当て概要¶
- 総割り当て:日本国内には約199,092,992 個の IPv4 アドレスが割り当てられています(約2億)- APNIC 管轄:これらはすべて JPNIC を通じて APNIC より /8 ブロック単位で配布されています(例:1.0.0.0/8, 14.0.0.0/8, 27.0.0.0/8 … 183.0.0.0/8)
- 海外 IP の混在:上記 APNIC ブロックは日本以外のアジア太平洋地域にも及ぶため、集約時には国内外の混在が避けられませんが、国内カバーを最優先とします
CIDR による大域的集約手法¶
CIDR(Classless Inter-Domain Routing)では、隣接する /8 ブロックを**より大きなプレフィクス**にまとめることで、ルール数を劇的に削減できます。以下では、日本の割り当て/APNIC ブロックを 5 つのネットワークに圧縮した例を示します。
集約プレフィクス | 範囲(第1オクテット) | 含む主な APNIC /8 ブロック |
---|---|---|
1.0.0.0/4 | 1–15 | 1.0.0.0/8, 14.0.0.0/8 |
16.0.0.0/4 | 16–31 | 27.0.0.0/8 |
32.0.0.0/3 | 32–63 | 36.0.0.0/8, 39.0.0.0/8, 42.0.0.0/8, 43.0.0.0/8, 49.0.0.0/8,58.0.0.0/8, 59.0.0.0/8, 60.0.0.0/8, 61.0.0.0/8 |
96.0.0.0/3 | 96–127 | 101.0.0.0/8, 103.0.0.0/8, 106.0.0.0/8, 110.0.0.0/8, 111.0.0.0/8,112.0.0.0/8–126.0.0.0/8 |
128.0.0.0/2 | 128–191 | 133.0.0.0/8, 153.0.0.0/8, 175.0.0.0/8, 180.0.0.0/8,182.0.0.0/8, 183.0.0.0/8 |
参考情報¶
- APNIC がアジア太平洋地域(日本含む)に割り当てる /8 ブロック一覧(例示): Wikipedia
- 日本の割り当て IP 総数: IP2Location LITE
- APNIC 管轄と機能概要: APNIC 公式サイト
- IANA IPv4 アドレス空間レジストリ: IANA 公式サイト
- GeoIP 用国別集約ゾーン例: IPdeny
- FireHOL のアジア大陸 IP リスト: FireHOL (IPDeny データ)
- カントリー ACL 自動生成ツール: CountryIPBlocks
設定とその後¶
というわけで設定した!
それなりに機能していて、ある程度の攻撃パケットは防いでくれています(漏れた国外からのアクセスもあるにはあります)
ただ無料なので、やっておいて損はないはず~
コメント