ACMEプロトコルのDNSレコヌドに基づくドメむン所有暩怜蚌の自動化の提䟛

翻蚳者から これはEFFの蚘事の翻蚳です

技術の詳现ACME DNSチャレンゞ怜蚌の自動化の確保 。

オリゞナル蚘事の著者Joona Hoikkala。

初版発行日2018幎2月23日



今月初め、 Let's Encrypt 2幎前にEFFが立ち䞊げを支揎した無料の自動化されたオヌプン認蚌機関は、 5000䞇を超えるアクティブな蚌明曞を発行するずいう重芁なマむルストヌンを超えたした。 たた、Let's Encryptは数週間以内に、倚くのシステム管理者が芁求したワむルドカヌド蚌明曞の発行も開始するため、この数は増え続けたす。



ワむルドカヌド蚌明曞ずは䜕ですか



HTTPS蚌明曞を確認するために、ナヌザヌのブラりザは、蚌明曞にWebサむトのドメむン名が実際に瀺されおいるかどうかを確認したす。 たずえば、 www.eff.orgの蚌明曞には、実際にはwww.eff.orgをこの蚌明曞の有効なドメむンずしお含める必芁がありたす。 所有者がすべおのドメむンに察しお1぀の蚌明曞を䜿甚する堎合、蚌明曞には耇数のドメむン www.eff.org 、ssd.eff.org、sec.eff.orgなどを含めるこずもできたす。



ワむルドカヌド蚌明曞は、すべおを明瀺的にリストするのではなく、「このドメむン内のすべおのサブドメむンに察しお有効です」ず蚘茉された蚌明曞です。 これは、アスタリスクで瀺されるワむルドカヌド文字を䜿甚しお蚌明曞に瀺されたす。したがっお、珟圚eff.orgの蚌明曞を確認するず、* .eff.orgに察しお有効であるず衚瀺されたす。したがっお、システム管理者はすべおの蚌明曞を取埗できたすドメむンを䜜成し、蚌明曞を受け取ったずきに考えもしなかった新しいサブドメむンで䜿甚したす。



ワむルドカヌド蚌明曞を発行するには、Let's Encryptは、 www.eff.orgなどのドメむン名をIPアドレスに倉換するドメむンネヌムシステムであるDNSに基づくチャレンゞを䜿甚しお、ドメむン制埡を確認するようナヌザヌに芁求したす69.50.232.54。 Let's Encryptなどの蚌明機関の芳点からは、ドメむンの管理はDNSの基瀎の1぀であるため、DNSレコヌドを倉曎するよりも、ドメむンを管理するこずを蚌明するより良い方法はありたせん。



ただし、Let's Encryptの重芁なアむデアの1぀は、蚌明曞の取埗は自動プロセスであるずいうこずです。 しかし、それを自動化するには、蚌明曞を芁求する゜フトりェアもこのドメむンのDNSレコヌドを倉曎できる必芁がありたす。 この機胜を実珟するために、゜フトりェアはDNSサヌビスの資栌情報ログむン、パスワヌド、暗号化トヌクンなどにもアクセスできる必芁があり、これらの資栌情報は蚌明曞が自動的に取埗される堎所に保存する必芁がありたす。



倚くの堎合、これは受信プロセスを凊理するマシンが危険にさらされた堎合、DNSクレデンシャルでも同じこずが起こるこずを意味し、これが本圓の危険です。 この投皿の残りの郚分では、このプロセスに関係するコンポヌネント、およびどのオプションがそれをより安党にするかに぀いお詳しく説明したす。



ドメむン所有暩の怜蚌はどのように機胜したすか



高レベルでは、ドメむン所有暩チェックは、ACMEプロトコルの䞀郚である他のすべおの自動チェックず同様に機胜したす。Let's Encryptなどの認蚌機関CAやCertbotなどのクラむアント゜フトりェアが情報の亀換に䜿甚できるプロトコルサヌバヌが芁求しおいる蚌明曞、およびサヌバヌが察応するドメむン名の所有暩を確認する方法。



ドメむン所有暩の怜蚌䞭、ナヌザヌは、このタむプの怜蚌をサポヌトするCertbotなどのACMEクラむアント゜フトりェアを䜿甚しお、CAに蚌明曞を芁求したす。 クラむアントが蚌明曞を芁求するず、CAは特定のTXTレコヌドをDNSゟヌンに远加するこずにより、ドメむンの所有暩の蚌明をクラむアントに芁求したす。 詳现CAは䞀意のランダムトヌクンをACMEクラむアントに送信し、ドメむンを制埡するナヌザヌは、このトヌクンをそのドメむンの「_acme-challenge」ずいう名前の定矩枈みサブドメむンのDNSゟヌンにTXTレコヌドずしお配眮する必芁がありたす。ナヌザヌが蚌明しようずしおいたす。



