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
150
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
Ruby meets secure DNS & modern Internet protocols
hanazuki
0
170
Mackerelでの家庭用ルータの監視 / Monitoring home routers with Mackerel
hanazuki
5
4.5k
構成管理してるつもりだけにならない方法
hanazuki
10
8.9k
Other Decks in Technology
See All in Technology
国井さんにPurview の話を聞く会
sophiakunii
1
330
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.9k
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
17k
「駆動」って言葉、なんかカッコイイ_Mitz
comucal
PRO
0
140
産業的変化も組織的変化も乗り越えられるチームへの成長 〜チームの変化から見出す明るい未来〜
kakehashi
PRO
1
370
2025年 山梨の技術コミュニティを振り返る
yuukis
0
150
re:Invent2025 セッションレポ ~Spec-driven development with Kiro~
nrinetcom
PRO
2
170
旬のブリと旬の技術で楽しむ AI エージェント設計開発レシピ
chack411
1
130
Scrum Guide Expansion Pack が示す現代プロダクト開発への補完的視点
sonjin
0
480
_第4回__AIxIoTビジネス共創ラボ紹介資料_20251203.pdf
iotcomjpadmin
0
180
複雑さを受け入れるか、拒むか? - 事業成長とともに育ったモノリスを前に私が考えたこと #RSGT2026
murabayashi
1
1.4k
【Agentforce Hackathon Tokyo 2025 発表資料】みらいシフト:あなた働き方を、みらいへシフト。
kuratani
0
100
Featured
See All Featured
Between Models and Reality
mayunak
1
160
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
230
Designing for humans not robots
tammielis
254
26k
Navigating Weather and Climate Data
rabernat
0
65
Documentation Writing (for coders)
carmenintech
77
5.2k
Raft: Consensus for Rubyists
vanstee
141
7.3k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
WCS-LA-2024
lcolladotor
0
400
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
97
Discover your Explorer Soul
emna__ayadi
2
1k
Docker and Python
trallard
47
3.7k
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