כיצד להגדיר חומת אש עם UFW על Debian 11

הקדמה

UFW, או גיבוי מערכת ללא פשטות, הוא ממשק ניהול גיבוי פשוט שמסתיר את המורכבות של טכנולוגיות סינון חבילות ברמת פקטים נמוכה יותר כמו iptables ו־nftables. אם אתה מחפש להתחיל להבטיח את הרשת שלך, ואינך בטוח איזה כלי להשתמש, UFW עשוי להיות הבחירה הנכונה עבורך.

מדריך זה יראה לך כיצד להגדיר גיבוי עם UFW ב־Debian 11.

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

כדי לעקוב אחרי מדריך זה, תצטרך שרת Debian 11 אחד עם משתמש sudo לא־רוט, שתוכל להגדיר על ידי מעקב אחר שלב 1 עד 3 ב־מדריך הגדרת שרת ראשונית עם Debian 11.

שלב 1 – התקנת UFW

ל- Debian אין את UFW מותקן כברירת מחדל. אם עקבת אחרי המדריך המלא של הגדרת השרת ההתחלתית, תהיה מותקן ומאופשר UFW. אם לא, התקן עכשיו באמצעות apt:

  1. sudo apt install ufw

תקין את UFW ואפשר אותו בשלבים הבאים.

שלב 2 — שימוש ב-IPv6 עם UFW (אופציונלי)

המדריך נכתב עם חשיבות ל-IPv4 בדעת, אך יעבוד גם עבור IPv6 אם תפעיל אותו. אם לשרת Debian שלך יש IPv6 מאופשר, תרצה לוודא ש-UFW מוגדר לתמוך ב-IPv6. זה יבטיח ש-UFW תנהל את כללי הגנה ל-IPv6 בנוסף ל-IPv4. כדי להגדיר זאת, פתח את קובץ ההגדרות של UFW /etc/default/ufw עם nano או העורך האהוב עליך:

  1. sudo nano /etc/default/ufw

אתה יכול למצוא את IPV6 בקובץ ולוודא שהערך הוא yes:

/etc/default/ufw excerpt
IPV6=yes

שמור וסגור את הקובץ. אם אתה משתמש ב-nano, לחץ על CTRL+X, אז Y, ואז ENTER כדי לשמור ולצאת מהקובץ.

עכשיו כאשר UFW מופעל, יהיה מוגדר לכתוב כללי חומת אש ל-IPv4 וגם ל-IPv6. לפני שתפעיל את UFW, אך תרצה לוודא שהחומת אש שלך מוגדרת להתריע לך להתחבר דרך SSH. התחל עם הגדרת מדיניות ברירת המחדל.

שלב 3 — הגדרת מדיניות ברירת מחדל

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

הגדר את חוקי UFW בחזרה לברירות המחדל כך שתוכל להבטיח שתוכל לעקוב אחר ההדרכה הזו. כדי להגדיר את הברירות המחדל שמשמשות על ידי UFW, השתמש בפקודות אלו:

  1. sudo ufw default deny incoming
  2. sudo ufw default allow outgoing

תקבל פלט דומה לזה:

Output
Default incoming policy changed to 'deny' (be sure to update your rules accordingly) Default outgoing policy changed to 'allow' (be sure to update your rules accordingly)

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

שלב 4 — מאפשר חיבורי SSH

אין ניתן להפעיל את מגן האש שלך UFW כעת, מכיוון שזה יכול לדחות את כל החיבורים הנכנסים כולל ניסיונות הגישה שלך לשרת שלך. זה אומר שתצטרך ליצור כללים שמאפשרים באופן ברור חיבורים נכנסים חוקיים – חיבורי SSH או HTTP, לדוגמה – אם ברצונך שהשרת שלך יגיב לסוגים אלו של בקשות. אם אתה משתמש בשרת בענן, תכניס כנראה לאפשר חיבורי SSH נכנסים כך שתוכל להתחבר ולנהל את השרת שלך.

כדי להגדיר את השרת שלך כך שיאפשר חיבורי SSH נכנסים, השתמש בפקודה זו:

  1. sudo ufw allow ssh

זה יצור כללי מגן אש שיאפשרו את כל החיבורים בפורט 22, שהוא הפורט שבו מקשיב המנהל SSH כברירת מחדל. UFW יודע מהו הפורט שמקושר ל- allow ssh מכיוון שהוא מופיע כשירות בקובץ /etc/services.

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

  1. sudo ufw allow 22

אם הגדרת את המנהל של SSH שלך להשתמש בפורט אחר, עליך לציין את הפורט הראוי. לדוגמה, אם שרת ה-SSH שלך מקשיב על פורט 2222, תוכל להשתמש באותה הפקודה אך להחליף את 22 ב- 2222.

