Domain Name System – DNS הינו מנגנון אשר פותח בראשית שנות ה- 80 במטרה לאפשר מיפוי שמות של משאבים ברשת מחשבים, לכתובות IP (או לכל ערך רצוי אחר).
DNS מורכב ממבנה נתונים ומפרוטוקול תקשורת המאפשר לתשאל את מבנה הנתונים.
מבנה הנתונים של DNS הוא היררכי ומבוזר. משמעות הדבר:
- המידע שנמצא על שרתי DNS מפוזר בכל העולם, במיקומים רבים ושונים.
- אין נקודה אחת שמכילה את כל המידע.
- סידור היררכי במבנה של עץ, מאפשר חיפוש מהיר של המידע.
- אין נקודת כשל יחידה (single point of failure).
- אחידות של המידע. תשובה לשאילתה תהיה זהה ללא תלות במקום בו היא נשאלת
נהוג להמשיל מנגנון DNS לספר טלפונים: אם ידוע שמו של אדם או של עסק, ניתן בקלות למצוא את מספר הטלפון שלו לפי אינדקס שמי. באופן דומה, באמצעות DNS ניתן לקבל את כתובת ה- IP של משאב ברשת (אתר אינטרנט, שירות דוא"ל, מדפסת, ספריית קבצים וכו' ) לפי שמו.
נוכח בעיית רוחב הפס שאפיינה את רשתות המחשוב בשנות ה- 80, בעת אפיון הפרוטוקול הושם דגש על ביצועים ומהירות התגובה של המערכת, ופחות על אבטחה ופרטיות. תרמה גם העובדה שאיומי סייבר לא היו מוכרים אז כפי שהם היום.
ולכן, המחיר אותו אנו משלמים בעבור הביצועים המהירים של פרוטוקול DNS הוא היעדר פרטיות ואי יכולת לוודא את מהימנות התשובה המתקבלת בשאילתת DNS.
במהלך העשור הראשון של שנות ה- 2000 הוחל בתיקנון מנגנון אבטחת DNS ע"י ה- IETF. המטרה היתה מצד אחד לאפשר אימות של שאילתות DNS ומצד שני להרחיב את פרוטוקול DNS, מבלי להמציאו מחדש. הפעילות שהוביל ה- IETF הביאה בסופו של דבר לתקינה של ההרחבה הקרויה "DNS Security Extensions", או בקיצור "DNSSEC".
ה- RFC המעודכן של DNSSEC, מס' 9364, נמצא כאן: https://datatracker.ietf.org/doc/html/rfc9364
מדריך זה הינו ניסיון ראשון לרכז בעברית את המשמעויות של הפעלת DNSSEC על מערכות DNS. המדריך מיועד הן למנהלים והן לאנשי IT אשר מעוניינים לאבטח את מערכות ה- DNS שלהם כנגד שימוש זדוני והונאת משתמשים.
Domain Name System Security Extensions – DNSSEC
DNSSEC הינו מנגנון אימות של המידע הניתן ע"י DNS. זהו אינו מנגנון פרטיות (הצפנה).
DNSSEC מאפשר למשתמשים לוודא כי המידע אותו קיבלו בשאילתת DNS הוא:
- מהימן – מי שמציג את המידע הוא אכן הבעלים החוקיים שלו
- שלם – המידע לא השתנה לאחר שהתפרסם ע"י בעליו החוקיים
שירותי DNS נתונים באופן קבוע לניסיונות מניפולציה של המידע אותו הם מחזיקים: הזנה של מידע מזויף, הרעלת cache, ועוד, במטרה להעביר למשתמשי הקצה מידע שקרי. לעיתים המוטיבציה של התוקפים היא שיבוש של השירות או השבתה שלו, אולם במקרים רבים המטרה היא להתחזות, כך שאפשר יהיה להפנות גולשים תמימים לאתרים זדוניים ובאמצעותם לגנוב מידע, סיסמאות, כסף וכו'. הפעילות הזדונית מסתמכת על העובדה שמרבית המשתמשים סומכים באופן לא מודע, על כך שהעברת הנתונים באינטרנט היא אמינה, וכי הנתונים אותם הם מקבלים בזמן הגלישה מהימנים. באופן הגיוני תורמת לכך העובדה שהגלישה כיום מתבצעת באופן כמעט מוחלט ב- TLS/SSL.
יחד עם זאת, מערכת שמות המתחם (DNS) אינה חלק מתהליך בנית האמון בגלישה (SSL), ולכן לא ניתן לסמוך על כך שתעביר בוודאות נתונים נכונים. כפי שהוזכר בראשית המסמך, פרוטוקול DNS כשלעצמו, אינו מספק הגנה על התוכן: הנתונים אינם מאובטחים מפני זיוף או מניפולציה העלולים להתבצע עליהם בעת שהם מועברים ברשת בדרכם אל המשתמשים, ומוכרים גם מקרים של שינוי מידע על שרתי ה- DNS עצמם. באמצעות DNSSEC ניתן לאמת את המידע המתקבל בשאילתת DNS ובכך להקשות מאוד על גורם זדוני לבצע מניפולציה על מידע זה.
מנגנון DNSSEC הוא תוספת לפרוטוקול DNS, המתבססת על הרחבה הקרויה EDNS– Extended DNS. זהו חלק סטנדרטי מהפרוטוקול, ואינו מצריך נקיטת פעולה כלשהי לשם הפעלתו. הסבר מפורט על EDNS ניתן לקרוא כאן [PDF]:
https://www.isoc.org.il/wp-content/uploads/2019/01/DNS-Flag-Day-Final.pdf