مدونة FireAI للأمان

بقلم FireAI Security & Research Team · نُشر في

DNS المشفّر على macOS: DoH وDoT عبر ملفات تعريف الإعداد

DNS المشفّر على macOS: DoH وDoT عبر ملفات تعريف الإعداد

يخفي HTTPS ما ترسله إلى موقع ويب، لكن قبل أن يتمكن جهاز الـ Mac حتى من فتح ذلك الاتصال، عليه أن يطرح سؤالًا بنص عادي: «إلى أي خادم يشير هذا الاسم؟». هذا السؤال — استعلام DNS — ينتقل غير مشفَّر افتراضيًا على معظم الشبكات، ما يعني أن مزوّد خدمة الإنترنت لديك، أو مسؤول شبكة مكتبك، أو أي شخص يشارك شبكة Wi-Fi غير مؤمَّنة، يمكنه رؤية كل نطاق تحلّه، حتى لو كانت الصفحات نفسها مشفّرة بالكامل بعد ذلك.

لماذا يُسرّب DNS العادي البيانات

يرسل DNS التقليدي، الذي وُضع معياره قبل عقود من أن يصبح HTTPS هو الافتراضي على الويب، الاستعلامات عبر UDP أو TCP عاديين على المنفذ 53 دون تشفير، وفي معظم إعدادات الشبكات المنزلية والعامة، دون أي مصادقة للمحلِّل (resolver) أيضًا. لا يحتاج مشغّل الشبكة إلى كسر HTTPS لبناء قائمة بكل نطاق تزوره — يكفيه مراقبة حركة DNS الخاصة بك، التي تقع في العلن مباشرة بجانبها. وهذه أيضًا الطريقة التي تعمل بها كثير من فلاتر المحتوى القائمة على DNS وبعض أشكال المراقبة على مستوى الشبكة: ليس عبر فحص حركتك المشفّرة، بل ببساطة عبر تسجيل أو حظر الاستعلام الذي يجب أن يحدث قبل وجود تلك الحركة أصلًا.

DoH وDoT: طريقتان لتشفير الاستعلام نفسه

يحل معياران من IETF هذه المشكلة بتغليف استعلام DNS نفسه بالتشفير. يُغلّف DNS-over-TLS، المعرَّف في RFC 7858، استعلامات DNS داخل اتصال TLS مشفّر مخصص على المنفذ 853، ما يميّزه عن الحركة العادية ويجعل من السهل على شبكة ما التعرف عليه — ومن حيث المبدأ، حظره كليًا إن أرادت الشبكة إيقاف DNS المشفّر تحديدًا. أما DNS-over-HTTPS، المعرَّف في RFC 8484، فيربط استعلام DNS بدلًا من ذلك بطلب HTTPS عادي على المنفذ 443، وهو المنفذ نفسه الذي تستخدمه تقريبًا كل حركة تصفح الويب العادية — وهو خيار تصميم يجعل استعلامات DoH أصعب بكثير من أن تُميَّز عن تصفح الويب العام وبالتالي أصعب في حظرها بمعزل عنه.

الدعم الأصلي من Apple منذ macOS 11

بنت Apple دعم DNS المشفّر مباشرة داخل مكدس الشبكات الخاص بها بدلًا من تركه لتطبيقات طرف ثالث، وأعلنت عن الميزة في مؤتمر WWDC 2020 مع إصدار macOS Big Sur (macOS 11) وإصدار iOS 14 المكافئ. عرضت الجلسة طريقتين لتفعيله: واجهة برمجية NEDNSSettingsManager للتطبيقات لإعداده برمجيًا، والخيار الذي سيستخدمه معظم الناس فعليًا — ملف تعريف إعداد يحمل حمولة com.apple.dnsSettings.managed، الموثقة في مرجع إدارة الأجهزة من Apple، والذي يتيح لك تحديد عنوان محلِّل DoH أو DoT ليستخدمه كل تطبيق على النظام افتراضيًا، دون الحاجة إلى أي برنامج من طرف ثالث.

