Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DNS水責め攻撃と監視 / DNS water torture attack Monitori...
Search
kazeburo
July 12, 2023
Technology
5
4.4k
DNS水責め攻撃と監視 / DNS water torture attack Monitoring and SLO
mackerel Meetup #14 Tokyo - 2023/07/11
kazeburo
July 12, 2023
Tweet
Share
More Decks by kazeburo
See All by kazeburo
クラウド開発の舞台裏とSRE文化の醸成 / SRE NEXT 2025 Lunch Session
kazeburo
1
1.2k
さくらのクラウド 開発の挑戦とその舞台裏
kazeburo
1
1k
[SRE kaigi 2025] ガバメントクラウドに向けた開発と変化するSRE組織のあり方 / Development for Government Cloud and the Evolving Role of SRE Teams
kazeburo
4
3.6k
[さくらのTech Day] ガバメントクラウド開発と変化と成長する組織 / sakura techday, Develop govcloud and the team
kazeburo
0
7.3k
ガバメントクラウド開発と変化と成長する組織 / Organizational change and growth in developing a government cloud
kazeburo
4
3.3k
DBやめてみた / DNS water torture attack and countermeasures
kazeburo
13
14k
IaaSにおけるPlatform Engineeringとこれから / Platform engineering in IaaS
kazeburo
2
1.5k
高信頼IaaSを実現するDevOps / DevOps for Highly Reliable IaaS
kazeburo
1
750
権威DNSサービスへのDDoSと ハイパフォーマンスなベンチマーカ / DNS Pseudo random subdomain attack and High performance Benchmarker
kazeburo
3
5.5k
Other Decks in Technology
See All in Technology
stupid jj tricks
indirect
0
7.7k
空間を設計する力を考える / 20251004 Naoki Takahashi
shift_evolve
PRO
3
140
Oracle Cloud Infrastructure:2025年9月度サービス・アップデート
oracle4engineer
PRO
0
320
RailsのPostgreSQL 18対応
yahonda
0
1.3k
kaigi_on_rails_2025_設計.pdf
nay3
8
4.4k
Goに育てられ開発者向けセキュリティ事業を立ち上げた僕が今向き合う、AI × セキュリティの最前線 / Go Conference 2025
flatt_security
0
300
非同期処理実行基盤 Delayed脱出 → Solid Queue完全移行への旅路。
srockstyle
3
1.5k
バイブコーディングと継続的デプロイメント
nwiizo
2
370
データエンジニアがこの先生きのこるには...?
10xinc
0
420
PLaMo2シリーズのvLLM実装 / PFN LLM セミナー
pfn
PRO
2
860
SoccerNet GSRの紹介と技術応用:選手視点映像を提供するサッカー作戦盤ツール
mixi_engineers
PRO
1
130
履歴 on Rails: Bitemporal Data Modelで実現する履歴管理/history-on-rails-with-bitemporal-data-model
hypermkt
0
1.9k
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
3.4k
BBQ
matthewcrist
89
9.8k
KATA
mclloyd
32
14k
The Pragmatic Product Professional
lauravandoore
36
6.9k
How STYLIGHT went responsive
nonsquared
100
5.8k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
We Have a Design System, Now What?
morganepeng
53
7.8k
Designing for Performance
lara
610
69k
Designing for humans not robots
tammielis
254
25k
Statistics for Hackers
jakevdp
799
220k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
Transcript
さくらインターネット Masahiro Nagano @kazeburo DNS⽔責め攻撃と監視 mackerel Meetup #14 Tokyo -
2023/07/11
Me • ⻑野雅広 (ながのまさひろ) • @kazeburo - Twitter, Threads &
GitHub • さくらインターネット株式会社 クラウド事業本部 SRE室 室⻑ • mixi, livedoor (LINE), mercari を経て 2021年から現職 • mackerelアンバサダー
本⽇のアジェンダ • DNS⽔責め攻撃と監視 • DNSとSLO
%/4ਫΊ IUUQTKBXJLJQFEJBPSHXJLJ&&#"%&"#&%#&&'&&"&&"&
DNS⽔責め攻撃 • 2023年3⽉頃より攻撃件数が急増、社会的な影響もあり • ランダムサブドメイン攻撃(Pseudo-Random Subdomain Attack)とも • 攻撃対象のDNSのゾーンにランダムに⽣成したサブドメインを問い合わせ て、DNSの機能停⽌、機能低下を狙う攻撃
実際の攻撃の記録 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仕様) • ラベル数が増えることもあり
攻撃⽅法のイメージ bot化した サーバ群 攻撃者(?) オープンリゾルバ パブリックDNS 権威DNS サーバ ʮय़ʹى͖ͨ%/4ਫΊឿᓾരܸͷ؍هʯΛࢀߟ IUUQXXXFPOUBQDPNNJTDJPUTMJEFQBQFSIUNM
攻撃のアクセス元 • オープンリゾルバ、Public DNS • 仕様に準じたクエリなのでネットワーク機器でのフィルタリングが不可能 • クエリ発⾏数の上位はGoogleやCloud fl areのIPアドレスが多い
• ⼀般のユーザも利⽤している • rate limitやクエリのblockができない • ここがDNS⽔責め攻撃の対策の難しいところ
さくらのクラウドでの攻撃事例 • 2022年8⽉にサービスに影響を与えるものとして発⽣ • 以後、現在に⾄るまで断続的に攻撃が継続 • 最⼤4000万クエリ/分 (通常5000クエリ/分) • 800万クエリ/分が数時間〜3⽇間継続ことも
• (Route53のコストだと100万円になる
⽔責め攻撃への対策 • スケールアップ • dnsdist (DNS⽤proxy)でのホワイトリスト • 頻繁に攻撃のあるゾーンに対してDNSサーバの前段でフィルタリング • DNSサーバ(PowerDNS)のバックエンドの切り替え
• RDBMSを利⽤したバックエンドからインメモリでの処理に • RDBMSによる管理性が失われるので、ゾーンデータを配布するミドルウェアを新たに書き起 こした • 可視化・モニタリング
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
None
⽔責め検知とアラート • dnsdistでのクエリ数が⼀定でアラート • 対策が進むにつれて閾値をだいぶあげた • サービスに影響がなければアラートは 抑えるのが⼤事
グラフボードでざっくり確認 • 週に数回グラフボードをみて、気になればログで攻撃対象ゾーンを確認 • 新たなゾーンへの攻撃であれば対策が必要か検討する
mackerel-plugin-maxcpu • バックグラウンドで毎秒CPU使⽤率を計 測し、その最⼤・平均・パーセンタイル 値をメトリクスとして記録 • https://github.com/kazeburo/ mackerel-plugin-maxcpu • 攻撃による瞬間的な負荷を把握するため
DNSとSLO
DNSの役割 • 名前と対象(IPアドレスなど)を、あらかじめ対応つけておく • 名前と対象の対応付けを調べて、問い合わせ元に返す IUUQTXXXOJDBEKQKBNBUFSJBMTJXPOEFNBOEEOT ࣌ؒͰֶͼ͢%/4ͷΈͷΩϗϯ
DNSの役割 • 名前と対象(IPアドレスなど)を、あらかじめ対応つけておく • 権威DNSサーバ • 名前と対象の対応付けを調べて、問い合わせ元に返す • フルリゾルバ、DNSキャッシュサーバ IUUQTXXXOJDBEKQKBNBUFSJBMTJXPOEFNBOEEOT
࣌ؒͰֶͼ͢%/4ͷΈͷΩϗϯ
DNSキャッシュサーバ • サービスの付随要素として提供 • 例えばISPの提供するDNSキャッシュサーバ • 共有型での提供(社内でも利⽤) • SLA?
DNSキャッシュサーバ • 重要な基盤技術のひとつ • しかし、障害が起きるまで意識されない • SLOの公開によって、社内外で名前解決の可⽤性を共有モデルとしていくこ とはできないか • DNSサーバの管理チームにSLOを提案
DNSのSLIを考える • ユーザ視点で考える • 弊社のDNSキャッシュサーバのユーザとは • クラウド/VPSの仮想サーバ、MaaSの物理サーバ、レンタルサーバのホス トなど各種基盤。Linux や FreeBSD
が多い • クライアントを知ることが⼤事、また、サービス本来の利⽤者・エンド ユーザも考慮
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
DNSキャッシュサーバのSLI(検討) • 2台(2 IP)で1組 • resolv.confのデフォルト状態 • 5秒、5秒 × 2回の20秒
• resolv.confでtimeoutを1秒、attempts:3を想定し、5秒以内にレスポンス • 1秒、1秒 × 3回
Mackerel Plugin • mackerel-plugin-resolver-synthetic • https://github.com/kazeburo/mackerel-plugin-resolver-synthetic • resolv.confの設定と動作を真似して名前解決ができるかをメトリクス化 • さくらのクラウドの仮想サーバから、提供しているDNSキャッシュサーバを
モニタリング
# 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
SLOダッシュボード • 値の取得開始から2週間 • 今後、SLOの数値のチーム内での決 定、社内への告知、社外への公開 • 可⽤性向上のヒント、事例も合わ せて公開する必要
まとめ • 権威DNSサーバへの⽔責め攻撃と監視 • mackerel-plugin-{pdns,dnsdist,maxcpu} • DNSキャッシュサーバの監視とSLO • mackerel-plugin-resolver-synthetic
SAKURA internet ࣾձΛࢧ͑Δ ύϒϦοΫΫϥυɾେنܭࢉࢿݯΠϯϑϥΛ Ұॹʹ࡞Γ·ͤΜ͔ʁ ソフトウェア開発、 インフラ基盤から フロントエンドまで
採⽤強化中! さくらインターネットではエン ジ ニア採⽤を強化しています さくらインターネットは新たなアイ デ アの創出に強い熱意と情熱を持って挑戦するお客様を は じ め、私たちとつな が りのあるす べ ての⼈たちのために、未来のある べ き姿を想い描きな が ら ―「やりたいこと」を「 で きる」に変える ― あらゆるア プ ローチを “インターネッ ト”を通 じ て提供します。 詳しくはWebサイトにて、カジュアル⾯談もやってます 👉 www.sakura.ad.jp/lp/22engineer/