התחלה עם שרת ה-DNS של BIND

\[
\text{שם הדומיין (DNS) הוא רכיב קריטי בתשתיות האינטרנט, ובניית שרת DNS יכולה להיות אתגר. אבל אל תדאג, לא עם BIND, שבו תוכל ליצור את שרת ה-DNS שלך בקלות. BIND יש לו שם טוב מאוד בקרב מנהלי המערכת על גבי הגמישות ותמיכה בזמינות גבוהה.

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

קרא הלאה וצור את שרת ה-DNS שלך בקלות!

דרישות מוקדמות

המדר הזה יהיה הדגמה של ידי ידי. כדי להמשיך, וודא שיש לך את הפריטים הבאים.

  • A Linux server – This example uses the Ubuntu 20.04 server.
  • A non-root user with root privileges or root/administrator user.
  • A domain name pointed to the server IP address – This demo uses the atadomain.io domain and server IP address 172.16.1.10.

התקנת חבילות BIND

מאגר החבילות של Ubuntu ברירת המחדל מספק חבילות BIND אך אינו מותקן במערכת שלך. תוכל להתקין את BIND כשרת DNS הראשית או בלבד. BIND מספק לך יכולות עוצמתיות, כמו תמיכה בהתקנת שרת ראשי-עבד, תמיכה ב-DNSSEC, ובכללי יכולת להגדרת רשימות בקרת גישה (ACL) מובנות.

כדי להתחיל עם BIND DNS, תצטרך תחילה להתקין את חבילות BIND במכשיר שלך עם מנהל החבילות apt.

1. פתח את הטרמינל שלך והתחבר לשרת שלך.
\]

2. הרץ את הפקודה apt update למטה כדי לעדכן ולרענן את אינדקס החבילות של המאגר. פקודה זו מבטיחה שתתקין את גרסת החבילות העדכנית ביותר.

sudo apt update
Refreshing Package Index

3. לאחר העדכון, הרץ את הפקודה apt install למטה כדי להתקין את חבילות ה-BIND עבור שרת ה-Ubuntu.

חבילות ה-bind9-utils וה-bind9-dnsutils מספקות כלים נוספים לשורת פקודה עבור BIND. חבילות אלו שימושיות לבדיקה ולניהול שרת ה-DNS של BIND.

sudo apt install bind9 bind9-utils bind9-dnsutils -y
Installing BIND Packages

4. לבסוף, הרץ את הפקודה systemctl למטה כדי לוודא את שירות ה-BIND.

חבילת ה-BIND מגיעה עם השירות named ומתחילה ומופעלת אוטומטית במהלך ההתקנה של חבילת ה-BIND.

# בדוק אם השירות named מופעל
sudo systemctl is-enabled named

# בדוק את מצב השירות named
sudo systemctl status named

כעת עליך לראות ששירות ה-named של BIND מופעל והסטטוס הוא פעיל (רץ). בנקודה זו, השירות BIND יפעל אוטומטית באתחול המערכת.

Checking BIND named service

הגדרת שרת DNS BIND

כעת התקנת את חבילות BIND על השרת שלך ב- Ubuntu, אז זה הזמן להגדיר את ההתקנה של BIND על השרת שלך ב- Ubuntu. איך? על ידי עריכת התצורות של BIND והשירות named.

כל ההגדרה עבור BIND זמינה בתיקיית ה- /etc/bind/, והגדרות עבור שירות ה- named בתיקיית /etc/default/named.

1. ערוך את ההגדרה של /etc/default/named באמצעות העורך שלך המועדף והוסף את האפשרות -4 בשורת ה- OPTIONS, כפי שמוצג למטה. אפשרות זו תפעיל את שירות ה- named רק על IPv4.

OPTIONS="-4 -u bind"

שמור את השינויים שביצעת וסגור את הקובץ.

Configuring BIND to Run on IPv4 Only

2. לאחר מכן, ערוך את הקובץ /etc/bind/named.conf.options ומלא את ההגדרה הבאה מתחת לשורת ה- directory "/var/cache/bind";.

ההגדרה הזו מגדירה את שירות BIND לרוץ על פורט UDP ברירת מחדל 53 על localhost של השרת וכתובת ה- IP הציבורית (172.16.1.10). באותו זמן, היא מאפשרת שאילתות מכל מארח לשרת DNS BIND באמצעות הפורוורדר של Cloudflare DNS 1.1.1.1.

    // listen port and address
    listen-on port 53 { localhost; 172.16.1.10; };

    // for public DNS server - allow from any
    allow-query { any; };

    // define the forwarder for DNS queries
    forwarders { 1.1.1.1; };

    // enable recursion that provides recursive query
    recursion yes;

בתחתית הקובץ, הער את השורה listen-on-v6 { any; }; כמוצג למטה, כדי להשבית את השירות named מהרצת IPv6.

Editing the BIND Configuration Options

3. לבסוף, הרץ את הפקודה הבאה כדי לאמת את התצורה של BIND.

sudo named-checkconf

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

Verifying BIND Configurations

הגדרת אזורי DNS

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

במדריך זה, תיצור שרת שם חדש (ns1.atadomain.io) ותתי-דומיינים (www.atadomain.io, mail.atadomain.io, vault.atadomain.io).

1. ערוך את הקובץ /etc/bind/named.conf.local באמצעות העורך המועדף עליך והוסף את ההגדרה הבאה.

ההגדרה הזו מגדירה את אזור הקדימה (/etc/bind/zones/forward.atadomain.io) ואת אזור ההיפוך (/etc/bind/zones/reverse.atadomain.io) עבור השם הדומיין atadomain.io.

zone "atadomain.io" {
    type master;
    file "/etc/bind/zones/forward.atadomain.io";
};

zone "1.16.172.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/reverse.atadomain.io";
};