نموذج ملف تعريف إعداد

ملف تعريف الإعداد هو قائمة خصائص XML (ملف .mobileconfig) يمكن لـ macOS تثبيتها عبر إعدادات النظام بمجرد النقر المزدوج عليها أو سحبها إلى لوحة ملفات التعريف. يوجّه المثال أدناه جهاز Mac إلى محلِّل DNS-over-HTTPS العام من Quad9 — خدمة واسعة الاستخدام لا تتطلب حسابًا وتحظر أيضًا افتراضيًا الاتصالات بنطاقات معروفة بالتصيد الاحتيالي وأنشطة ضارة أخرى. استبدل قيم المعرِّف وUUID النائبة قبل استخدامه؛ فكل ملف تعريف حقيقي يحتاج إلى PayloadUUID فريد خاص به.

quad9-doh.mobileconfig
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>PayloadContent</key>
  <array>
    <dict>
      <key>PayloadType</key>
      <string>com.apple.dnsSettings.managed</string>
      <key>PayloadIdentifier</key>
      <string>com.example.dns.quad9-doh</string>
      <key>PayloadUUID</key>
      <string>REPLACE-WITH-A-UNIQUE-UUID-1</string>
      <key>PayloadVersion</key>
      <integer>1</integer>
      <key>PayloadDisplayName</key>
      <string>Quad9 Encrypted DNS (DoH)</string>
      <key>DNSSettings</key>
      <dict>
        <key>DNSProtocol</key>
        <string>HTTPS</string>
        <key>ServerURL</key>
        <string>https://dns.quad9.net/dns-query</string>
        <key>ServerAddresses</key>
        <array>
          <string>9.9.9.9</string>
          <string>149.112.112.112</string>
          <string>2620:fe::fe</string>
          <string>2620:fe::9</string>
        </array>
      </dict>
    </dict>
  </array>
  <key>PayloadDisplayName</key>
  <string>Encrypted DNS - Quad9</string>
  <key>PayloadIdentifier</key>
  <string>com.example.dns.quad9-doh.root</string>
  <key>PayloadType</key>
  <string>Configuration</string>
  <key>PayloadUUID</key>
  <string>REPLACE-WITH-A-UNIQUE-UUID-2</string>
  <key>PayloadVersion</key>
  <integer>1</integer>
</dict>
</plist>

لاستخدام Cloudflare بدلًا من ذلك، اضبط ServerURL على https://cloudflare-dns.com/dns-query وقيمة ServerAddresses على 1.1.1.1 و1.0.0.1 (مع 2606:4700:4700::1111 و2606:4700:4700::1001 لعناوين IPv6) — أو، لاستخدام DNS-over-TLS بدلًا من DoH، اضبط DNSProtocol على TLS وServerName على one.one.one.one، وفق توثيق DoT المنشور من Cloudflare.

تثبيته

  1. احفظ الملف بامتداد .mobileconfig وانقر عليه نقرًا مزدوجًا، أو افتح إعدادات النظام، واذهب إلى الخصوصية والأمان، ثم ملفات التعريف، واسحب الملف إليها.
  2. سيعرض macOS محتويات الحمولة — بما في ذلك المحلِّل الذي أعددته — قبل موافقتك عليها؛ راجع هذا في كل مرة، لأن ملف التعريف هو بالضبط الطريقة التي يمكن لجهة خبيثة أن تعيد بها توجيه DNS الخاص بك إن ثبّتّ ملف تعريف من مصدر غير موثوق.
  3. اضغط تثبيت (Install) ووثّق هويتك. سيظهر ملف تعريف غير موقّع مثل هذا النموذج بحالة تحقق «غير موقّع» (Unsigned)؛ وهذا متوقع لملف تعريف مبني يدويًا وليس بحد ذاته علامة على تلاعب، لكن لأي استخدام يتجاوز الاختبار الشخصي ينبغي لك توقيع ملف التعريف حتى يمكن التحقق من سلامته.

