ブログ/こばさんの wakwak 山歩き Twitter

2018-02-14 ヤマハルーター向け鎖国フィルタージェネレーターの使い方

ヤマハルーター向け鎖国フィルタージェネレーターの使い方

| ヤマハルーター向け鎖国フィルタージェネレーターの使い方を含むブックマーク

 海外からの SIP 攻撃に業を煮やし、急遽、国外IPを弾く作戦に出たのが昨年の11月。

 その取り組みは功を奏して、以後、まったく攻撃を食らうことがなくなりました。

 

 滅多に利用機会がないものの、自宅ルーターは外出先からも入って来れるように IPSec/L2TP と SSH のポートも開けてあるのですが、心配事が減るよう、それらも SIP 同様に「日本以外拒否」という風にしています。

我が家は前衛に RT58i、その配下に RT107e という組み合わせで、後者が IPSec を担当


Raspberry PI の SSH はパスワード認証を拒否し証明書認証のみにしてあるので、総当たり食らっても大丈夫と思われるが、無駄な負荷をかけられるのも嫌なので


 アメリカ出張が多い人だと、「日本・アメリカ 以外を拒否」にしたい場合もあるでしょうし、いっそのこと自由にフィルター定義を作って頂けるよう ヤマハルーター向け鎖国フィルタージェネレーター を用意してみました。


http://dl.ftrans.etr.jp/?86d4baf7421e43ef8306678df5fed984c6c92d85.png


 条件を指定して request file するたけで、テキストファイルでフィルター文が手に入る、というものです。

 かなり積極的に隣接する CIDR を結合していますので、フィルター行数は最小限かと思います。

  • /7 や /6 はザラで、最高 /3 で括ってます。
  • IPアドレスの前ゼロは本来は要らないのですが、メモ帳で開けたときに見やすいように無駄に入れてます。


 例えば

  • 内側に WEBサーバー/メールサーバー(SMTP/POP/IMAP)がいる。
  • WEB閲覧は全ての国に許可
  • メールは全ての国から受信
  • 受信したメールを読むのは日本国内からのみ
  • 保守用の IPSec/L2TP と SSH も日本国内からのみ
  • プロバイダの050番号も収容(RT58iとかNVR500とか想定)

という要件を具現化する場合を例に書きます。

# 例外なく拒否
ip filter 10 reject 10.0.0.0/8,100.64.0.0/10,172.16.0.0/12,192.168.0.0/16 * * * *
ip filter 11 reject * * udp,tcp * 135,netbios_ns-netbios_ssn,445
ip filter 12 reject * * udp,tcp 135,netbios_ns-netbios_ssn,445 *

# 国に関係なく許可
ip filter 30 pass * [メールサーバー] tcp * 25
ip filter 31 pass * [WEBサーバー] tcp * 80,443

# 日本以外を拒否
ip filter 100 reject ・・・
  (省略) ※この部分をジェネレータが作る
ip filter 138  reject ・・・

# 日本のみ許可
ip filter 300 pass * [メールサーバー] tcp * 110,143,587
ip filter 301 pass * [VPNサーバー] udp * 500,4500
ip filter 302 pass * [SSHホスト] tcp * 22
ip filter 303 pass * [ルーター] tcp * 5060
ip filter 304 pass * [ルーター] udp * 5004-5035,5060  # 注)ISP によって相違あり

# これを pp に適用する
pp select 1
ip pp secure filter in 10 11 12 30 31 100 101 ・・ 138 300 301 302 303 304

 こんな風になるかと思います。

 「フィルター番号 300〜 で特に国の IP を指定してないのに日本のみ許可になるの?」って思われるかもしれませんが、ヤマハのルーターは最初から順番に評価していって該当した時点で終了する(それより以降は評価されない)という挙動なので、300 よりも前の 100〜138 が先に評価され、そこで「日本以外だったら reject」だったら、日本以外はここでふるい落とされことになり、結果として 300〜 は日本のみ、という風になります。


 別に nat descriptor masquerade static 〜 やるしぃ・・・って割り切りだったら、[メールサーバー] [VPNサーバー]・・・等々、内側の IPアドレス は * で省略しちゃってもいいかと思います。


 ブラウジングや DNS 解決など、内側を起点とする戻りのパケットは通さないといけないので、この辺はダイナミックフィルターで通してやって下さい。

