$30 off During Our Annual Pro Sale. View Details »

DNS水責め攻撃と監視 / DNS water torture attack Monitoring and SLO

DNS水責め攻撃と監視 / DNS water torture attack Monitoring and SLO

mackerel Meetup #14 Tokyo - 2023/07/11

kazeburo

July 12, 2023
Tweet

More Decks by kazeburo

Other Decks in Technology

Transcript

  1. さくらインターネット Masahiro Nagano @kazeburo
    DNS⽔責め攻撃と監視
    mackerel Meetup #14 Tokyo - 2023/07/11

    View Slide

  2. Me
    • ⻑野雅広 (ながのまさひろ)
    • @kazeburo - Twitter, Threads & GitHub
    • さくらインターネット株式会社

    クラウド事業本部 SRE室 室⻑
    • mixi, livedoor (LINE), mercari を経て

    2021年から現職
    • mackerelアンバサダー

    View Slide

  3. 本⽇のアジェンダ
    • DNS⽔責め攻撃と監視
    • DNSとSLO

    View Slide

  4. %/4ਫ੹Ί
    IUUQTKBXJLJQFEJBPSHXJLJ&&#"%&"#&%#&&'&&"&&"&

    View Slide

  5. DNS⽔責め攻撃
    • 2023年3⽉頃より攻撃件数が急増、社会的な影響もあり
    • ランダムサブドメイン攻撃(Pseudo-Random Subdomain Attack)とも
    • 攻撃対象のDNSのゾーンにランダムに⽣成したサブドメインを問い合わせ
    て、DNSの機能停⽌、機能低下を狙う攻撃

    View Slide

  6. 実際の攻撃の記録
    07:25:11.719035 IP 209.216.160.2.50051 > 133.242.64.100.53: 43104 A? meetmodeling.example.com. (50)


    07:25:11.719057 IP 205.171.30.238.44916 > 133.242.64.100.53: 64321% [1au] A? _.modeling.example.com. (71)


    07:25:11.719069 IP 172.70.109.31.63292 > 133.242.64.100.53: 40380 [1au] A? osaExpe1-pLatINUM.exAmpLe.cOm. (66)


    07:25:11.719071 IP 3.139.136.204.44597 > 133.242.64.100.53: 32383% [1au] A? webdirect.foster.example.com. (65)


    07:25:11.719113 IP 18.188.77.103.42513 > 133.242.64.100.53: 14853 [1au] A? note-modeling.example.com. (62)


    07:25:11.719132 IP 172.70.33.19.27971 > 133.242.64.100.53: 35379 [1au] A? indian-awarded.example.com. (63)


    07:25:11.719147 IP 12.121.89.48.43564 > 133.242.64.100.53: 23891 A? matchfiling.example.com. (49)


    07:25:11.719156 IP 74.125.181.130.64517 > 133.242.64.100.53: 25285% [1au] A? xmL.mODeLING.eXaMple.CoM. (61)


    07:25:11.719166 IP 165.225.41.202.17203 > 133.242.64.100.53: 53044% [1au] A? qatawarded.example.com. (59)


    07:25:11.719176 IP 96.114.53.67.20082 > 133.242.64.100.53: 41999 [1au] A? netherlands.filing.example.com. (67)


    07:25:11.719190 IP 172.253.195.196.35276 > 133.242.64.100.53: 45639% [1au] A? tdd-modeling.example.com. (61)


    07:25:11.719195 IP 172.253.217.12.40587 > 133.242.64.100.53: 62658% [1au] A? web.modeling.example.com. (61)


    07:25:11.719197 IP 172.253.9.4.50295 > 133.242.64.100.53: 37961% [1au] A? co.awarded.example.com. (59)


    07:25:11.719224 IP 172.71.29.39.30489 > 133.242.64.100.53: 2496 [1au] A? SfaaSobvioUs.ExamplE.Com. (61)


    07:25:11.719235 IP 209.66.107.33.57264 > 133.242.64.100.53: 50511 [1au] A? hap.modeling.example.com. (61)


    07:25:11.719275 IP 96.114.53.69.53157 > 133.242.64.100.53: 5679 [1au] A? gitcn-awarded.example.com. (62)


    07:25:11.719312 IP 172.70.229.30.59530 > 133.242.64.100.53: 45890 [1au] A? ipafoster.example.com. (58)


    07:25:11.719336 IP 172.217.46.78.59507 > 133.242.64.100.53: 60186% [1au] A? testcloud-modeling.example.com. (67)


    07:25:11.719351 IP 69.47.193.166.52891 > 133.242.64.100.53: 238 [1au] A? bfmpassing.example.com. (59)


    07:25:11.719353 IP 34.218.119.91.26001 > 133.242.64.100.53: 31511% [1au] A? signal-modeling.example.com. (64)


    07:25:11.719365 IP 34.218.119.91.13381 > 133.242.64.100.53: 4210% [1au] A? pairfiling.example.com. (59)
    • ランダムな⽂字列、単語の組み合わせ
    • ⼤⽂字・⼩⽂字まざり(Google Public DNS仕様)
    • ラベル数が増えることもあり

    View Slide

  7. 攻撃⽅法のイメージ
    bot化した
    サーバ群
    攻撃者(?)
    オープンリゾルバ
    パブリックDNS
    権威DNS
    サーバ
    ʮ೥य़ʹى͖ͨ%/4ਫ੹Ίឿᓾരܸͷ؍࡯ه࿥ʯΛࢀߟ
    IUUQXXXFPOUBQDPNNJTDJPUTMJEFQBQFSIUNM

    View Slide

  8. 攻撃のアクセス元
    • オープンリゾルバ、Public DNS
    • 仕様に準じたクエリなのでネットワーク機器でのフィルタリングが不可能
    • クエリ発⾏数の上位はGoogleやCloud
    fl
    areのIPアドレスが多い
    • ⼀般のユーザも利⽤している
    • rate limitやクエリのblockができない
    • ここがDNS⽔責め攻撃の対策の難しいところ

    View Slide

  9. さくらのクラウドでの攻撃事例
    • 2022年8⽉にサービスに影響を与えるものとして発⽣
    • 以後、現在に⾄るまで断続的に攻撃が継続
    • 最⼤4000万クエリ/分 (通常5000クエリ/分)
    • 800万クエリ/分が数時間〜3⽇間継続ことも
    • (Route53のコストだと100万円になる

    View Slide

  10. ⽔責め攻撃への対策
    • スケールアップ
    • dnsdist (DNS⽤proxy)でのホワイトリスト
    • 頻繁に攻撃のあるゾーンに対してDNSサーバの前段でフィルタリング
    • DNSサーバ(PowerDNS)のバックエンドの切り替え
    • RDBMSを利⽤したバックエンドからインメモリでの処理に
    • RDBMSによる管理性が失われるので、ゾーンデータを配布するミドルウェアを新たに書き起
    こした
    • 可視化・モニタリング

    View Slide

  11. Mackerel plugins
    • mackerel-plugin-pdns
    • https://github.com/kazeburo/mackerel-plugin-pdns
    • hanazuki/mackerel-plugin-pdns のGo⾔語版
    • mackerel-plugin-dnsdist
    • https://github.com/kazeburo/mackerel-plugin-dnsdist

    View Slide

  12. View Slide

  13. ⽔責め検知とアラート
    • dnsdistでのクエリ数が⼀定でアラート
    • 対策が進むにつれて閾値をだいぶあげた
    • サービスに影響がなければアラートは

    抑えるのが⼤事

    View Slide

  14. グラフボードでざっくり確認
    • 週に数回グラフボードをみて、気になればログで攻撃対象ゾーンを確認
    • 新たなゾーンへの攻撃であれば対策が必要か検討する

    View Slide

  15. mackerel-plugin-maxcpu
    • バックグラウンドで毎秒CPU使⽤率を計
    測し、その最⼤・平均・パーセンタイル
    値をメトリクスとして記録
    • https://github.com/kazeburo/
    mackerel-plugin-maxcpu
    • 攻撃による瞬間的な負荷を把握するため

    View Slide

  16. DNSとSLO

    View Slide

  17. DNSの役割
    • 名前と対象(IPアドレスなど)を、あらかじめ対応つけておく
    • 名前と対象の対応付けを調べて、問い合わせ元に返す
    IUUQTXXXOJDBEKQKBNBUFSJBMTJXPOEFNBOEEOT
    ࣌ؒͰֶͼ௚͢%/4ͷ࢓૊ΈͷΩϗϯ

    View Slide

  18. DNSの役割
    • 名前と対象(IPアドレスなど)を、あらかじめ対応つけておく
    • 権威DNSサーバ
    • 名前と対象の対応付けを調べて、問い合わせ元に返す
    • フルリゾルバ、DNSキャッシュサーバ
    IUUQTXXXOJDBEKQKBNBUFSJBMTJXPOEFNBOEEOT
    ࣌ؒͰֶͼ௚͢%/4ͷ࢓૊ΈͷΩϗϯ

    View Slide

  19. DNSキャッシュサーバ
    • サービスの付随要素として提供
    • 例えばISPの提供するDNSキャッシュサーバ
    • 共有型での提供(社内でも利⽤)
    • SLA?

    View Slide

  20. DNSキャッシュサーバ
    • 重要な基盤技術のひとつ
    • しかし、障害が起きるまで意識されない
    • SLOの公開によって、社内外で名前解決の可⽤性を共有モデルとしていくこ
    とはできないか
    • DNSサーバの管理チームにSLOを提案

    View Slide

  21. DNSのSLIを考える
    • ユーザ視点で考える
    • 弊社のDNSキャッシュサーバのユーザとは
    • クラウド/VPSの仮想サーバ、MaaSの物理サーバ、レンタルサーバのホス
    トなど各種基盤。Linux や FreeBSD が多い
    • クライアントを知ることが⼤事、また、サービス本来の利⽤者・エンド
    ユーザも考慮

    View Slide

  22. resolv.confとDNS名前解決
    • resolv.conf が右のように書かれていた場合
    1. 198.51.100.3 がタイムアウト5秒
    2. 198.51.100.4 が 5秒 × 2 ÷ サーバ台数 (⼩数点切り捨て)のタイムアウト=5 秒
    3. これを2回繰り返して、合計20秒間名前解決を⾏う
    • 正直⻑い
    • options timeout:Nや試⾏回数を増やすoptions attempts:Mは利⽤者側にて対応をが必要
    • (systemd-resolvedになると別)
    nameserver 198.51.100.3


    nameserver 198.51.100.4
    nameserver 198.51.100.3


    nameserver 198.51.100.4


    options timeout:1 rotate

    View Slide

  23. DNSキャッシュサーバのSLI(検討)
    • 2台(2 IP)で1組
    • resolv.confのデフォルト状態
    • 5秒、5秒 × 2回の20秒
    • resolv.confでtimeoutを1秒、attempts:3を想定し、5秒以内にレスポンス
    • 1秒、1秒 × 3回

    View Slide

  24. Mackerel Plugin
    • mackerel-plugin-resolver-synthetic
    • https://github.com/kazeburo/mackerel-plugin-resolver-synthetic
    • resolv.confの設定と動作を真似して名前解決ができるかをメトリクス化
    • さくらのクラウドの仮想サーバから、提供しているDNSキャッシュサーバを
    モニタリング

    View Slide

  25. # one of them is alive


    % ./mackerel-plugin-resolver-synthetic --timeout 5s -H 198.51.100.1 -H 198.51.100.2 -H 8.8.8.8 -Q example.com


    2023/06/27 21:20:08 failed to resolv on 198.51.100.1 with timeout 5.000000s: read udp 192.168.68.110:58507-
    >198.51.100.1:53: i/o timeout


    2023/06/27 21:20:11 failed to resolv on 198.51.100.1 with timeout 3.000000s: read udp 192.168.68.110:49304-
    >198.51.100.1:53: i/o timeout


    resolver-synthetic.service.available 100 1687868403


    resolver-synthetic.rtt.milliseconds 8023 1687868403


    # all dead


    % ./mackerel-plugin-resolver-synthetic --timeout 5s -H 198.51.100.1 -H 198.51.100.2 -Q example.com


    2023/06/27 21:21:56 failed to resolv on 198.51.100.1 with timeout 5.000000s: read udp 192.168.68.110:51016-
    >198.51.100.1:53: i/o timeout


    2023/06/27 21:22:01 failed to resolv on 198.51.100.2 with timeout 5.000000s: read udp 192.168.68.110:59771-
    >198.51.100.2:53: i/o timeout


    2023/06/27 21:22:06 failed to resolv on 198.51.100.1 with timeout 5.000000s: read udp 192.168.68.110:53296-
    >198.51.100.1:53: i/o timeout


    2023/06/27 21:22:11 failed to resolv on 198.51.100.2 with timeout 5.000000s: read udp 192.168.68.110:50395-
    >198.51.100.2:53: i/o timeout


    resolver-synthetic.service.available 0 1687868511


    resolver-synthetic.rtt.milliseconds 20002 1687868511


    View Slide

  26. SLOダッシュボード
    • 値の取得開始から2週間
    • 今後、SLOの数値のチーム内での決
    定、社内への告知、社外への公開
    • 可⽤性向上のヒント、事例も合わ
    せて公開する必要

    View Slide

  27. まとめ
    • 権威DNSサーバへの⽔責め攻撃と監視
    • mackerel-plugin-{pdns,dnsdist,maxcpu}
    • DNSキャッシュサーバの監視とSLO
    • mackerel-plugin-resolver-synthetic

    View Slide

  28. SAKURA internet
    ࣾձΛࢧ͑Δ

    ύϒϦοΫΫϥ΢υɾେن໛ܭࢉࢿݯΠϯϑϥΛ

    Ұॹʹ࡞Γ·ͤΜ͔ʁ
    ソフトウェア開発、
    インフラ基盤から
    フロントエンドまで
    採⽤強化中!
    さくらインターネットではエン
    ジ
    ニア採⽤を強化しています
    さくらインターネットは新たなアイ
    デ
    アの創出に強い熱意と情熱を持って挑戦するお客様を

    じ
    め、私たちとつな
    が
    りのあるす
    べ
    ての⼈たちのために、未来のある
    べ
    き姿を想い描きな
    が
    ら ―「やりたいこと」を「
    で
    きる」に変える ― あらゆるア
    プ
    ローチを “インターネッ
    ト”を通
    じ
    て提供します。
    詳しくはWebサイトにて、カジュアル⾯談もやってます 👉 www.sakura.ad.jp/lp/22engineer/

    View Slide