עכשיו שהמגן האש שלך מוגדר כך שיאפשר חיבורי SSH נכנסים, תוכל להפעיל אותו.

שלב 5 – הפעלת UFW

כדי להפעיל את UFW, השתמש בפקודה זו:

  1. sudo ufw enable

תקבל הודעת אזהרה שאומרת שהפקודה עשויה להפריע לחיבורי SSH קיימים. כבר הגדרת כלל גישה לחיבורי SSH בחומת האש, אז יש להמשיך. תגיב להצעה עם y ולחץ ENTER.

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

  1. sudo ufw status verbose

שאר המדריך מכסה איך להשתמש ב־UFW בעומק יותר, כולל אישור ודחיית סוגי חיבורים שונים.

שלב 6 — אישור חיבורים אחרים

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

ניתן לעשות זאת גם עבור HTTP על פורט 80, שהוא מה ששרתי האינטרנט לא מוצפנים משתמשים בו. כדי לאפשר סוג זה של תעבורה, יש להקליד:

  1. sudo ufw allow http

ניתן גם לעשות זאת עבור HTTPS על פורט 443, שהוא מה ששרתי האינטרנט מוצפנים משתמשים בו. כדי לאפשר סוג זה של תעבורה, יש להקליד:

  1. sudo ufw allow https

בשני התרחישים, ציון הפורטים גם יעבוד, עם HTTP היוה 80 ועם HTTPS היוה 443. לדוגמה:

  1. sudo ufw allow 80

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

טווחי יציאות מסוימים

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

לדוגמה, כדי לאפשר חיבורי X11, אשר משתמשים ביציאות 60006007, ניתן להשתמש בפקודות אלה:

  1. sudo ufw allow 6000:6007/tcp
  2. sudo ufw allow 6000:6007/udp

כאשר מציינים טווחי יציאות עם UFW, עליך לציין את הפרוטוקול (tcp או udp) שבו יישמו הכללים. זה לא נאמר קודם מכיוון שאי הצהרה על הפרוטוקול מאפשרת אוטומטית את שני הפרוטוקולים, מה שכדאי ברוב המקרים.

כתובות IP מסוימות

בעת עבודה עם UFW, ניתן גם לציין כתובות IP. לדוגמה, אם ברצונך לאפשר חיבורים מכתובת IP מסוימת, כגון כתובת IP של עבודה או בית של 203.0.113.4, עליך לציין from ואז את כתובת ה-IP:

  1. sudo ufw allow from 203.0.113.4

ניתן גם לציין יציאה ספציפית שלה מותר לכתובת ה-IP להתחבר על ידי הוספת to any port ואז מספר היציאה. לדוגמה, אם ברצונך לאפשר ל-203.0.113.4 להתחבר ליציאה 22 (SSH), השתמש בפקודה זו:

  1. sudo ufw allow from 203.0.113.4 to any port 22

תתי-רשתות

אם ברצונך לאפשר רשת כתובות IP, תוכל לעשות זאת באמצעות הסימון CIDR כדי לציין מסכת רשת. לדוגמה, אם ברצונך לאפשר את כל כתובות ה-IP הנכנסות בטווח מ-203.0.113.1 עד 203.0.113.254, תוכל להשתמש בפקודה זו:

  1. sudo ufw allow from 203.0.113.0/24

באופן דומה, תוכל גם לציין את יצירת החיבור של הכתובת המשאבת הנמצאת בתתי-רשת 203.0.113.0/24 המורשה להתחבר. שוב, בשימוש בפתחה 22 (SSH) כדוגמה:

  1. sudo ufw allow from 203.0.113.0/24 to any port 22

חיבורים לממשק רשת מסוים

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

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

  1. ip addr
Output
. . . 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state . . . 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default . . .

הפלט המודגש מציין את שמות ממשקי הרשת. לרוב יש להם שמות כמו eth0 או enp3s2.

אם לשרת שלך יש ממשק רשת ציבורי בשם eth0, לדוגמה, תוכל לאפשר תעבורת HTTP אליו באמצעות פקודה זו:

  1. sudo ufw allow in on eth0 to any port 80

בעקבות פעולה זו יהיה ניתן לשרת שלך לקבל בקשות HTTP מהאינטרנט הציבורי.

או, אם ברצונך להשתמש בשרת מסד נתונים MySQL (פתחת 3306) כדי להאזין לחיבורים בממשק הרשת הפרטי eth1, תוכל להשתמש בפקודה הזו:

  1. sudo ufw allow in on eth1 to any port 3306

זה יאפשר לשרתים אחרים ברשת הפרטית שלך להתחבר למסד הנתונים של MySQL.

שלב 7 — מניעת חיבורים

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