שמור את השינויים וסגור את הקובץ.

Defining Forward Zone and Reverse Zone BIND

2. לאחר מכן, הרץ את הפקודה הבאה כדי ליצור ספריית חדשה (/etc/bind/zones) עבור הגדרות אזורי DNS.

mkdir -p /etc/bind/zones/

3. הרץ כל פקודה מתחת כדי להעתיק את ההגדרות הברירת מחדל של אזורי הקדימה וההיפוך לתיקייה /etc/bind/zones.

# העתק את אזור הקדימה הברירת מחדל
sudo cp /etc/bind/db.local /etc/bind/zones/forward.atadomain.io

# העתק את אזור ההיפוך הברירת מחדל
sudo cp /etc/bind/db.127 /etc/bind/zones/reverse.atadomain.io

# רשום את תוכן תיקיית /etc/bind/zones/
ls /etc/bind/zones/
Copying Default Zones Configurations

4. עכשיו, ערוך את ההגדרה של אזור הקדימה (/etc/bind/zones/forward.atadomain.io) באמצעות העורך המועדף עליך ומלא את ההגדרה שלהלן.

הגדרת אזור הפורוורד היא המקום בו אתה מגדיר את שם הדומיין שלך וכתובת ה-IP של השרת. הגדרה זו תתרגם את שם הדומיין לכתובת ה-IP הנכונה של השרת.

התצורה למטה יוצרת את השרת שם ותתי-דומיינים הבאים:

  • ns1.atadomain.io – השרת שם הראשי עבור הדומיין שלך עם כתובת ה-IP 172.16.1.10.
  • רשומת MX עבור הדומיין atadomain.io המטופלת על ידי mail.atadomain.io. רשומת ה-MX משמשת עבור שרת הדואר.
  • תתי-דומיינים עבור יישומים: www.atadomain.io, mail.atadomain.io, ו-vault.atadomain.io.
