SSD Nodes Learn Hosting plans →
מדריכים Matt Connorמאת Matt Connor · עודכן 2026-08-27

איך להגדיר חומת אש UFW ב־VPS בלי לנעול את SSH

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

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

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

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

הכלל האחד שמונע מכם לנעול את עצמכם מחוץ לשרת

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

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

שלב 1: הגדרת מדיניות ברירת המחדל

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

sudo ufw default deny incoming
sudo ufw default allow outgoing

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

שלב 2: אפשרו את הפורטים הדרושים בפועל

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

sudo ufw allow 22/tcp

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

אם אתם מפעילים שרת אינטרנט, אפשרו גם HTTP ו־HTTPS:

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

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

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

ToolUFW rule generator

שלב 3: הפעלה ואישור שהשירות פעיל

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 שלכם אינו מנוהל. זו בעיה נפרדת, הנדונה ב־פוסט על firewall ל־IPv6.

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

כדי להציג את הכללים עם מספרים, כך שניתן יהיה להסיר כלל מסוים:

sudo ufw status numbered
sudo ufw delete 3

כדי לאפשר גישה לפורט מכתובת אחת בלבד, דבר שמתאים לחשיפת שירות ניהול רק לכתובת ה־IP שלכם:

sudo ufw allow from 10.0.0.24 to any port 5432 proto tcp

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

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

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

FAQ

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

לא, אם תאפשרו SSH תחילה. הפעילו sudo ufw allow 22/tcp לפני sudo ufw enable, והחיבור יישאר פעיל משום שה־firewall מאפשר כעת את פורט 22. הסכנה היא להפעיל firewall שמדיניות ברירת המחדל שלו היא deny, בלי כלל שמאפשר SSH; פעולה זו תנתק אתכם. אם זה קורה, התחברו דרך VNC או דרך הקונסולה הטורית של ספק האירוח והפעילו ufw disable.

אילו פורטים יש לפתוח ב־VPS?

רק את הפורטים שבהם אתם מספקים שירות לציבור. פתחו SSH (22/tcp) כדי לנהל את השרת, ואת HTTP ו־HTTPS (80/tcp, 443/tcp) אם אתם מפעילים אתר. השאירו את כל השאר חסומים. שירותים פנימיים, כגון מסדי נתונים, צריכים להאזין ב־127.0.0.1, ואין להוסיף עבורם כלל firewall כלל. כך הם לא יהיו נגישים מהרשת.

האם UFW מטפל ב־IPv6?

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

כיצד מסירים כלל של UFW?

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

כיצד מאפשרים גישה לפורט מכתובת IP אחת בלבד?

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