1. ספרייה
  2. DNS
  3. אבטחת DNS

עודכן לפני חודש

DNS נבנה לכפר. ביקשנו ממנו לשרת כוכב לכת.

בשנות ה-80, כשה-DNS תוכנן, האינטרנט היה רשת קטנה של אוניברסיטאות ומוסדות מחקר. האנשים שהפעילו שרתי שמות הכירו זה את זה. האמון היה אישי. הפרוטוקול שיקף זאת — לא היה לו שום מנגנון לוודא שתגובת DNS אכן הגיעה ממי שהיא טוענת שהגיעה ממנו.

ואז האינטרנט גדל. הכפר הפך לעיר, ואחר כך ליבשת, ואחר כך לכל העולם. הפרוטוקול שהניח טוב לב חיבר כעת מיליארדי זרים, חלקם בעלי כוונות זדוניות. DNSSEC קיים מפני שהיה עלינו להוסיף הוכחה במקום שבו פעם היה מספיק אמון.

ההתקפות שהפכו לאפשריות

ללא אימות, DNS הפך למטרה.

זיוף DNS (DNS spoofing): תוקף מיירט את שאילתת ה-DNS שלך ומחזיר כתובת IP מזויפת. אתה שואל "איפה נמצא bank.com?" ומקבל תשובה שמצביעה על שרת בשליטת התוקף. אתה מגיע לעותק מושלם של אתר הבנק שלך ומזין את פרטי ההתחברות שלך. התוקף מחזיק בהם עכשיו.

הרעלת מטמון (Cache poisoning): מסוכן אף יותר. תוקף מחדיר רשומות שגויות לתוך המטמון של רזולבר DNS. עכשיו כל מי שמשתמש באותו רזולבר — עשרות מיליוני אנשים אצל ספק שירות אינטרנט גדול — מופנה בשקט לאתרים זדוניים. התקפה מוצלחת אחת מרעילה את הבאר לכולם.

התקפות אלו מתרחשות לפני ההצפנה. לא משנה אם הבנק שלך משתמש ב-HTTPS מושלם אם אתה מתחבר לשרת הלא נכון לגמרי. אתה מאבטח שיחה עם מתחזה.

כיצד DNSSEC מוסיף הוכחה

DNSSEC מוסיף חתימות קריפטוגרפיות לרשומות DNS. כשבעל דומיין מפעיל DNSSEC, הוא יוצר זוג מפתחות. המפתח הפרטי חותם על רשומות ה-DNS שלו. המפתח הציבורי מפורסם כך שכל אחד יכול לאמת את החתימות הללו.

כשרזולבר מקבל תגובת DNS, הוא בודק את החתימה. חתימה תקינה? הנתונים אותנטיים ולא שונו. חתימה לא תקינה? משהו לא בסדר — דחה את התגובה.

זה קורה בשקיפות מלאה. אתה מבקש את כתובת ה-IP של example.com. הרזולבר מקבל את כתובת ה-IP בצירוף חתימה דיגיטלית. הוא מאמת את החתימה מול המפתח הציבורי של example.com. אם החישוב עולה, אתה מקבל את תשובתך. אם לא, אתה מקבל שגיאה. עדיפה שגיאה על שקר.

DNSSEC מציג מספר סוגי רשומות כדי לאפשר זאת:

רשומות RRSIG מכילות את החתימות עצמן — ההוכחה הקריפטוגרפית שרשומת DNS היא אותנטית.

רשומות DNSKEY מפרסמות את המפתחות הציבוריים הנדרשים לאימות חתימות.

רשומות DS יוצרות קישורים בין אזורי אב ובן, ובונות את שרשרת האמון כלפי מעלה.

רשומות NSEC/NSEC3 מוכיחות שדומיין אינו קיים. ללא אלה, תוקף יכול לטעון בשקר "דומיין זה אינו קיים" בעוד שהוא אכן קיים.

שרשרת האמון

DNSSEC משקף את ההיררכיה של DNS עם היררכיה של אמון.

בראש: אזור השורש, המופעל על ידי ICANN. המפתח הציבורי שלו מועבר לרזולברים כ"עוגן אמון" — הבסיס שעליו נשען כל השאר.

עבור דומיין כמו www.example.com, השרשרת עובדת כך:

  1. אזור השורש חותם על המפתח הציבורי של אזור ה-.com
  2. רשם ה-.com חותם על המפתח הציבורי של example.com
  3. example.com חותם על רשומות ה-DNS בפועל שלו

רזולבר שמאמת חתימות עוקב אחר השרשרת הזו מלמטה למעלה. הוא מאמת את החתימה של www.example.com באמצעות המפתח של example.com. הוא מאמת את המפתח של example.com באמצעות חתימת ה-.com. הוא מאמת את מפתח ה-.com באמצעות חתימת השורש. הוא סומך על השורש כי זה העוגן.

אם קישור כלשהו מתנתק — כל חתימה שנכשלת באימות — כל השרשרת נכשלת. אי אפשר לזייף חתימה ללא המפתח הפרטי, והמפתחות הפרטיים אינם מועברים לעולם.

אימות ללא פרטיות

הנה האמת הלא נוחה: DNSSEC מוכיח שתשובתך אותנטית בעוד שמאפשר לכולם לצפות בך כשאתה שואל.

DNSSEC מספק אימות ושלמות. הוא לא מספק הצפנה. שאילתות ה-DNS שלך ותשובותיהן נשארות גלויות לכל מי שצופה בתעבורת הרשת שלך. ספק האינטרנט שלך, הממשלה שלך, כל אחד ברשת המקומית — כולם יכולים לראות אילו דומיינים אתה מחפש.