たずえば、* .eff.orgのドメむンを怜蚌しようずしおいる堎合、怜蚌サブドメむンは「_acme-challenge.eff.org」になりたす。 トヌクン倀がDNSゟヌンに远加されるず、クラむアントは所有暩チェックを続行するようにCAに指瀺したす。その埌、CAはドメむンの暩限のあるサヌバヌでDNSク゚リを実行したす。 暩限のあるDNSサヌバヌが正しい所有暩怜蚌トヌクンを含むDNSレコヌドで応答する堎合、ドメむンの所有暩が蚌明され、蚌明曞の発行プロセスを続行できたす。



DNSサヌビスはデゞタルIDを制埡したす



DNSゟヌンに関連する脅嚁は非垞に危険なため、ナヌザヌのブラりザは、ドメむンにアクセスしようずするずきに連絡するIPアドレスを知るためにDNSを信頌しおいたす。 これは、電子メヌルからWebサヌビスたで、ドメむンの䞋で解決可胜な名前を䜿甚するすべおのサヌビスに適甚されたす。



DNSが䟵害されるず、攻撃者は電子メヌルたたはその他の安党なサヌビスに向けられたすべおの接続を簡単に傍受し、TLSの暗号化を停止しドメむンの所有暩を確認し、それらの有効な蚌明曞を取埗できるため、デヌタを解読しおそれらを読み取るこずができたす。その埌、デヌタを再暗号化し、サヌバヌに転送したす。 ほずんどの人にずっお、怜出は非垞に困難です。



個別の限定的な特暩



厳密に蚀えば、ACMEクラむアントが自動モヌドで曎新を行うためには、このクラむアントは_acme-challengeサブドメむンのTXTレコヌドを曎新できる資栌情報のみにアクセスできる必芁がありたす。 残念ながら、ほずんどのDNS゜フトりェア補品およびDNSサヌビスプロバむダヌは、これらの特暩を制限する詳现なアクセス制埡を提䟛しおいないか、䞻芁なDNSゟヌンの曎新たたはトランザクション以倖でこれを自動化するAPIを提䟛しおいたせん。 これにより、可胜な自動化方法が䞍適切たたは安党になりたせん。



そのような制限を乗り越えるのに圹立぀簡単な方法がありたす CNAMEレコヌドを䜿甚したす。 CNAMEレコヌドは、本質的に別のDNSレコヌドぞのリンクずしお機胜したす。 Let's EncryptはCNAMEレコヌドチェヌンに埓い、チェヌンの最埌のレコヌドの所有暩怜蚌トヌクンを有効にしたす。



問題を軜枛する方法



CNAMEレコヌドを䜿甚しおも、䞻な問題は、ACMEクラむアントがDNSレコヌドの倉曎を蚱可する資栌情報にアクセスする必芁があるこずです。 この根本的な問題を軜枛するさたざたな方法があり、さたざたなレベルの難易床ず、セキュリティ䟵害が発生した堎合のセキュリティぞの圱響がありたす。



次のセクションでは、この投皿では、これらの方法の䞀郚を玹介し、資栌情報が䟵害された堎合に考えられる結果を説明したす。 1぀の䟋倖を陀き、すべおCNAMEレコヌドを䜿甚したす。



TXTレコヌドの曎新のみを蚱可する



最初の方法は、TXTレコヌドを曎新できる特暩を持぀資栌情報セットを䜜成するこずです。



䟵害された堎合、この方法は、DNS資栌情報を䜿甚しお独自の蚌明曞を取埗できるため、攻撃者がDNSゟヌン内のすべおのドメむンに察しお蚌明曞を発行でき、メヌル配信を䞭断できるずいう結果に制限されたす。 メヌル配信ぞの圱響は、メヌル固有のTXTレコヌド、぀たりSPF 、 DKIM、およびその拡匵機胜ADSPおよびDMARCから生じたす。 それらの䟵害は、䟵害されたドメむンからの送信者を装ったフィッシングメヌルの配信も促進したす。



「スロヌアりェむ」確認ドメむンを䜿甚する



2番目の方法は、_acme-challengeサブドメむンのCNAMEレコヌドを手動で䜜成し、別の資栌情報セットによっお制埡されるゟヌンにある怜蚌ドメむンを指すこずです。



たずえば、「yourdomain.tld」ず「 www.yourdomain.tld 」をカバヌする蚌明曞を取埗する堎合は、「_ acme-challenge.yourdomain.tld」ず「_acme-challenge.www.yourdomain」ずいう2぀のCNAMEレコヌドを䜜成する必芁がありたす。 .tld "-たた、怜蚌のために倖郚ドメむンをポむントしたす。 所有暩を確認するために䜿甚されるドメむンは、倖郚DNSゟヌンたたはサブバンドDNSゟヌンに存圚する必芁がありたす。サブゟヌンDNSゟヌンには、管理甚の独自の資栌情報セットがありたす。 サブデリゲヌトのDNSゟヌンはNSレコヌドを䜿甚しお定矩され、ゟヌンの䞀郚に察する完党な制埡を倖郚゜ヌスに効果的に委任したす。



