SSD Nodes Learn
מדריכים Matt Connorמאת Matt Connor · עודכן 2026-07-24

מדריך UFW: הגדרת firewall ב-VPS בצורה בטוחה

למדו איך להגדיר UFW ב-VPS בצורה נכונה כדי למנוע נעילה של SSH. נלמד איך להפעיל מדיניות default-deny ולאשר פורטים ספציפיים באמצעות פקודות פשוטות.

מהו UFW ומדוע כדאי להשתמש בו

UFW מייצג את Uncomplicated Firewall, ושמו אכן מדויק. זוהי ממשק משתמש ידידותי עבור ה-firewall הקיים בליבת ה-Linux. במקום לכתוב כללים גולמיים, מקלדים פקודות קצרות כמו ufw allow 22/tcp. ב-VPS חדש, כל שירות המאזין (listening) נגיש מהאינטרנט כברירת מחדל. ה-firewall הופך את המצב: חוסמים הכל, ולאחר מכן מאשרים רק את הפורטים שבהם משתמשים בפועל. שינוי זה מסיר את רוב החשיפה שלכם באמצעות כארבע פקודות בלבד.

לפני שתפעלו בו, עליכם לדעת אילו שירותים מאזינים, כיוון שה-firewall קובע את גורלם. קריאת השירותים המאזינים באמצעות ss -tlnp היא הצעד הראשון הנכון.

הכלל היחיד שמונע ממך להינעל מחוץ למערכת

זוהי הטעות שגורמת לאנשים לחשוש משימוש ב-firewalls. אם תפעיל את UFW עם מדיניות default-deny מבלי לאפשר SSH, ברגע שה-firewall יופעל החיבור שלך ייقطع ולא תוכל להתחבר מחדש. כדי למנוע זאת, תמיד יש לאפשר SSH לפני הפעלת UFW. זהו העיקרון המרכזי, והשלבים שלהלן מבצעים זאת בסדר הבטיחותי.

אם זה בכל זאת קורה, אינך תקוע: הקונסולה של ספק השירות (web console, VNC או serial) אינה מסתמכת על SSH. לכן, תוכל להתחבר דרכה ולהריץ את ufw disable או להוסיף את הכלל החסר.

Step 1: הגדרת המדיניות الافتואלטית (default policies)

התחל בהגדרה של UFW כך שיחסום כל תעבורה נכנסת ויאשר כל תעבורה יוצאת:

sudo ufw default deny incoming
sudo ufw default allow outgoing

החלק של deny incoming הוא החשוב ביותר. המשמעות היא שכל פורט ללא כלל אישור (allow) מפורש יהיה סגור מבחוץ, גם אם שירות מאזין (listening) עליו. allow outgoing מאפשר לשרת שלך ליצור קשר עם האינטרנט כרגיל לצורך עדכונים ופעולות דומות. שתי הפקודות הללו משנות את המדיניות בלבד; שום דבר לא יוחל עד שתפעיל את UFW בשלב 3.

Step 2: Allow the ports you actually need

לפני הפעלה, פתח את SSH כדי לשמור על החיבור:

sudo ufw allow 22/tcp

UFW יכול גם לבצע rate-limit עבור SSH: sudo ufw limit 22/tcp מאפשר את הפורט אך חוסם כל כתובת שמבצעת שישה חיבורים או יותר בתוך שלושים שניות. פעולה זו מקטינה את יעילותם של סקריפטים של brute-force ללא צורך בתוכנה נוספת.

אם אתה מריץ web server, אפשר גם HTTP וגם HTTPS:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

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

ניתן גם לבנות את רצף פקודות ה-ufw המלא עבור השרת שלך כאן, ולאחר מכן להריץ אותן לפי הסדר:

ToolUFW rule generator

Step 3: Enable, and confirm it is on

sudo ufw enable

הפקודה עשויה לנתק חיבורי SSH קיימים. מכיוון שאישרת את 22/tcp בשלב 2, הסשן שלך יישאר פעיל. בדוק את התוצאה:

sudo ufw status verbose
Status: active
Default: deny (incoming), allow (outgoing)

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
22/tcp (v6)                ALLOW IN    Anywhere (v6)
80/tcp                     ALLOW IN    Anywhere