# 例外なく拒否
ip filter 20 reject * 10.0.0.0/8,100.64.0.0/10,172.16.0.0/12,192.168.0.0/16 * * *
ip filter 21 reject * * udp,tcp * 135,netbios_ns-netbios_ssn,445
ip filter 22 reject * * udp,tcp 135,netbios_ns-netbios_ssn,445 *

# 何でもあり(家庭用ルーターのデフォルトと同次元)
ip filter 40 pass * * * * *

# ダイナミックフィルター
ip filter dynamic 1 * * tcp
ip filter dynamic 2 * * udp

# これを pp に適用する
pp select 1
ip pp secure filter out 20 21 22 40 dynamic 1 2

 考え方を説明しただけで、かなりユルユル設定です。

 細かい説明も省略してますし、これだけじゃ駄目で他にも設定が必要ですが、鎖国を検討しているような方なら多分この程度でも御理解いただけれると思われ。。

 あとは各自で追い込んでくださいね!


 不審点 or 疑問点 等々あれば、お気軽にコメントどうぞ


(補足)

 現時点では、同じ条件だったらキャッシュを返すみたいな機構を用意しておらず毎度計算してます。

 スクリプトで回されると耐えられないので、captcha 使わせてもらってます、すみません。

 そう頻繁にアドレス枠が大きく変動するわけじゃないので、更新は数ヶ月に1回とかで大丈夫だと思いますが、自動的に定期更新する仕組みは目処がたっていますので、それまでご辛抱いただけたらな、と。


 内部的に持ってるデータベースは毎週月曜の未明に更新されます。

 月曜〜日曜は何度やっても同じ結果になります。


(追記)2018/02/24

 定期更新の自動化に関して つづき を書きました。

GooGooGooGoo 2018/09/15 03:16 はじめまして

いつも楽しく読ませていただいております。
「日本以外拒否」の設定で作成したフィルターを、SRT100に
合うように一部変更し config に設定してみたのですが、config
に「文字数制限」があるようで、設定できませんでした。
「日本のみ許可」の設定で作成したフィルターの場合も、「文
字数制限」に引っかかるようでしたので、SRT100あたりの古
い機種で使用するには、文字数を減らす工夫が必要そうでした。
今回、SRT100では無理でしたが、参考にさせていただきます。

ありがとうございました。

こばさんこばさん 2018/09/15 10:37 こんにちは。