זה כמו מכתב נוטריוני שנמסר על ידי מישהו שצועק את תוכנו ברחובות. המכתב אמיתי, אבל הפרטיות שלך נעלמה.

לפרטיות, תזדקק ל-DNS over HTTPS (DoH) או ל-DNS over TLS (DoT), שמצפינים את התקשורת בינך לבין הרזולבר שלך. DNSSEC ו-DNS מוצפן משלימים זה את זה:

  • DNSSEC: מוכיח שהנתונים אותנטיים
  • DoH/DoT: מסתיר את הנתונים מצופים

באופן אידאלי, תרצה את שניהם. תשובות אותנטיות שאיש לא יכול לראות.

מדוע האימוץ היה איטי

אזור השורש נחתם מאז יולי 20101. מפרטי ה-DNSSEC הליבתיים הושלמו ב-20052. רוב שמות הדומיין ברמה העליונה תומכים בו. ובכל זאת, למעלה מ-95% מדומיינים ה-.com נשארים ללא חתימה3.

הסיבה היא סיכון תפעולי. DNSSEC דורש ניהול מפתחות קריפטוגרפיים — יצירתם, החלפתם, שמירת החתימות רעננות. חומת אש שגויה יוצרת חור אבטחה. הגדרת DNSSEC שגויה גורמת לדומיין שלך להיעלם לגמרי. הכישלון הוא מוחלט.

בעלי דומיין לרוב לא רואים תועלת מיידית. HTTPS כבר מגן על החיבור ברגע שרזולוציית ה-DNS מסתיימת. למה להוסיף מורכבות עבור התקפה שרוב המשתמשים לא יחוו לעולם?

המדינות עם שיעורי האימוץ הגבוהים ביותר — שוודיה, הרפובליקה הצ'כית, נורווגיה, הולנד — כולן מציעות תמריצים כספיים, גובות מרשמים עמלות נמוכות יותר עבור דומיינים חתומים4. ללא תמריצים, האימוץ נעצר. הטכנולוגיה עובדת. הכלכלה לא.

מצד הרזולברים, ספקים גדולים כמו Google Public DNS ו-Cloudflare מאמתים חתימות DNSSEC באופן אוטומטי. אם אתה משתמש ברזולברים האלה, אתה נהנה מ-DNSSEC גם אם מעולם לא שמעת עליו. אבל רבים מרזולברי ספקי האינטרנט עדיין לא מאמתים, מה שמגביל את ההגנה לכ-30% ממשתמשי האינטרנט5.

מה DNSSEC באמת נותן לך

DNSSEC לא הופך את ה-DNS לפרטי. הוא לא מצפין דבר. הוא לא מגן מפני כל התקפה.

מה שהוא כן עושה: הוא מוסיף הוכחה. כשרזולבר שמאמת DNSSEC נותן לך כתובת IP עבור דומיין חתום, אתה יודע שהכתובת הגיעה משרת השמות בפועל של הדומיין ולא שונתה בדרך. אתה יודע שהתשובה אמיתית.

בעולם שבו הגדלנו פרוטוקול של כפר לגודל פלנטרי, שבו מיליארדי זרים חולקים תשתית שנבנתה על הנחת אמון, ההוכחה הזו חשובה.

שאלות נפוצות על DNSSEC

האם DNSSEC מגן על הפרטיות שלי?

לא. DNSSEC מאמת תגובות DNS אבל לא מצפין אותן. שאילתותיך ותשובותיהן נשארות גלויות לכל מי שמסתכל על תעבורת הרשת שלך. לפרטיות, תזדקק ל-DNS over HTTPS (DoH) או ל-DNS over TLS (DoT) בנוסף ל-DNSSEC.

כיצד אני יודע אם דומיין משתמש ב-DNSSEC?

תוכל לבדוק באמצעות כלים מקוונים כמו DNSViz או מנתח ה-DNSSEC של Verisign. הם מציגים אם דומיין חתום ואם שרשרת האמון שלמה. רוב המשתמשים לעולם לא צריכים לבדוק — הרזולבר שלהם מטפל באימות באופן אוטומטי.

מה קורה אם אימות DNSSEC נכשל?

רזולבר שמאמת חתימות מחזיר שגיאה במקום תגובת ה-DNS. זה מכוון — עדיף לכשול בגלוי מאשר לקבל נתונים שעלולים להיות מורעלים. הכישלון עשוי להצביע על התקפה, או על הגדרה שגויה בצד הדומיין.

האם אני צריך להפעיל DNSSEC עבור האתר שלי?

זה תלוי במודל האיומים שלך. עבור רוב האתרים הקטנים, HTTPS מספק הגנה מספקת על החיבור עצמו. עבור אתרים המטפלים בנתונים רגישים, עסקאות פיננסיות או תשתית קריטית, DNSSEC מוסיף הגנה משמעותית מפני התקפות מתוחכמות. ספקי אירוח DNS רבים הופכים כיום את הפעלת DNSSEC ללחיצה אחת.

האם ניתן לעקוף את DNSSEC?

אם תוקף משיג את המפתח הפרטי המשמש לחתימת אזור, הוא יכול ליצור חתימות תקינות לרשומות שגויות. ניהול מפתחות הוא קריטי. בנוסף, DNSSEC מגן רק על משתמשים שהרזולברים שלהם אכן מאמתים חתימות — אם מישהו משתמש ברזולבר שאינו מאמת, הוא לא מקבל הגנה ללא קשר לשאלה אם הדומיין חתום.

מקורות

האם דף זה היה מועיל?

😔
🤨
😃
מה זה DNSSEC? • ספרייה • Connected