;
; BIND data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     atadomain.io. root.atadomain.io. (
                            2         ; Serial
                        604800         ; Refresh
                        86400         ; Retry
                        2419200         ; Expire
                        604800 )       ; Negative Cache TTL

; Define the default name server to ns1.atadomain.io
@       IN      NS      ns1.atadomain.io.

; Resolve ns1 to server IP address
; A record for the main DNS
ns1     IN      A       172.16.1.10


; Define MX record for mail
atadomain.io. IN   MX   10   mail.atadomain.io.


; Other domains for atadomain.io
; Create subdomain www - mail - vault
www     IN      A       172.16.1.10
mail    IN      A       172.16.1.20
vault   IN      A       172.16.1.50

שמור את השינויים וסגור את הקובץ.

Configuring Forward Zone BIND

5. כמו באזור הפורוורד, ערוך את קובץ התצורה של אזור הרוורס (/etc/bind/zones/reverse.atadomain.io) ומלא את התצורה הבאה.

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

רשומת PTR משתמשת בבלוק האחרון של כתובת ה-IP, כמו רשומת PTR עם המספר 10 עבור כתובת ה-IP של השרת 172.16.1.10.

התצורה הזו יוצרת את אזור הרוורס או רשומת PTR עבור הדומיינים הבאים:

  • שרת שם ns1.atadomain.io עם אזור הרוורס או רשומת PTR 172.16.1.10.
  • רשומת PTR עבור הדומיין mail.atadomain.io לכתובת ה-IP של השרת 172.16.1.20.
;
; BIND reverse data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     atadomain.io. root.atadomain.io. (
                            1         ; Serial
                        604800         ; Refresh
                        86400         ; Retry
                        2419200         ; Expire
                        604800 )       ; Negative Cache TTL

; Name Server Info for ns1.atadomain.io
@       IN      NS      ns1.atadomain.io.


; Reverse DNS or PTR Record for ns1.atadomain.io
; Using the last number of DNS Server IP address: 172.16.1.10
10      IN      PTR     ns1.atadomain.io.


; Reverse DNS or PTR Record for mail.atadomain.io
; Using the last block IP address: 172.16.1.20
20      IN      PTR     mail.atadomain.io.

שמור את השינויים וסגור את הקובץ.

Configuring Reverse Zone BIND

6. כעת, הפעל את הפקודות הבאות כדי לבדוק ולאמת את הגדרות BIND.

# בדיקת הגדרות הבסיס של BIND
sudo named-checkconf

# בדיקת אזור הקדימה forward.atadomain.io
sudo named-checkzone atadomain.io /etc/bind/zones/forward.atadomain.io

# בדיקת אזור ההפוך reverse.atadomain.io
sudo named-checkzone atadomain.io /etc/bind/zones/reverse.atadomain.io

כאשר ההגדרות שלך נכונות, תראה פלט דומה למצורף למטה.

Checking and Verifying BIND configurations

7. לבסוף, הפעל את הפקודה systemctl למטה כדי לאתחל ולאמת את השירות named. על ידי כך, השינויים החדשים ייחודשו לשירות named.

# אתחול שירות named
sudo systemctl restart named

# אימות שירות named
sudo systemctl status named

למטה, ניתן לראות שהשירות named פעיל (רץ).

Restarting Named Service and Verifying Named Service Status

פתיחת פתח DNS עם חומת אש UFW

בנקודה זו, התקנת את שרת ה-DNS של BIND הושלמה. אך עדיין עליך לאבטח את שרת ה-DNS שלך. יש להגדיר את חומת האש UFW ולפתוח את פתח ה-DNS עבור כל שאילתה לשרת. בכך תאפשר ללקוחות לבצע שאילתה לשרת DNS של BIND.

מסיבות אבטחה, מומלץ להפעיל ולאפשר את חומת האש UFW על שרת ה-Ubuntu שלך.

1. הפעל את הפקודה ufw למטה כדי לבדוק את היישומים הזמינים בחומת האש UFW.

sudo ufw app list