この記事の続編となる自動化むけAPIのほう(http://d.hatena.ne.jp/wakwak_koba/20180224)では1行あたりの文字数を引数で指定できるようにしましたが、こちらのバージョン(自動化よりも古い)では未対応でした。

早速ですが、文字数も指定できるようにしました。
(デフォルトは4000文字)
SRT100 は持ってないので試せていないですが、一度チャレンジしてみて下さい。


あと更に、キャッシュ機構を実装して負荷の問題が軽減したので、日本国内からのアクセスについては captcha を外しまして、いきなりファイルを入手できるようにしました。

GooGooGooGoo 2018/09/15 18:44 こんばんは

対応ありがとうございます。
いろいろテストしてみたところ、config全体の「サイズ」制限があるようでした。

フィルター等の config の設定を、1行ずつターミナル等から入力していくことは
可能なのですが、「save」を行うことができない状態になります。
configをテキストファイルとして保存した場合でいうと64KBあたりで save でき
なくなるようでした。
(saveできない状態で正しく動作しているかは確認していませんが)
これがSRT100の制限なのか、RTX1100世代あたりの制限なのかはわかりません
が、古いですからしょうがないのかなってところです。

わざわざ対応していただいたのに、申し訳ありませんでした。
失礼します。

こばさんこばさん 2018/09/16 00:26 こんばんは。
JP以外を弾くというフィルターファイルを使って

tftp [ルーターのIP] [フィルターファイル] put config/[ルーターのパスワード]

という方法で試した結果ですが、RT57i、RT58i、NVR500、RT107e、RTX1000、RTX1100、RTX1200、RTX1210 では成功しているんですけど、SRT100 はダメですか。
持ってないので試せていないですが、他の機種よりもファイアウォール関係でメモリー食ってそうなのでユーザーの使えるメモリーが制限されているのかもしれませんね。

どうしても・・って話だったら、RTX1200 あたりでも中古で数千円まで値落ちしてるので、SRT100 の下に置いて二重ルーターで・・・って話もありますが、私のほうも ip pp secure filter のみならず、ip lanN secure filter ・・・ に対応させてないといけないです。。。

使われる人がいるかどうか分かりませんが、せっかくなので近日中に対応しときたいと思います〜

GooGooGooGoo 2018/09/16 05:57 おはようございます。

いろいろ確認していただき、ありがとうござます。
RTX1100 や RT107e でも成功しているんですね。

SRT100 にこだわりがあるわけではなく、「トリガによるメール通知」
の機能のために SRT100 を使っていただけなので、中古の RTX1200等
を検討してみます。

ありがとうございました。

どらえどらえ 2018/10/06 21:26 こんにちは。
SIP攻撃について検索していたらこちらへたどり着きました。
週に2回ほど、終端装置とNVR500を電源入れ直してIP変えていますがしつこいので鎖国フィルタージェネレータの設定項目さえ理解できれば適応したいなと思っております。
(公開しているサーバーはNVR500に繋げているAsus無線APの簡易ファイルサーバーのhttpsのみ)
(自分は外部からNVR500の設定画面は利用しませんし、VPNは使いません)
SIP攻撃は電話設定で防御していますが困るのは攻撃が続くと何故か正常にコチラの電話番号で掛けているSIPも着信しなくなる現象が出てしまうのです。なので再起動をしています。
急ではありませんが、また書き込みさせていただくかも知れません。
では。

GooGooGooGoo 2018/11/03 02:24 こんばんは

先日はありがとうございました。
ありがたく使わせていただいております。
RTX1200かRTX810の中古が手に入りそうなので、準備としてRTX 1500(これも古いですが)でテスト
しているのですが、ターミナル等で入力した際「IPアドレスの範囲が認識できません」のメッセージが
表示されることがありましたので、ご迷惑かと思いましたが書き込みさせていただきます。
例えば、ロシア(RU)からの接続を拒否する目的で、下記のようにジェネレーターを設定
項目の上から 「pp in reject -nolog 100 1 4000 チェック無し(除外オプション)」
対象国は「RU」のみチェック
といった設定で作成されたフィルターに「031.135.244.000/21」が含まれており、これがエラーになる
ようでした。「031.135.244.000/22」等に変更すればメッセージは表示されません。
(指定しているIPアドレスより、若いというか前のアドレスが含まれていることがダメなのか?
/20 /21 の場合が多いようです。)
元データの問題かなとも思いますが、気になりましたので…。
使わせていただいてる立場なのに、クレーマーのような書き込みで申し訳ありません。

では、失礼いたします。

こばさんこばさん 2018/11/03 10:40 おはようございます。

クレーマーのようだなんて、そんなことないです。
これもそうですが、私が日常的に使っているものを他の方にも「お裾分け」して、私が見つけていない不具合を誰かに発見してもらおう、という虫のいいことを兼ねてますもので、不具合を知らせて下さる方は実は神様なんです!!


元データが、「RU に 31.135.244.0 から 2048個」という風になってて、これを機械的に 31.135.244/21 に変換してしまっていたことが原因でした。

元データを機械的に処理することを止めて、いったん細かい単位に分解したうえで隣接するセグメントを可能な限り再結合させる、という風に全面的に見直しましてご指摘の問題も解消しました。

【従来】
31.135.244/21
【現在】
31.135.244/22
31.135.248/22

副作用的に、再結合がうまく作用し、日本を例にすると1行4000文字の場合で、21行→14行 に filter 行の削減にも成功しました。

また何かありましたら遠慮なく指摘して下さいませ!!

GooGooGooGoo 2018/11/04 04:04 こんばんは。

対応ありがとうございます。
まだ、configに組み込んではいませんが、作成されたファイルのサイズというか行数が
ずいぶん減っていて、びっくりしました。明日(もう今日かな)にでも組み込んで見ます。
いろいろ気を使っていただきありがとうございます。
ありがたく使わせていただきます。

では、失礼いたします。