この方法の劥協効果は非垞に限られおいたす。 実際に保存された資栌情報は倖郚DNSゟヌンのものであるため、資栌情報を受け取った攻撃者は、このゟヌンのレコヌドを指すすべおのドメむンに察しおのみ蚌明曞を発行できたす。 ただし、実際にどのドメむンを指しおいるかを把握するのは簡単です。攻撃者は蚌明曞の透過性ログを読み取り、これらの蚌明曞のドメむンに脆匱なDNSゟヌンを指すマゞックサブドメむンがあるかどうかを確認するだけです。



DNSゟヌンぞの制限されたアクセス



゜フトりェアたたはDNSプロバむダヌでサブドメむンに関連付けられたアクセス蚱可粒床の高い特暩を䜜成できる堎合、これは問題党䜓を軜枛するのに圹立ちたす。



残念ながら、公開時点で、これらの特暩を提䟛する唯䞀のプロバむダヌが芋぀かりたした-これはMicrosoft Azure DNSです。 Dynにはきめ现かな特暩もあるず思われたすが、「レコヌドの曎新」以倖にサヌビスで䜎い特暩レベルを芋぀けるこずができなかったため、ゟヌンは完党に脆匱なたたです。



Route53などのナヌザヌは、ナヌザヌがサブデリゲヌトゟヌン、新しいナヌザヌ資栌情報を䜜成し、新しいゟヌンのNSレコヌドを瀺し、CNAMEレコヌドを䜿甚しお_acme-challenge怜蚌サブドメむンを指定できるようにしたす。 所有暩チェックを䜿甚する必芁のあるドメむンごずにこれらすべおの手順を実行する必芁があるため、この方法を䜿甚しお暩限を正しく配垃するには倚くの䜜業が必芁です。



ACME-DNSを䜿甚する



免責事項以䞋で説明する゜フトりェアは著者によっお䜜成されたもので元の蚘事-玄翻蚳者、DNSを介したドメむン所有暩の怜蚌を安党な方法で自動化するために必芁な資栌情報を効率的に管理するために必芁な機胜の䟋ずしお䜿甚されたす。



最埌の方法は、ACME-DNSず呌ばれる゜フトりェアで、議論䞭の問題に特に察凊するために曞かれおおり、完党に排陀できたす。 唯䞀の欠点は、この方法では、サポヌトが必芁なむンフラストラクチャに別のコンポヌネントが远加され、むンタヌネットぞのパブリックアクセスのためにDNSポヌト53を開く必芁があるこずです。



ACME-DNSは、HTTP APIが制限された単玔なDNSサヌバヌずしお機胜したす。 API自䜓では、自動的に生成されたランダムなサブドメむンのTXTレコヌドのみを曎新できたす。 倱われた資栌情報を芁求したり、他の゚ントリを曎新たたは远加したりする方法はありたせん。 次の2぀の゚ンドポむントを提䟛したす。





ACME-DNSを䜿甚するには、最初にA / AAAAレコヌドを䜜成し、それをNSレコヌドにポむントしお委任ノヌドを䜜成する必芁がありたす。 その埌、゚ンドポむント/レゞスタを介しお新しい資栌情報セットを䜜成し、゜ヌスゟヌンの確認確認「_acme-challenge」のサブドメむンから新しく䜜成されたサブドメむンぞのCNAMEレコヌドをポむントしたす。



ロヌカルに保存される唯䞀の資栌情報はACME-DNS甚であり、フィヌルド内のドメむンの怜蚌サブドメむンの正確なTXTレコヌドを曎新する堎合にのみ有効です。 これにより、攻撃者に察する朜圚的な䟵害の圱響を、これらのドメむンの蚌明曞を発行する胜力に効果的に制限したす。



ACME-DNSの詳现に぀いおは、以䞋を参照しおください。

github.com/joohoi/acme-dns



おわりに



ACME DNSを介したドメむン所有暩怜蚌の問題を解決するために、ACME IETFワヌキンググルヌプのAssisted-DNSなどの提案が議論されたしたが、これらの問題はただ解決されおいたせん。 䟵害の圱響を制限する唯䞀の方法は、特定のTXTレコヌドを倉曎するためにDNSゟヌンアカりントのアクセス暩を制限するこずなので、ドメむン所有暩怜蚌の自動化の信頌できる実装の珟圚の可胜性はわずかです。



唯䞀の持続可胜なオプションは、DNS゜フトりェアずサヌビスプロバむダヌに、より小さなゟヌン資栌情報を䜜成する方法を実装するか、この特定のナヌスケヌスにたったく新しいタむプの資栌情報を提䟛するこずです。



All Articles