ルーターでDDNSの使用を開始してみた

 個人的に使用しているASUSの無線ルーターには、DDNS*1クライアント機能が搭載されています*2
 サーバー絡みの実験などをしていると、ちょっと公開してみたいこともあります(クラウド使えばいいのに、という思いもあるけど)。

 ということで、ASUSの提供するDDNSを使い始めてみて、気付いた挙動などを紹介します。
 

利用開始

使用ルーター
ASUS RT-AC56S*3

 

事前準備

 ルーターDDNSクライアントになるということは、ルーターがインターネットに公開*4された状態となるわけです。
 DDNSの利用可否に係らずセキュリティの観点から、ルーターのハードニングを行うべきですが、DDNSを利用する際はより厳格な設定を行うべきでしょう。
 ※以下は一例であり、絶対的な安全性を保障するものではありません。

 最新ではないファームウェアを利用している場合は、ファームウェアを更新する(記載時点では3.0.0.4.378_9459が最新)。

  • ファイヤーウォール機能の有効化
ファイヤーウォールを有効にしますか
はい
DoS保護を有効にしますか
はい
ログするパケットタイプ
必要に応じて設定
WAN側からのPING要求
いいえ(調査時など必要に応じて[はい]にする)

f:id:kachine:20160514220253p:plain

  • システム設定
ルータのログイン名
デフォルトから変更する
新しいパスワード
それなりに難しくする
SSH Enable
いいえ(ルーターSSH接続できなくする)
Telnetを有効にする
いいえ(ルーターTelnet接続できなくする)
WAN側からの設定を有効にする
いいえ(WAN側から管理画面に入れなくなるはずなのだが…後述)

f:id:kachine:20160514220309p:plain
 

DDNS

 ルーター管理画面から[詳細設定]-[WAN]-[DDNS]と進んで、

DDNS クライアントを有効にする
はい
サーバー
WWW.ASUS.COM
ホスト名
設定したい名前.asuscomm.com

f:id:kachine:20160514220327p:plain
 と入力して[適用]ボタンを押下。これだけでDDNSが利用開始できます。
f:id:kachine:20160514220444p:plain
 ASUS以外に上記のDDNSサービスにも対応していますが、ASUSの自社提供DDNSなら面倒な利用登録もなく、非常に簡単に利用開始が可能です。

 

動作確認

 ルータ管理画面の[ネットワークマップ]を選択し、
 インターネットの状態にDDNSのホスト名が表示されていれば、DDNSクライアントとして稼働していることが解ります。
f:id:kachine:20160514220523p:plain
 このホスト名が、その上に表示されているWAN IPとして解決されていることが確認できればよいわけです。
nslookup for asuscomm.com
 から、nslookupの方にホスト名を入力後[Query]ボタンを押下して、

The ip address of 設定した名前.asuscomm.com is : ***.***.***.***(WAN IPと同じIPアドレス)

 と表示されれば、正常にDDNSが稼働していることが解ります。もちろん、端末からnslookupコマンドを叩いて直接確認することもできます。
 

 後はWebサーバーなり、FTPサーバーなり目的のサーバーを稼働させているLAN内のマシン宛に、ルーターからポートフォワードしてやれば、DDNSによって固定されたURLでインターネットにサーバーを公開できます。
 

DDNSのホスト名でアクセスしてみたら…

 何もポートフォワードしていなければ、応答する人がいないので、DDNSのホスト名にブラウザからアクセスしても何も起きないはずです(タイムアウトになるはず)。
 が、WAN側からの設定を無効にしているにも係らず、ルータ設定画面のログイン画面が現れます。
 そして普通にログインできて、設定変更もできてしまいます…
 「WAN側からの設定を有効にする: いいえ」の設定が実は機能していないようです。
 もちろん、ルーターの管理画面にはパスワード認証があるため、直ちに危険というわけではありませんが、管理画面をインターネットに晒し続けるメリットは何もありません。

 検索してみたところ、asuscomm.comドメインでルータ管理画面を晒しているサブドメインがいくつか見つかるものの、それほど多くはなさそうな感触。
 故に、このバグ(?)は必ず発動する訳ではなく、何らかの複合条件が組み合わさると発動するのかもしれません。
 取り急ぎ、80番ポートのポートフォワーディングを設定し、適当なローカルIPに向けておくことでルータの管理画面はインターネットから遮断できました。
