ルーターでDDNSの使用を開始してみた
個人的に使用しているASUSの無線ルーターには、DDNS*1クライアント機能が搭載されています*2。
サーバー絡みの実験などをしていると、ちょっと公開してみたいこともあります(クラウド使えばいいのに、という思いもあるけど)。
ということで、ASUSの提供するDDNSを使い始めてみて、気付いた挙動などを紹介します。
利用開始
事前準備
ルーターがDDNSクライアントになるということは、ルーターがインターネットに公開*4された状態となるわけです。
DDNSの利用可否に係らずセキュリティの観点から、ルーターのハードニングを行うべきですが、DDNSを利用する際はより厳格な設定を行うべきでしょう。
※以下は一例であり、絶対的な安全性を保障するものではありません。
- ファームウェア最新化
最新ではないファームウェアを利用している場合は、ファームウェアを更新する(記載時点では3.0.0.4.378_9459が最新)。
- ファイヤーウォール機能の有効化
- システム設定
- ルータのログイン名
- デフォルトから変更する
- 新しいパスワード
- それなりに難しくする
- SSH Enable
- いいえ(ルーターにSSH接続できなくする)
- Telnetを有効にする
- いいえ(ルーターにTelnet接続できなくする)
- WAN側からの設定を有効にする
- いいえ(WAN側から管理画面に入れなくなるはずなのだが…後述)
動作確認
ルータ管理画面の[ネットワークマップ]を選択し、
インターネットの状態にDDNSのホスト名が表示されていれば、DDNSクライアントとして稼働していることが解ります。
このホスト名が、その上に表示されている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に向けておくことでルータの管理画面はインターネットから遮断できました。
補足
設定に反して意図せずルーター管理画面が公開されたことに恐怖を感じ、念のためポートスキャンもどきをかけてみたところ、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回数の散布図)
特定のポート番号がよく狙われていることが読み取れつつも、全体的にはWell-Knownポート(に限らず比較的小さい番号のポート)が多く狙われているようにも見える。
- ポート別DROP回数(ソート後上位を抜粋)
狙われた回数が多いポートは以下の通り。
参考までに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アドレスはモザイク加工)
特定の攻撃元があるわけでもなさそう。
軽く調べると上位の5つのIPアドレスは順に中国、米国、米国、米国、ルーマニアのもので、いずれも知らない組織の所有するIPであった。
続いて、Verizon、China Telecom、Akamai TechnologiesのIPが上位に並んだけど、そのユーザーが悪さを試みているのか、踏み台にされているだけなのかは識別できない。
そこら辺が不明な以上は、攻撃元組織の実態を表していないと考えるべきでしょう。
なお、上位12番目には実在する米国の大学のIPが出てきたのだけど、ログと突き合わせると全てDF PROTO=ICMP TYPE=8と出てるので、目的は不明ながらもping打ってるだけっぽい。
- 時間帯別DROP回数
グラフ中の表記は日本時間。日本の昼過ぎから夕方過ぎまでが下がっているように見える。
スクリプトで24時間全自動で攻撃先を探しているわけではなく、人力で手作業しているのも多いため、時間帯に偏りが生じていると読み取れる?
組織的に日中に攻撃を試行しているのと、趣味的に深夜に攻撃をしているのと混在し、その比率も解らない以上は、時差を考慮しても、実際の攻撃元国は識別できなさそう。
以上。