לעיתים תרצה למנוע חיבורים ספציפיים בהתבסס על כתובת IP מקור או תת־רשת, אולם, אולי מכיוון שאתה יודע שהשרת שלך מותקף משם. בנוסף, אם ברצונך לשנות את מדיניות הכניסה המוגדרת מראש שלך ל־allow (שאינו מומלץ), תצטרך ליצור כללי deny עבור כל שירות או כתובות IP שלא תרצה לאפשר חיבורים אליהם.

כדי לכתוב כללי deny, תוכל להשתמש בפקודות המתוארות לעיל, ולהחליף allow ב־deny.

לדוגמה, כדי למנוע חיבורים HTTP, תוכל להשתמש בפקודה הזו:

  1. sudo ufw deny http

או אם ברצונך למנוע את כל החיבורים מ־203.0.113.4 תוכל להשתמש בפקודה הזו:

  1. sudo ufw deny from 203.0.113.4

עכשיו, תוכל ללמוד כיצד ליישם כללי מחיקה.

שלב 8 — מחיקת כללים

לדעת כיצד למחוק כללי חומת אש חשוב כמו לדעת כיצד ליצור אותם. ישנם שני אופנים לציון אילו כללים למחוק: לפי מספר הכלל או לפי הכלל עצמו. זה דומה לאופן בו נצוין הכללים כאשר נוצרו.

לפי מספר הכלל

אם אתה משתמש במספר הכלל כדי למחוק כללי חומת אש, הדבר הראשון שתרצה לעשות הוא לקבל רשימה של כללי החומה שלך. הפקודה UFW status מציגה את האפשרות numbered, שמציגה מספרים ליד כל כלל:

  1. sudo ufw status numbered
Output
Status: active To Action From -- ------ ---- [ 1] 22 ALLOW IN 15.15.15.0/24 [ 2] 80 ALLOW IN Anywhere

אם החלטת שברצונך למחוק את הכלל 2, שמאפשר חיבורי HTTP בפתחה 80, תוכל לציין זאת בפקודת UFW delete הבאה:

  1. sudo ufw delete 2

זה יציג הודעת אישור, שבה תוכל לענות עם y/n. הקלדת y תמחוק את הכלל 2. שים לב שאם יש לך IPv6 מופעל, תרצה למחוק את הכלל התואם ב-IPv6 גם כן.

לפי הכלל המופעל

האלטרנטיבה למספרי כללים היא לציין את הכלל המדויק שברצונך למחוק. לדוגמה, אם ברצונך להסיר את הכלל allow http, תוכל לכתוב זאת כמו כן:

  1. sudo ufw delete allow http

אפשר גם לציין את הכלל באמצעות allow 80 במקום שם השירות:

  1. sudo ufw delete allow 80

שיטה זו תמחק את שני הכללים ל IPv4 ו-IPv6, אם קיימים.

שלב 9 — בדיקת מצב UFW וכללים

בכל עת, ניתן לבדוק את מצב ה-UFW באמצעות הפקודה הבאה:

  1. sudo ufw status verbose

אם ה-UFW מושבת, שזו הגדרת ברירת המחדל, הפלט יהיה כזה:

Output
Status: inactive

אם ה-UFW פעיל, מה שצפוי אם עקבת אחרי השלב 3, הפלט יציין שהוא פעיל וירשום כל כלל שהגדרת. לדוגמה, אם הגדרת את הגדרת הגישה המרוחקת ל־SSH (יציאה 22) מכל מקום, הפלט עשוי לכלול משהו דומה לזה:

Output
Status: active To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere

השתמש בפקודת status אם ברצונך לבדוק איך ה-UFW הגדיר את הגדרות הגישה לגישה.

שלב 10 — ניטור או איפוס UFW (אופציונלי)

אם החלטת שאינך רוצה להשתמש ב-UFW, תוכל להשבית אותו באמצעות הפקודה הבאה:

  1. sudo ufw disable

כללים שיצרת עם UFW לא יהיו פעילים יותר. תמיד ניתן להפעיל אותו מחדש באמצעות sudo ufw enable אם תרצה להפעיל אותו מחדש בעתיד.

אם כבר קיימים לך כללים של UFW, אך החלטת שתרצה להתחיל מחדש, תוכל להשתמש בפקודת האיפוס:

  1. sudo ufw reset

זה יכבה את UFW וימחק כל כלל שכבר הגדרת בעבר. יש לציין כי המדיניות הברירת מחדל לא תשתנה להגדרותיה המקוריות אם שינית אותן באיזשהו נקודה. זה יעניק לך התחלה חדשה עם UFW.

מסקנה

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

כדי ללמוד עוד על תצורות נפוצות נוספות של UFW, ניתן לבדוק את המדריך הזה על UFW Essentials: Common Firewall Rules and Commands.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-debian