f:id:kachine:20160514220550p:plain
 

補足

 設定に反して意図せずルーター管理画面が公開されたことに恐怖を感じ、念のためポートスキャンもどきをかけてみたところ、Well-Knownなポートは他には空いていなかった。1024-65535はスキャン中。
 DDNS設定後、一週間にも満たない僅か数日であるが、放置した後のログを分析したところ以下の通り*5
 

ACCEPT(フォワーディングしてないポートのみ抜粋)
  • Port#43503
kernel: ACCEPT IN=ppp0 OUT=br0 SRC=201.17.AAA.AAA DST=192.168.xxx.xxx LEN=47 TOS=0x00 PREC=0x00 TTL=46 ID=23159 PROTO=UDP SPT=44276 DPT=43503 LEN=27 
kernel: ACCEPT IN=ppp0 OUT=br0 SRC=201.17.AAA.AAA DST=192.168.xxx.xxx LEN=52 TOS=0x00 PREC=0x00 TTL=46 ID=23158 DF PROTO=TCP SPT=26240 DPT=43503 SEQ=1492591983 ACK=0 WINDOW=8192 RES=0x00 SYN URGP=0 OPT (020405860103030801010402) 
kernel: ACCEPT IN=ppp0 OUT=br0 SRC=182.68.BBB.BBB DST=192.168.xxx.xxx LEN=54 TOS=0x00 PREC=0x00 TTL=109 ID=23519 PROTO=UDP SPT=10398 DPT=43503 LEN=34 
kernel: ACCEPT IN=ppp0 OUT=br0 SRC=95.42.CCC.CCC DST=192.168.xxx.xxx LEN=47 TOS=0x00 PREC=0x00 TTL=111 ID=29560 PROTO=UDP SPT=9489 DPT=43503 LEN=27 
kernel: ACCEPT IN=ppp0 OUT=br0 SRC=95.42.CCC.CCC DST=192.168.xxx.xxx LEN=52 TOS=0x00 PREC=0x00 TTL=111 ID=29558 DF PROTO=TCP SPT=51930 DPT=43503 SEQ=302605211 ACK=0 WINDOW=8192 RES=0x00 SYN URGP=0 OPT (020405860103030201010402) 

 見知らぬ通信が行われている…何これ怖い。
 調査のため、デスティネーションに記されたローカルIPの端末で43503ポートで待ち受けてるプロセスIDを特定する。

>netstat -a -o| findstr 43503
  TCP         192.168.xxx.xxx:43503    HOSTNAME:0             LISTENING       1372
  UDP         192.168.xxx.xxx:43503    *:*                                    1372

 このプロセスが誰だか特定する。

>tasklist /FI "PID eq 1372"

イメージ名                     PID セッション名     セッション# メモリ使用量
========================= ======== ================ =========== ============
SkypeHost.exe                 1372 Console                    2      1,412 K

 このマシンでSkype使ってないんですが。
 軽く調べてみると、Windows10にはデフォルトで導入されているらしい。
 デフォルトで導入するのはいいけど、勝手に動かないで欲しい。無効化できないなら消そうと思う。
 とりあえずマルウェア系ではなさそうなので、一旦放置。
 

  • Port#62303
kernel: ACCEPT IN=ppp0 OUT=br0 SRC=54.178.DDD.DDD DST=192.168.xxx.yyy LEN=39 TOS=0x00 PREC=0x00 TTL=51 ID=0 DF PROTO=UDP SPT=30000 DPT=62303 LEN=19 

 そもそも、このローカルIPの端末が解らない。

>nslookup 192.168.xxx.yyy
サーバー:  router.asus.com
Address:  192.168.xxx.1