עליך לראות את ה-Bind9 ברשימת היישומים של היישום UFW למטה.

Listing Available Applications on the UFW Firewall

2. כעת הפעל את הפקודה הבאה כדי לאפשר את ה-Bind9 לגישה לקיר אש ה-UFW.

sudo ufw allow Bind9
Adding UW Rule

3. לבסוף, הפעל את הפקודה הבאה כדי לבדוק את החוקים שמאופשרים בקיר האש של ה-UFW.

sudo ufw status

עליך לראות את היישום Bind9 ברשימה כמו בתמונת המסך למטה.

Verifying List of Rules

אימות התקנת שרת ה-DNS BIND

עכשיו הסתיימה התקנת ה-DNS BIND והגדרת קיר האש של ה-UFW. אך איך ניתן לוודא את ההתקנה של שרת ה-DNS שלך? הפקודה dig תבצע את העבודה.

Dig היא כלי שורת פקודה לטיפול בתקלות בהתקנת שרת DNS. dig מבצע חיפוש DNS עבור שם הדומיין הנתון ומציג תשובות מפורטות עבור המטרה של שם הדומיין. במערכת Ubuntu, dig הוא חלק מחבילת bind9-dnsutil.

כדי לאמת את ההתקנה של שרת ה-DNS שלך BIND:

1. הפעל את כל הפקודות dig למטה כדי לאמת את התת-דומיינים www.atadomain.io, mail.atadomain.io, ו-vault.atadomain.io.

אם התקנת השרת DNS שלך הצליחה, כל תת־דומיין יתבטא לכתובת ה־IP הנכונה בהתבסס על הגדרת ההעברה של forward.atadomain.io.

# בדיקת שמות הדומיין
dig @172.16.1.10 www.atadomain.io
dig @172.16.1.10 mail.atadomain.io
dig @172.16.1.10 vault.atadomain.io

להלן פלט התבטאות התת־דומיין www.atadomain.io לכתובת ה־IP של השרת 172.16.1.10.

Checking sub-domain www.atadomain.io

להלן התת־דומיין mail.atadomain.io לכתובת ה־IP של השרת 172.16.1.20.

Checking sub-domain mail.atadomain.io

ולהלן התת־דומיין vault.atadomain.io לכתובת ה־IP של השרת 172.16.1.50.

Checking sub-domain vault.atadomain.io

2. לאחר מכן, הפעל את הפקודה dig למטה כדי לאמת את רשומת ה־MX עבור דומיין atadomain.io.

dig @172.16.1.10 atadomain.io MX

תראה כי לדומיין atadomain.io יש רשומת MX של mail.atadomain.io.

Checking MX record for atadomain.io

3. לבסוף, הפעל את הפקודות הבאות כדי לאמת את רשומת ה־PTR או אזור הפוך עבור כתובות ה־IP של השרת 172.16.1.10 ו־172.16.1.20.

אם ההתקנה של BIND שלך הצליחה, כל כתובת IP תתבטא לשם הדומיין המוגדר בהגדרת ההפוך של reverse.atadomain.io.

# בדיקת רשומת PTR או DNS הפוך
dig @172.16.1.10 -x 172.16.1.10
dig @172.16.1.10 -x 172.16.1.20

תוכל לראות מטה, כי כתובת ה־IP של השרת 172.16.1.10 מתבטאת לשם הדומיין ns1.atadomain.io.

Checking PTR record for IP address 172.16.1.10

כפי שאתה רואה למטה, כתובת ה־IP של השרת 172.16.1.20 מתבטאת לשם הדומיין mail.atadomain.io.

Checking PTR record for IP address 172.16.1.20

מסקנה

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

עכשיו, איך ניתן ליישם שרת DNS BIND בסביבתך? אולי ליישם את BIND כשרת מורשה? או להקים זמינות גבוהה עם התקנת BIND ראשי-עבד?

Source:
https://adamtheautomator.com/bind-dns-server/