التحقق من نجاح الأمر

لا تكتفِ بالثقة بلوحة الإعدادات — تحقق من الطرفية.

الطرفية
# Show the resolvers macOS is actually configured to use
scutil --dns
# Look for your interface's resolver entry — it should now show
# the DoH/DoT server address you configured, not your router or ISP's resolver

# Confirm a lookup succeeds and see which resolver answered
dig example.com

# Cloudflare's own diagnostic page also reports whether your
# connection is using encrypted DNS when you open it in a browser
open https://1.1.1.1/help

إذا كانت scutil --dns لا تزال تسرد عنوان جهاز الراوتر الخاص بك أو محلِّل مزوّد خدمة الإنترنت باعتباره خادم DNS النشط، فإن ملف التعريف لم يُفعَّل — تحقق من أنك ثبّتّه ضمن ملفات التعريف وليس مجرد تنزيله، وأنه لا يوجد إعداد شبكة آخر (انظر أدناه) يتجاوزه.

مزالق تجعل هذا يتوقف عن العمل بصمت

  • غالبًا ما يتجاوز تطبيق VPN إعدادات DNS الخاصة بالنظام أثناء اتصاله، ويوجّه الاستعلامات عبر محلِّله الخاص بدلًا من ذلك — تحقق من إعداد DNS مرة أخرى بعد الاتصال بشبكة VPN، لا قبله فقط.
  • لا يمكن عادة لبوابات الدخول المقيَّدة (captive portals) على شبكات Wi-Fi في الفنادق والمطارات والمقاهي إتمام تدفق تسجيل الدخول الخاص بها عبر DNS مشفّر، لأنها تعتمد على اعتراض طلب DNS عادي لإعادة توجيهك إلى صفحة تسجيل دخول؛ قد تحتاج إلى إزالة ملف التعريف أو تعطيله مؤقتًا للاتصال بالإنترنت، ثم إعادة تثبيته بعد الاتصال.
  • تشحن بعض المتصفحات — من بينها Firefox وChrome — إعداد DoH خاص بها منفصل قد يتجاوز الإعداد على مستوى النظام أو يكرره؛ تحقق من إعدادات الشبكة الخاصة بالمتصفح نفسه إن لم يطابق سلوكه ما تُبلغ عنه scutil --dns.
  • يحل iCloud Private Relay وDNS المشفّر مشكلتين مختلفتين ومتداخلتين — يخفي Private Relay عنوان IP الخاص بك عن المواقع التي تزورها في Safari، بينما يخفي DNS المشفّر النطاقات التي تحلّها عن شبكتك؛ استخدام أحدهما لا يجعل الآخر زائدًا عن الحاجة.

دور FireAI وHisnLabs

FireAI does not provide encrypted DNS today — it is on the roadmap, not in the current release — so a configuration profile like the one above is what actually closes the DNS-leak gap; FireAI’s job is different, watching and controlling which apps get to make a connection at all once that lookup resolves.

FireAI هو منتج HisnLabs نفسها: جدار حماية بذكاء اصطناعي يعمل على جهاز Mac مباشرة. يعرض بلغة واضحة كل اتصال تجريه تطبيقاتك، ويترك لك القرار فيما يخرج من جهازك — ذكاؤه الاصطناعي يعمل محليًا، فلا يُرسَل ترافيكك إلينا ولا إلى أي جهة أخرى أبدًا. فريق أبحاث الأمن في HisnLabs هو من يحافظ على دقة هذه القرارات: يصنّف النطاقات بين قياس عن بُعد عادي وخدمة حقيقية، ويتتبّع بلد وشبكة كل اتصال، ويدرّب النموذج المحلي (ميزة Autopilot) على حركة اتصال حقيقية، دون أن يغادر أي شيء جهاز Mac.

يمكنك الاطلاع على القرارات التقنية وراء ذلك، أو تجربة FireAI لمدة 17 يومًا، على FireAI من HisnLabs.

المصادر