שים לב לשני דברים כאן. Status: active מעיד על כך שה-firewall פועל. כל חוק מופיע פעמיים: פעם אחת בפורמט רגיל ופעם אחת עם (v6), מה שמעיד על כך ש-UFW מנהל גם IPv6 וגם IPv4. אם שורות ה-(v6) חסרות, ה-IPv6 אינו מנוהל, מצב שעלול לגרום לבעיות כפי שמוסבר ב-the IPv6 firewall post.

ניהול כללים בהמשך

כדי לצפות בכללים עם מספרים לצורך הסרת כלל מסוים:

sudo ufw status numbered
sudo ufw delete 3

כדי לאפשר גישה לפורט מכתובת אחת בלבד, דרך מומלצת לחשיפת שירות ניהול (admin) לכתובת ה-IP שלכם בלבד:

sudo ufw allow from 10.0.0.24 to any port 5432 proto tcp

Firewall הוא שכבה אחת בלבד. הוא שולט במה יכול להגיע לפורט, אך הוא אינו מונע התקפות brute-force על פורט פתוח, כמו SSH. כדי להתמודד עם כך, יש להוסיף את Fail2ban לפני SSH כדי לחסום משתמשים חוזרים. Defence in depth פירושו שכל שכבה מגנה על מה שהשכבות האחרות אינן יכולות להגן עליו.

שימוש ב-Firewall הגיוני רק לאחר הבנת מהם פורטים וכיצד שירותים מאזינים, והגדרתו היא חלק מ10 הדקות הראשונות ב-VPS חדש.

FAQ

האם הפעלת UFW תנתק את חיבור ה-SSH שלי?

לא, אם תאפשר SSH תחילה. הרץ את sudo ufw allow 22/tcp לפני sudo ufw enable, והחיבור יישאר פעיל מכיוון שחומת האש מאשרת כעת את port 22. הסכנה היא הפעלת חומת אש במצב default-deny ללא כלל allow עבור SSH, מה שינתק אותך מהשרת. אם זה קורה, התחבר דרך ה-VNC או ה-serial console של הספק שלך והרץ את ufw disable.

אילו ports כדאי לפתוח ב-VPS?

רק את אלו שאתה משרת לציבור. SSH (22/tcp) כדי שתוכל לנהל את השרת, ו-HTTP ו-HTTPS (80/tcp, 443/tcp) אם אתה מריץ אתר אינטרנט. השאר את כל השאר במצב denied. שירותים פנימיים כמו databases צריכים להיות bound ל-127.0.0.1 וללא כל כלל בחומת האש, כך שלא ניתן יהיה להגיע אליהם מהרשת.

האם UFW תומך ב-IPv6?

בגרסאות Ubuntu מודרניות, כן: IPV6=yes מוגדר בתוך /etc/default/ufw, לכן כל כלל חל על שני ה-stacks ו-ufw status מציג את כללי ה-IPv6 עם סיומת (v6). דרכים שבהן זה עדיין עלול להיכשל מפורטות ב-מלכודת חומת האש של IPv6.

איך מסירים כלל UFW?

הרץ את sudo ufw status numbered כדי לרשום את הכללים עם מספרי אינדקס, ולאחר מכן הרץ את sudo ufw delete N כאשר N הוא מספר הכלל שברצונך להסיר. ניתן גם למחוק לפי מפרט, לדוגמה sudo ufw delete allow 80/tcp.

איך מאשרים port רק מכתובת IP אחת?

השתמש בכלל from במקום בכלל allow רגיל. כדי לאפשר רק לכתובת המשרד שלך לגשת ל-PostgreSQL, הרץ את sudo ufw allow from 10.0.0.10 to any port 5432 proto tcp. תחת מדיניות default-deny, ה-port סגור לכולם עד שכלל פותח אותו, לכן כלל from זה הוא הדרך היחידה להיכנס: כל האינטרנט נשאר חסום ורק הכתובת שתציין תעבור. אל תוסיף גם allow 5432/tcp רגיל, שכן הוא יפתח את ה-port לכולם. זו הדרך הבטוחה ביותר לחשוף database או לוח בקרה של מנהל. ודא זאת באמצעות sudo ufw status verbose, המציג את כתובת המקור לצד ה-port.