הקדמה
UFW, או גיבוי מערכת ללא פשטות, הוא ממשק ניהול גיבוי פשוט שמסתיר את המורכבות של טכנולוגיות סינון חבילות ברמת פקטים נמוכה יותר כמו iptables
ו־nftables
. אם אתה מחפש להתחיל להבטיח את הרשת שלך, ואינך בטוח איזה כלי להשתמש, UFW עשוי להיות הבחירה הנכונה עבורך.
מדריך זה יראה לך כיצד להגדיר גיבוי עם UFW ב־Debian 11.
דרישות מוקדמות
כדי לעקוב אחרי מדריך זה, תצטרך שרת Debian 11 אחד עם משתמש sudo
לא־רוט, שתוכל להגדיר על ידי מעקב אחר שלב 1 עד 3 ב־מדריך הגדרת שרת ראשונית עם Debian 11.
שלב 1 – התקנת UFW
ל- Debian אין את UFW מותקן כברירת מחדל. אם עקבת אחרי המדריך המלא של הגדרת השרת ההתחלתית, תהיה מותקן ומאופשר UFW. אם לא, התקן עכשיו באמצעות apt
:
תקין את UFW ואפשר אותו בשלבים הבאים.
שלב 2 — שימוש ב-IPv6 עם UFW (אופציונלי)
המדריך נכתב עם חשיבות ל-IPv4 בדעת, אך יעבוד גם עבור IPv6 אם תפעיל אותו. אם לשרת Debian שלך יש IPv6 מאופשר, תרצה לוודא ש-UFW מוגדר לתמוך ב-IPv6. זה יבטיח ש-UFW תנהל את כללי הגנה ל-IPv6 בנוסף ל-IPv4. כדי להגדיר זאת, פתח את קובץ ההגדרות של UFW /etc/default/ufw
עם nano
או העורך האהוב עליך:
אתה יכול למצוא את IPV6
בקובץ ולוודא שהערך הוא yes
:
IPV6=yes
שמור וסגור את הקובץ. אם אתה משתמש ב-nano
, לחץ על CTRL+X
, אז Y
, ואז ENTER
כדי לשמור ולצאת מהקובץ.
עכשיו כאשר UFW מופעל, יהיה מוגדר לכתוב כללי חומת אש ל-IPv4 וגם ל-IPv6. לפני שתפעיל את UFW, אך תרצה לוודא שהחומת אש שלך מוגדרת להתריע לך להתחבר דרך SSH. התחל עם הגדרת מדיניות ברירת המחדל.
שלב 3 — הגדרת מדיניות ברירת מחדל
אם אתה רק מתחיל עם הצפין שלך, החוקים הראשונים שעליך להגדיר הם מדיניות הברירת מחדל. חוקים אלו עוסקים בתעבורה שלא מתאימה באופן ברור לאף חוק אחר. כברירת מחדל, UFW מוגדר לדחות את כל החיבורים הנכנסים ולאפשר את כל החיבורים היוצאים. זה אומר שכל אדם שינסה להתחבר לשרת שלך לא יוכל להתחבר, בעוד שכל יישום בתוך השרת יוכל להתחבר לעולם החיצוני.
הגדר את חוקי UFW בחזרה לברירות המחדל כך שתוכל להבטיח שתוכל לעקוב אחר ההדרכה הזו. כדי להגדיר את הברירות המחדל שמשמשות על ידי UFW, השתמש בפקודות אלו:
תקבל פלט דומה לזה:
OutputDefault 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 נכנסים, השתמש בפקודה זו:
זה יצור כללי מגן אש שיאפשרו את כל החיבורים בפורט 22, שהוא הפורט שבו מקשיב המנהל SSH כברירת מחדל. UFW יודע מהו הפורט שמקושר ל- allow ssh מכיוון שהוא מופיע כשירות בקובץ /etc/services.
אך, באפשרותך לכתוב את הכלל השקול על ידי ציון הפורט במקום שם השירות. לדוגמה, הפקודה הזו תיצור את אותו התוצאה כמו אם למעלה:
אם הגדרת את המנהל של SSH שלך להשתמש בפורט אחר, עליך לציין את הפורט הראוי. לדוגמה, אם שרת ה-SSH שלך מקשיב על פורט 2222, תוכל להשתמש באותה הפקודה אך להחליף את 22 ב- 2222.
עכשיו שהמגן האש שלך מוגדר כך שיאפשר חיבורי SSH נכנסים, תוכל להפעיל אותו.
שלב 5 – הפעלת UFW
כדי להפעיל את UFW, השתמש בפקודה זו:
תקבל הודעת אזהרה שאומרת שהפקודה עשויה להפריע לחיבורי SSH קיימים. כבר הגדרת כלל גישה לחיבורי SSH בחומת האש, אז יש להמשיך. תגיב להצעה עם y
ולחץ ENTER
.
חומת האש פעילה כעת. כדי לראות את הכללים שהגדרת, הפעל את הפקודה הבאה:
שאר המדריך מכסה איך להשתמש ב־UFW בעומק יותר, כולל אישור ודחיית סוגי חיבורים שונים.
שלב 6 — אישור חיבורים אחרים
בנקודה זו, עליך לאפשר את כל החיבורים האחרים שהשרת שלך צריך כדי לפעול בצורה תקינה. החיבורים שעליך לאפשר תלויים בצרכים הספציפיים שלך. כבר ידעת לכתוב כללים שמאפשרים חיבורים בהתבסס על שם שירות או פורט; עשית זאת עבור SSH על פורט 22
.
ניתן לעשות זאת גם עבור HTTP על פורט 80
, שהוא מה ששרתי האינטרנט לא מוצפנים משתמשים בו. כדי לאפשר סוג זה של תעבורה, יש להקליד:
ניתן גם לעשות זאת עבור HTTPS על פורט 443
, שהוא מה ששרתי האינטרנט מוצפנים משתמשים בו. כדי לאפשר סוג זה של תעבורה, יש להקליד:
בשני התרחישים, ציון הפורטים גם יעבוד, עם HTTP היוה 80
ועם HTTPS היוה 443
. לדוגמה:
ישנן דרכים אחרות לאפשר חיבורים, מלבד ציון פורט או שירות ידוע. זה נדון בהמשך.
טווחי יציאות מסוימים
ניתן לציין טווחי יציאות באמצעות UFW. לדוגמה, יישומים מסוימים משתמשים במספר יציאות במקום יציאה יחידה.
לדוגמה, כדי לאפשר חיבורי X11
, אשר משתמשים ביציאות 6000
–6007
, ניתן להשתמש בפקודות אלה:
כאשר מציינים טווחי יציאות עם UFW, עליך לציין את הפרוטוקול (tcp
או udp
) שבו יישמו הכללים. זה לא נאמר קודם מכיוון שאי הצהרה על הפרוטוקול מאפשרת אוטומטית את שני הפרוטוקולים, מה שכדאי ברוב המקרים.
כתובות IP מסוימות
בעת עבודה עם UFW, ניתן גם לציין כתובות IP. לדוגמה, אם ברצונך לאפשר חיבורים מכתובת IP מסוימת, כגון כתובת IP של עבודה או בית של 203.0.113.4
, עליך לציין from
ואז את כתובת ה-IP:
ניתן גם לציין יציאה ספציפית שלה מותר לכתובת ה-IP להתחבר על ידי הוספת to any port
ואז מספר היציאה. לדוגמה, אם ברצונך לאפשר ל-203.0.113.4
להתחבר ליציאה 22
(SSH), השתמש בפקודה זו:
תתי-רשתות
אם ברצונך לאפשר רשת כתובות IP, תוכל לעשות זאת באמצעות הסימון CIDR כדי לציין מסכת רשת. לדוגמה, אם ברצונך לאפשר את כל כתובות ה-IP הנכנסות בטווח מ-203.0.113.1
עד 203.0.113.254
, תוכל להשתמש בפקודה זו:
באופן דומה, תוכל גם לציין את יצירת החיבור של הכתובת המשאבת הנמצאת בתתי-רשת 203.0.113.0/24
המורשה להתחבר. שוב, בשימוש בפתחה 22
(SSH) כדוגמה:
חיבורים לממשק רשת מסוים
אם ברצונך ליצור כלל חומת אש שמתייחס רק לממשק רשת מסוים, תוכל לעשות זאת על ידי ציון אפשר פנימה ב-
, לאחריו שם הממשק הרשת.
יהיה מועיל לחפש את ממשקי הרשת שלך לפני ההמשך. לעשות זאת, השתמש בפקודה זו:
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 אליו באמצעות פקודה זו:
בעקבות פעולה זו יהיה ניתן לשרת שלך לקבל בקשות HTTP מהאינטרנט הציבורי.
או, אם ברצונך להשתמש בשרת מסד נתונים MySQL (פתחת 3306
) כדי להאזין לחיבורים בממשק הרשת הפרטי eth1
, תוכל להשתמש בפקודה הזו:
זה יאפשר לשרתים אחרים ברשת הפרטית שלך להתחבר למסד הנתונים של MySQL.
שלב 7 — מניעת חיבורים
אם לא שינית את התקנת ברירת המחדל לחיבורים נכנסים, UFW מוגדר להיכחד את כל החיבורים הנכנסים. בדרך כלל, זה פשוט את התהליך של יצירת מדיניות גישה אבטחתית על ידי דרישה ליצירת כללים שמאפשרים בבירור פורטים ספציפיים וכתובות IP דרך.
לעיתים תרצה למנוע חיבורים ספציפיים בהתבסס על כתובת IP מקור או תת־רשת, אולם, אולי מכיוון שאתה יודע שהשרת שלך מותקף משם. בנוסף, אם ברצונך לשנות את מדיניות הכניסה המוגדרת מראש שלך ל־allow
(שאינו מומלץ), תצטרך ליצור כללי deny
עבור כל שירות או כתובות IP שלא תרצה לאפשר חיבורים אליהם.
כדי לכתוב כללי deny
, תוכל להשתמש בפקודות המתוארות לעיל, ולהחליף allow
ב־deny
.
לדוגמה, כדי למנוע חיבורים HTTP, תוכל להשתמש בפקודה הזו:
או אם ברצונך למנוע את כל החיבורים מ־203.0.113.4
תוכל להשתמש בפקודה הזו:
עכשיו, תוכל ללמוד כיצד ליישם כללי מחיקה.
שלב 8 — מחיקת כללים
לדעת כיצד למחוק כללי חומת אש חשוב כמו לדעת כיצד ליצור אותם. ישנם שני אופנים לציון אילו כללים למחוק: לפי מספר הכלל או לפי הכלל עצמו. זה דומה לאופן בו נצוין הכללים כאשר נוצרו.
לפי מספר הכלל
אם אתה משתמש במספר הכלל כדי למחוק כללי חומת אש, הדבר הראשון שתרצה לעשות הוא לקבל רשימה של כללי החומה שלך. הפקודה UFW status
מציגה את האפשרות numbered
, שמציגה מספרים ליד כל כלל:
OutputStatus: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 15.15.15.0/24
[ 2] 80 ALLOW IN Anywhere
אם החלטת שברצונך למחוק את הכלל 2
, שמאפשר חיבורי HTTP בפתחה 80
, תוכל לציין זאת בפקודת UFW delete
הבאה:
זה יציג הודעת אישור, שבה תוכל לענות עם y/n
. הקלדת y
תמחוק את הכלל 2
. שים לב שאם יש לך IPv6 מופעל, תרצה למחוק את הכלל התואם ב-IPv6 גם כן.
לפי הכלל המופעל
האלטרנטיבה למספרי כללים היא לציין את הכלל המדויק שברצונך למחוק. לדוגמה, אם ברצונך להסיר את הכלל allow http
, תוכל לכתוב זאת כמו כן:
אפשר גם לציין את הכלל באמצעות allow 80
במקום שם השירות:
שיטה זו תמחק את שני הכללים ל IPv4 ו-IPv6, אם קיימים.
שלב 9 — בדיקת מצב UFW וכללים
בכל עת, ניתן לבדוק את מצב ה-UFW באמצעות הפקודה הבאה:
אם ה-UFW מושבת, שזו הגדרת ברירת המחדל, הפלט יהיה כזה:
OutputStatus: inactive
אם ה-UFW פעיל, מה שצפוי אם עקבת אחרי השלב 3, הפלט יציין שהוא פעיל וירשום כל כלל שהגדרת. לדוגמה, אם הגדרת את הגדרת הגישה המרוחקת ל־SSH (יציאה 22
) מכל מקום, הפלט עשוי לכלול משהו דומה לזה:
OutputStatus: active
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
השתמש בפקודת status
אם ברצונך לבדוק איך ה-UFW הגדיר את הגדרות הגישה לגישה.
שלב 10 — ניטור או איפוס UFW (אופציונלי)
אם החלטת שאינך רוצה להשתמש ב-UFW, תוכל להשבית אותו באמצעות הפקודה הבאה:
כללים שיצרת עם UFW לא יהיו פעילים יותר. תמיד ניתן להפעיל אותו מחדש באמצעות sudo ufw enable
אם תרצה להפעיל אותו מחדש בעתיד.
אם כבר קיימים לך כללים של UFW, אך החלטת שתרצה להתחיל מחדש, תוכל להשתמש בפקודת האיפוס:
זה יכבה את 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