名前:    iPhone
Address:  192.168.xxx.yyy

 iPhoneお前か。
 iOSでは誰がこんなポート開けて通信しているのか調べる手段が無い。
 JailBreakでもしてなければ、iOSって一応安全なんでしょ?ってことでとりあえず静観(見て見ぬふり)。
 

DROP

 他所からリンクされているわけでもないのに、DDNS設定後、一日平均500回程度のDROPが記録されていた。
 (より正確には、DDNS設定に併せてDROP/ACCEPTをロギングする設定にしたので、気づいてなかっただけで従来もWAN側IP宛に攻撃は施行されていた可能性が高い。)
 攻撃者も辞書か総当たりかで見つけてくるんだろうけど、よく見つけるわ。
 (こちらが待ち受けていないパケットを投げてくる輩の全てが攻撃者というわけでもないんだろうけど。)

 と、感心してもいられないので、簡単に分析してみた。
 

  • ポート別DROP回数(横軸ポート番号、縦軸DROP回数の散布図)

f:id:kachine:20160514202845p:plain
 特定のポート番号がよく狙われていることが読み取れつつも、全体的にはWell-Knownポート(に限らず比較的小さい番号のポート)が多く狙われているようにも見える。
 

  • ポート別DROP回数(ソート後上位を抜粋)

 狙われた回数が多いポートは以下の通り。
f:id:kachine:20160514202946p:plain
 参考までに10回以上試行されたポート番号を下表にも列挙しておきます(80番ポートは前述の理由によりフォワーディングしているため、ここには現れません)。

Port# 回数 本来の用途
23 462 Telnet
53413 148 ?
1433 126 SQL Server
22 57 SSH
5060 54 SIP
5353 47 mDNS
3389 43 RDP
6379 33 ?
8080 21 HTTP alternate
3306 19 MySQL
443 16 HTTPS
445 14 ActiveDirectory
33445 11 ?
33446 11 ?

 やはりというか、Telnet狙いが一番多いみたいです。
 そんな中、見慣れないポートもありますが、Port#53413というのはNetis製ルータの脆弱性を狙ったものらしく、簡単に乗っ取れるらしいので悪い人が探してるのでしょう。
 

  • ホスト別DROP回数(横軸のIPアドレスはモザイク加工)

f:id:kachine:20160514203231p:plain
 特定の攻撃元があるわけでもなさそう。
 軽く調べると上位の5つのIPアドレスは順に中国、米国、米国、米国、ルーマニアのもので、いずれも知らない組織の所有するIPであった。
 続いて、Verizon、China Telecom、Akamai TechnologiesのIPが上位に並んだけど、そのユーザーが悪さを試みているのか、踏み台にされているだけなのかは識別できない。
 そこら辺が不明な以上は、攻撃元組織の実態を表していないと考えるべきでしょう。
 なお、上位12番目には実在する米国の大学のIPが出てきたのだけど、ログと突き合わせると全てDF PROTO=ICMP TYPE=8と出てるので、目的は不明ながらもping打ってるだけっぽい。
 

  • 時間帯別DROP回数

f:id:kachine:20160514203355p:plain
 グラフ中の表記は日本時間。日本の昼過ぎから夕方過ぎまでが下がっているように見える。
 スクリプトで24時間全自動で攻撃先を探しているわけではなく、人力で手作業しているのも多いため、時間帯に偏りが生じていると読み取れる?
 組織的に日中に攻撃を試行しているのと、趣味的に深夜に攻撃をしているのと混在し、その比率も解らない以上は、時差を考慮しても、実際の攻撃元国は識別できなさそう。




以上。

*1:Dynamic DNS/ダイナミックDNS

*2:別にそれ自体は珍しくもなく、BuffaloやIO DATAなど国内メーカーも含めて多くのルーターに搭載されている機能である。

*3:ASUSの無線ルーターの中でもミッドレンジ、或いはエントリーに位置する製品。

*4:DDNS使わなくても、WAN側IPアドレスルーターを指しているわけですが、固定されたURLでアクセスできるという意味で。

*5:私はネットワークで食ってるエンジニアではないため、解釈がおかしい点があるかもしれません、悪しからず。