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
RubyKaigi 2023でのセキュアなDNSリゾルバの運用 / Secure DNS Re...
Search
Kasumi Hanazuki
November 21, 2023
Technology
0
96
RubyKaigi 2023でのセキュアなDNSリゾルバの運用 / Secure DNS Resolver at RubyKaigi 2023
Kasumi Hanazuki
November 21, 2023
Tweet
Share
More Decks by Kasumi Hanazuki
See All by Kasumi Hanazuki
Mackerelでの家庭用ルータの監視 / Monitoring home routers with Mackerel
hanazuki
5
4.2k
構成管理してるつもりだけにならない方法
hanazuki
10
8.5k
Other Decks in Technology
See All in Technology
ガバメントクラウド先行事業中間報告を読み解く
sugiim
1
1.2k
大規模データ基盤チームのオンプレTiDB運用への挑戦 / dpu-tidb
cyberagentdevelopers
PRO
1
110
Commitment vs Harrisonism - Keynote for Scrum Niseko 2024
miholovesq
6
1.1k
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
27
12k
一休.comレストランにおけるRustの活用
kymmt90
3
580
バクラクにおける可観測性向上の取り組み
yuu26
3
410
独自ツール開発でスタジオ撮影をDX!「VLS(Virtual LED Studio)」 / dx-studio-vls
cyberagentdevelopers
PRO
1
170
わたしとトラックポイント / TrackPoint tips
masahirokawahara
1
240
プロダクトエンジニアが活躍する環境を作りたくて 事業責任者になった話 ~プロダクトエンジニアの行き着く先~
gimupop
1
460
Autify Company Deck
autifyhq
1
39k
コンテンツを支える 若手ゲームクリエイターの アートディレクションの事例紹介 / cagamefi-game
cyberagentdevelopers
PRO
1
120
Shift-from-React-to-Vue
calm1205
3
1.2k
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Unsuck your backbone
ammeep
668
57k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Scaling GitHub
holman
458
140k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
290
Build The Right Thing And Hit Your Dates
maggiecrowley
32
2.4k
Fontdeck: Realign not Redesign
paulrobertlloyd
81
5.2k
Designing on Purpose - Digital PM Summit 2013
jponch
115
6.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.8k
Rails Girls Zürich Keynote
gr2m
93
13k
Transcript
RubyKaigi 2023での セキュアなDNSリゾルバの運用 ― DoT/DoHとDDR ― Kasumi Hanazuki <
[email protected]
> 2023-11-21
DNSOPS.JP BoF
花月かすみ • @京大マイコンクラブ(KMC) • Rubyとインターネットがすき • RubyKaigi NOC 2 •
2017 広島 • 2018 仙台 • 2019 福岡 • 2020 松本(中止) • 2022 津 • 2023 松本 • 2024 那覇(予定) 2023-11-21 DNSOPS.JP BoF
RubyKaigi プログラミング言語Rubyと処理系の国際会議 • 地方巡業 • 参加者: 約1,200人 • 有志で会場Wi-Fiを構築・運用 ◦
アクセスポイント: 約50台 ◦ 同時接続: 約1,300台(peak) ◦ DNS(フルサービス): 530 qps(peak), 370 qps(mean) (数字はRubyKaigi 2023実績) 3 2023-11-21 DNSOPS.JP BoF
京大マイコンクラブ(KMC) / AS59128 京都大学のマイコン(パソコン)なんでもサークル • 1977: 設立 • 1991: PIアドレス割当(歴史的PI)
• 2016: AS運用開始 ◦ 上流: AS20473, AS59105, AS59103 • 2022–23: RubyKaigiにインターネット接続を提供 4 2023-11-21 DNSOPS.JP BoF
DNSと暗号化DNS 5 2023-11-21 DNSOPS.JP BoF
今日のスコープ DNSのしくみ 6 クライアントはリゾルバを通してドメインを検索する クライアント (来場者) リゾルバ (NOCが用意) 権威サーバ 権威サーバ
再帰検索 反復検索 2023-11-21 DNSOPS.JP BoF
公衆Wi-Fiの盗聴・改竄可能性 • WPA2 Personalは事前共有鍵(PSK)が公知の場合, 盗聴・改竄に対して脆弱 • 転がしてあるケーブルは 抜ける 7 2023-11-21
DNSOPS.JP BoF 平文DNSが 流れている!
暗号化DNSプロトコル • DNS over TLS (DoT) ◦ TLSで暗号化 • DNS
over HTTPS (DoH) ◦ 通例,HTTP/2またはHTTP/3が使われる ▪ どちらもマルチストリームを実現するプロトコルで, クエリに対してレスポンスを順不同に返せる ▪ TLSで暗号化 8 2023-11-21 DNSOPS.JP BoF 主要OS・ ブラウザに 実装済み
DNSから暗号化DNSへ 9 2023-11-21 DNSOPS.JP BoF
DNSから暗号化DNSへ 10 2023-11-21 DNSOPS.JP BoF クライアントが暗号化DNSを使うように 自動構成するしくみが必要 • 従来のDHCPやIPv6 RA
(RDNSS)は リゾルバのIPアドレスのみクライアントに伝える → リゾルバがどのような暗号化に対応しているか分からない
日和見暗号化 (Opportunistic Encryption) リゾルバが対応していそうなら, クライアントが勝手に暗号化プロトコルにアップグレード • 853/tcpにTLS接続してみて, ◦ 接続できれば暗号化通信をする ◦
接続できなければ平文通信にフォールバック • DoHへのアップグレードは難しい ◦ HTTPのパスが分からないため 11 2023-11-21 DNSOPS.JP BoF systemd 239+ (2018-01) Disabled by default Android 9+ (2018-08)
Adaptive DNS Discovery クライアントを暗号化プロトコルに明示的に誘導する • DNR (RFC 9462) ◦ DHCPやIPv6
RAを拡張して クライアントに暗号化リゾルバを紹介する • DDR (RFC 9463) ◦ リゾルバとクライアントの間で 暗号化プロトコルをネゴシエーションする 12 Windows Insider 25982 (先月出た) macOS* 13+ iOS/iPadOS 16+ (2022-10) 2023-11-21 DNSOPS.JP BoF * Mac ChromeはDDRに未対応
Discovery of Designated Resolvers (DDR) • 初期状態: クライアントは「非暗号化リゾルバのIPアドレス」 だけ知っている •
リゾルバは特殊用途ドメイン名“resolver.arpa.”で 自身の対応プロトコルを公開する ◦ “arpa.”の権威サーバが答えるわけではない • クライアントはこの情報をもとに接続プロトコルを選ぶ 13 2023-11-21 DNSOPS.JP BoF
サービスバインディング・レコード _dns.resolver.arpa. IN SVCB 1 resolver.rubykaigi.net. ( alpn="h3,h2" dohpath="/dns-query{?dns}") IN
SVCB 2 resolver.rubykaigi.net. ( alpn="dot") 14 ターゲット A/AAAAを引くと 暗号化リゾルバの アドレスが分かる 対応プロトコル 優先度 2023-11-21 DNSOPS.JP BoF パラメータで DoHのパスを指定
DDR利用時のフロー 15 🔐 2023-11-21 DNSOPS.JP BoF クライアント DHCPサーバ 非暗号化リゾルバ 暗号化リゾルバ
非暗号化リゾルバの アドレス SVCB? _dns.resolver.arpa. 暗号化リゾルバのアドレス・プロトコル TLSハンドシェイク DNSクエリ・レスポンス 同じホストでもよい 検証
暗号化リゾルバの検証 SVCBで知った暗号化リゾルバを信頼して利用する条件 • Verified Discovery a. 証明書がトラストアンカーまで遡って検証可能 b. 証明書のSANが「非暗号化リゾルバのアドレス」を含む •
Opportunistic Discovery a. 「非暗号化リゾルバのアドレス」がプライベートアドレス b. 「非暗号化リゾルバのアドレス」と 「暗号化リゾルバのアドレス」が一致 16 2023-11-21 DNSOPS.JP BoF Appleデバイスには 実装されていない? 追試おねがいします
中間にDNSフォワーダがある場合 • 非暗号化リゾルバのアドレス ∉ サーバ証明書のSAN → Verified Discoveryではアップグレードされない • 非暗号化リゾルバのアドレス
≠ 暗号化リゾルバのアドレス → Opportunistic Discoveryでもアップグレードされない 17 2023-11-21 DNSOPS.JP BoF クライアント フォワーダ リゾルバ _dns.resolver.arpa. SVCB _dns.resolver.arpa. SVCB 1 one.one.one.one. (...) 192.168.0.1 1.1.1.1
DDRの限界 • 防げる攻撃 ◦ パッシブな盗聴 ◦ 正規のリゾルバへのなりすまし(Verified Discoveryの場合) • 防げない攻撃
◦ SVCBクエリを妨害して平文通信へダウングレード ◦ 経路ハイジャックでCAを騙して証明書を不正取得 ◦ 野良DHCP ◦ ハニーポットWi-Fi 18 2023-11-21 DNSOPS.JP BoF 多層防御が必要
RubyKaigi 2023での 暗号化DNSの実装 19 2023-11-21 DNSOPS.JP BoF
RubyKaigi 2023のリゾルバ AppleデバイスにDDRが実装されたと知り[WWDC] DNSを暗号化する実験を思いつく • DoT, DoH (HTTP/2, HTTP/3) •
DDR(2023-05当時ドラフト) • DNR(当時まだオプション番号が未割り当て・クライアント実装がない) [WWDC]: https://developer.apple.com/videos/play/wwdc2022/10079/ 20 2023-11-21 DNSOPS.JP BoF
使用したサーバソフトウェア 21 • Unbound ◦ DoTとDoH/2に対応するDNSリゾルバ ◦ DNSリゾルバとして折り紙付き ◦ 一方,DoHは?
▪ Ubuntu 22.04に含まれるv1.13.1では壊れていた (最新版では修正済) • Envoy ◦ HTTP/2と/3に対応するHTTPプロキシ・ロードバランサ ◦ 巨大トラフィックを捌く実績あり まだ枯れてなさそう… 汎用コンポーネントを 使えるHTTPの旨味 2023-11-21 DNSOPS.JP BoF
リゾルバの構成 Envoyを前段においてHTTP/2,/3両対応 (AWS NLBの制約で,同ポート番号のTCP/UDPは 同じターゲットに向ける必要もあった) 22 ロード バランサ クライアント unbound
envoy Unbound Envoy DoH/2 Do53 DoT DoH/2 DoH/3 権威サーバ 2023-11-21 DNSOPS.JP BoF local-data resolver. arpa.
リゾルバのTLSサーバ証明書 DDR対応には,SANにIPアドレスを含むサーバ証明書が必要 また,PKIで検証できる必要がある • パブリックCAはパブリックIPのSANのみ証明する → リゾルバはパブリックIPアドレスで運用する必要 (リゾルバ自体はインターネットから到達可能でなくともよい) • 社内環境等では,プライベートCAを使って
プライベートIPアドレスで運用可能?(未検証) 23 2023-11-21 DNSOPS.JP BoF subjectAltName
AWS VPC 会議場 パブリックIPアドレスでリゾルバを運用 会場ルータでパブリック→プライベートのNATをしていた 24 クライアント リゾルバ ロード バランサ
リゾルバ ルータ ルータ 10.0.12.34 10.0.56.78 (AZごとのアドレス) 192.50.220.164 192.50.220.165 NAT 2023-11-21 DNSOPS.JP BoF
RubyKaigi 2023での実験結果 25 2023-11-21 DNSOPS.JP BoF
1/3から1/2のトランザクションを暗号化 30分ごとに集計した プロトコル別のクエリ割合 26 プロトコル 講演中 昼休憩 平文 62% 43%
DoT 06% 09% DoH/2 30% 46% DoH/3 03% 03% Day1 10:30-11:00 Day1 12:30-13:00 macOS/iOS Android macOS/iOSが たまにHTTP/3を 使う(詳細不明) Matzのキーノートを PCで実況? PCを閉じて スマホを使っている? 2023-11-21 DNSOPS.JP BoF
DoTが少ないような 同時に802.1X認証の実験もしていた • Androidは選択肢の多い フォームの入力を要求 → 難しかったのではないか(予想) • Google製以外の端末でも 初期設定でOE有効になっている?
(未調査) 27 2023-11-21 DNSOPS.JP BoF
おわりに 28 2023-11-21 DNSOPS.JP BoF
それって意味あるの? 公衆Wi-Fiにおいて… • (プライバシーを気にする)管理者: ◦ 利用者を守るために暗号化リゾルバを提供したい ◦ 特定の第三者(公衆DNS)に情報を横流ししたくない • (プライバシーを気にする)利用者:
◦ そもそも管理者は攻撃者と同じくらい信用できない → 大手の公衆DNSを使う 29 …という気持ちで やっています 2023-11-21 DNSOPS.JP BoF
それって意味あるの? ② • オフィスLAN ◦ 利用者と管理者の利害は一致しているはず? • 商用ISP ◦ リゾルバから見た直接のクライアントはCPE(ルータ)?
→ 対応はまだまだ先? ◦ TLS化の計算負荷は大きい? 30 ご意見・ご感想 うかがいたいです 2023-11-21 DNSOPS.JP BoF
Acknowledgement • @sorah, RubyKaigi Organizer & NOC Lead ◦ L1-L4設計,L2-L4構築,その他すべて
• NOCチームメイトのみなさん ◦ L1構築,ブログ記事・発表資料のレビュー • RubyKaigiスポンサー各社 31 2023-11-21 DNSOPS.JP BoF
関連記事 • RubyKaigi 2023でのセキュアなDNSリゾルバの運用 ― DNS-over-HTTPSとDDR (@hanazuki) ◦ https://blog.kmc.gr.jp/entry/2023/05/10/165300 •
RubyKaigi 2023 Wi-Fi: 足回り徹底解説 (@sorah) ◦ https://techlife.cookpad.com/entry/2023/05/31/113000 • ソースコード ◦ https://github.com/ruby-no-kai/rubykaigi-nw 32 2023-11-21 DNSOPS.JP BoF
おまけ 33 2023-11-21 DNSOPS.JP BoF
RubyKaigi 2023ネットワークの概略 34
RubyKaigi 2023ネットワークの概略 35
36 クエリ数: 平文UDP(青) vs DoH/2(黄) vs DoT(橙) Grafana