יסודות UFW: כללי חומת אש נפוצים ופקודות

הקדמה

UFW (uncomplicated firewall) הוא כלי תצורת חומת אש שרץ על גבי iptables, כלי שכלול כבר בברירת המחדל בהפצות Ubuntu. הוא מספק ממשק מוזרם להגדרת מקרים נפוצים של חומת אש דרך שורת הפקודה.

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

איך להשתמש במדריך זה

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

זכור שניתן לבדוק את סט החוקים הנוכחי של UFW שלך עם sudo ufw status או sudo ufw status verbose.

הפוך את האפליקציות שלך מקדמה מקוד פתוח ב-GitHub באמצעות פלטפורמת האפליקציות של DigitalOcean. הנהיגו את DigitalOcean על עליית הסקאלה של האפליקציה שלך.

אמת את מצב UFW

כדי לבדוק האם ufw מופעל, הפעל:

  1. sudo ufw status
Output
Status: inactive

הפלט יציין האם הגדרת האש הנפעלה או לא.

הפעלת UFW

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

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

כדי להפעיל את UFW במערכת שלך, הרץ:

  1. sudo ufw enable

תראה פלט דומה לזה:

Output
Firewall is active and enabled on system startup

כדי לראות מה כרגע חסום או מאושר, תוכל להשתמש בפרמטר verbose בעת הרצת ufw status, כך:

  1. sudo ufw status
Output
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), deny (routed) New profiles: skip

נטרול את UFW

אם מסיבה מסוימת צריך לנטרל את UFW, ניתן לעשות זאת באמצעות הפקודה הבאה:

  1. sudo ufw disable

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

חסום כתובת IP

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

  1. sudo ufw deny from 203.0.113.100
Output
Rule added

בדוגמה זו, מ־203.0.113.100 מציין כתובת IP מקורית של "203.0.113.100".

אם תריץ את sudo ufw status כעת, תראה את כתובת ה-IP המצויינת כחסומה:

Output
Status: active To Action From -- ------ ---- Anywhere DENY 203.0.113.100

כל החיבורים, הנכנסים או היוצאים, חסומים עבור כתובת ה-IP המצויינת.

חסום תת־רשת

אם נדרש לחסום רשת מלאה, תוכל להשתמש בכתובת התת־רשת כפרמטר from בפקודת ufw deny. זה יחסום את כל כתובות ה־IP בתת־רשת הדוגמתית 203.0.113.0/24:

  1. sudo ufw deny from 203.0.113.0/24
Output
Rule added

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

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

  1. sudo ufw deny in on eth0 from 203.0.113.100
Output
Rule added

הפרמטר in אומר ל־ufw להחיל את הכלל רק עבור חיבורים נכנסים, והפרמטר on eth0 מציין כי הכלל מתייחס רק לממשק הרשת eth0. זה עשוי להיות שימושי אם יש לך מערכת עם מספר ממשקי רשת (כולל כאלה וירטואליים) ואתה צריך לחסום גישה חיצונית לכמה מתוך הממשקים הללו, אך לא לכולם.

אפשר כתובת IP

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

  1. sudo ufw allow from 203.0.113.101
Output
Rule added

אם תפעיל את sudo ufw status כעת, תראה פלט דומה לזה, המציין את המילה ALLOW לצד כתובת ה־IP שהוספת.

Output
Status: active To Action From -- ------ ---- ... Anywhere ALLOW 203.0.113.101

ניתן גם לאפשר חיבורים מרשת שלמה על ידי ספק המסכים המתאים עבור מארח, כמו 203.0.113.0/24.

אפשר חיבורים נכנסים לממשק רשת

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

  1. sudo ufw allow in on eth0 from 203.0.113.102
Output
Rule added

הפרמטר in מספר ל־ufw ליישם את הכלל רק עבור חיבורים נכנסים, והפרמטר on eth0 מציין כי הכלל מתייחס רק לממשק eth0.

אם תפעיל את sudo ufw status כעת, תראה פלט דומה לזה:

Output
Status: active To Action From -- ------ ---- ... Anywhere on eth0 ALLOW 203.0.113.102

מחק כלל UFW

כדי למחוק כלל שקבעת קודם תוך השימוש ב־UFW, השתמש ב־ufw delete ואז בפרמטר הכלל (allow או deny) ובמפרט המטרה. הדוגמה הבאה תמחק כלל שקובע קודם לאפשר את כל החיבורים מכתובת ה־IP 203.0.113.101:

  1. sudo ufw delete allow from 203.0.113.101
Output
Rule deleted

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

  1. sudo ufw status numbered
Output
Status: active To Action From -- ------ ---- [ 1] Anywhere DENY IN 203.0.113.100 [ 2] Anywhere on eth0 ALLOW IN 203.0.113.102

מתוך הפלט, ניתן לראות כי ישנם שני כללים פעילים. הכלל הראשון, עם הערכים המודגשים, מסרב לכל החיבורים הנכנסים מכתובת ה־IP 203.0.113.100. הכלל השני מאפשר חיבורים בממשק eth0 הנכנסים מכתובת ה־IP 203.0.113.102.

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

  1. sudo ufw delete 1

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

Output
Deleting: deny from 203.0.113.100 Proceed with operation (y|n)? y Rule deleted

אם תציגו את החוקים שלכם שוב עם sudo ufw status, תראו שהחוק הוסר.

רשימת פרופילי יישום זמינים

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

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

  1. sudo ufw app list

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

Output
Available applications: OpenSSH

הפעל פרופיל אפליקציה

כדי להפעיל פרופיל אפליקציה של UFW, הריצו ufw allow ואחריו שם הפרופיל שאתם רוצים להפעיל, שתוכלו לקבל עם פקודת sudo ufw app list. בדוגמה הבאה, אנו מפעילים את פרופיל ה-OpenSSH, שיאפשר כל חיבורי SSH נכנסים על פורט ה-SSH המוגדר כברירת מחדל.

  1. sudo ufw allow “OpenSSH”
Output
Rule added Rule added (v6)

זכרו לציין שמות פרופילים שמורכבים ממספר מילים, כמו Nginx HTTPS.

השבת פרופיל אפליקציה

כדי לנטרל פרופיל אפליקציה שהגדרתם מראש ב-UFW, עליכם להסיר את הכלל התואם שלו. לדוגמה, נשקלו את הפלט הבא מהפקודה sudo ufw status:

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)

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

  1. sudo ufw allow "Nginx HTTPS"
  2. sudo ufw delete allow "Nginx Full"

תזכור שניתן לרשום את כל פרופילי היישומים הזמינים עם sudo ufw app list.

אפשר SSH

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

הפקודה הבאה תאפשר את פרופיל היישום OpenSSH של UFW ותאפשר את כל החיבורים לפורט SSH המוגדר כברירת מחדל בשרת:

  1. sudo ufw allow OpenSSH
Output
Rule added Rule added (v6)

אף על פי שזה פחות ידידותי למשתמש, תחביר אלטרנטיבי הוא לציין את מספר הפורט המדויק של שירות ה־SSH, שבדרך כלל מוגדר ל־22 כברירת מחדל:

  1. sudo ufw allow 22
Output
Rule added Rule added (v6)

אפשר SSH נכנס מכתובת IP או תת־רשת מסוימה

כדי לאפשר חיבורים נכנסים מכתובת IP או תת־רשת מסוימה, עליך לכלול הוראת from כדי להגדיר את המקור של החיבור. זה יחייב אותך גם לציין את כתובת היעד עם פרמטר to. כדי לנעול את החוק הזה ל־SSH בלבד, עליך להגביל את ה־proto (פרוטוקול) ל־tcp ולאחר מכן להשתמש בפרמטר port ולהגדיר אותו כ־22, הפורט המוגדר כברירת מחדל של SSH.

הפקודה הבאה תאפשר חיבורי SSH רק מכתובת ה-IP 203.0.113.103:

  1. sudo ufw allow from 203.0.113.103 proto tcp to any port 22
Output
Rule added

ניתן גם להשתמש בכתובת משתם כפרמטר from כדי לאפשר חיבורי SSH נכנסים מרשת שלמה:

  1. sudo ufw allow from 203.0.113.0/24 proto tcp to any port 22
Output
Rule added

לאפשר חיבורי Rsync נכנסים מכתובת IP ספציפית או כתובת משתם

התוכנית Rsync, הרצה על פורט 873, יכולה לשמש להעברת קבצים ממחשב אחד למחשב אחר.

כדי לאפשר חיבורי rsync נכנסים מכתובת IP ספציפית או מכתובת משתם, השתמש בפרמטר from כדי לציין את כתובת ה-IP המקורית ובפרמטר port כדי להגדיר את פורט היעד 873. הפקודה הבאה תאפשר חיבורי Rsync רק מכתובת ה-IP 203.0.113.103:

  1. sudo ufw allow from 203.0.113.103 to any port 873
Output
Rule added

כדי לאפשר לרשת המלאה 203.0.113.0/24 לבצע rsync אל השרת שלך, הרץ:

  1. sudo ufw allow from 203.0.113.0/24 to any port 873
Output
Rule added

לאפשר Nginx HTTP / HTTPS

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

  1. sudo ufw app list | grep Nginx
Output
Nginx Full Nginx HTTP Nginx HTTPS

כדי לאפשר תעבורת HTTP ו-HTTPS, בחרו Nginx Full. אחרת, בחרו באפשרות Nginx HTTP כדי לאפשר רק HTTP או Nginx HTTPS כדי לאפשר רק HTTPS.

הפקודה הבאה תאפשר תעבורת HTTP ו-HTTPS על השרת (פורטים 80 ו- 443):

  1. sudo ufw allow "Nginx Full"
Output
Rule added Rule added (v6)

אפשר Apache HTTP / HTTPS

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

  1. sudo ufw app list | grep Apache
Output
Apache Apache Full Apache Secure

כדי לאפשר תעבורת HTTP ו-HTTPS, בחרו Apache Full. אחרת, בחרו באפשרות Apache עבור HTTP או Apache Secure עבור HTTPS.

הפקודה הבאה תאפשר תעבורת HTTP ו-HTTPS על השרת (פורטים 80 ו- 443):

  1. sudo ufw allow "Nginx Full"
Output
Rule added Rule added (v6)

אפשר כניסה נכנסת לכל ה-HTTP (פורט 80)

שרתי האינטרנט, כמו אפאצ'י ו-Nginx, נוהגים להאזין לבקשות HTTP בפורט 80. אם המדיניות ברירת המחדל שלך עבור תעבורת נכנסת מוגדרת להשליך או לדחות, תצטרך ליצור כלל של UFW כדי לאפשר גישה חיצונית בפורט 80. ניתן להשתמש במספר הפורט או בשם השירות (http) כפרמטר לפקודה זו.

כדי לאפשר כל החיבורים הנכנסים של HTTP (פורט 80), הפעל:

  1. sudo ufw allow http
Output
Rule added Rule added (v6)

תחביר אלטרנטיבי הוא לציין את מספר הפורט של שירות ה-HTTP:

  1. sudo ufw allow 80
Output
Rule added Rule added (v6)

אפשר כל החיבורים הנכנסים של HTTPS (פורט 443)

HTTPS רגיל רץ על פורט 443. אם המדיניות ברירת המחדל שלך עבור תעבורת נכנסת מוגדרת להשליך או לדחות, תצטרך ליצור כלל של UFW כדי לאפשר גישה חיצונית בפורט 443. ניתן להשתמש במספר הפורט או בשם השירות (https) כפרמטר לפקודה זו.

כדי לאפשר כל החיבורים הנכנסים של HTTPS (פורט 443), הפעל:

  1. sudo ufw allow https
Output
Rule added Rule added (v6)

תחביר אלטרנטיבי הוא לציין את מספר הפורט של שירות ה-HTTPS:

  1. sudo ufw allow 443
Output
Rule added Rule added (v6)

אפשר כל החיבורים הנכנסים של HTTP ו-HTTPS

אם ברצונך לאפשר תעבורת HTTP ו-HTTPS, תוכל ליצור כלל יחיד שמאפשר את שני הפורטים. עליך גם להגדיר את הפרוטוקול עם הפרמטר proto, שבמקרה זה יש להגדיר אותו ל־tcp.

כדי לאפשר חיבורי HTTP ו-HTTPS נכנסים (פורטים 80 ו־443), יש להריץ:

  1. sudo ufw allow proto tcp from any to any port 80,443
Output
Rule added Rule added (v6)

אפשר חיבור MySQL מכתובת IP או תת־רשת ספציפית

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

כדי לאפשר חיבורים נכנסים של MySQL מכתובת IP או תת־רשת ספציפית, יש להשתמש בפרמטר from כדי לציין את כתובת ה־IP ממנה מגיע המקור ובפרמטר port עליך להגדיר את פורט היעד 3306.

הפקודה הבאה תאפשר לכתובת ה־IP 203.0.113.103 להתחבר לשרת בפורט ה־MySQL:

  1. sudo ufw allow from 203.0.113.103 to any port 3306
Output
Rule added

כדי לאפשר לרשת של כתובת IP 203.0.113.0/24 כולה להתחבר לשרת MySQL שלך, יש להריץ:

  1. sudo ufw allow from 203.0.113.0/24 to any port 3306
Output
Rule added

אפשר חיבור ל־PostgreSQL מכתובת IP מסוימת או מתת־רשת

PostgreSQL מאזין לחיבורי לקוח על פורט 5432. אם שרת מסד הנתונים של PostgreSQL שלך משמש על ידי לקוח בשרת מרוחק, עליך לוודא שהתעבורה הזו מותרת.

כדי לאפשר חיבורי PostgreSQL נכנסים מכתובת IP מסוימת או מתת־רשת, יש לציין את המקור בעזרת הפרמטר from, ולהגדיר את הפורט ל־5432:

  1. sudo ufw allow from 203.0.113.103 to any port 5432
Output
Rule added

כדי לאפשר לכל מתת ה־203.0.113.0/24 להתחבר לשרת PostgreSQL שלך, רוץ:

  1. sudo ufw allow from 203.0.113.0/24 to any port 5432
Output
Rule added

חסום חיבורי SMTP יוצאים

שרתי דואר, כגון Sendmail ו־Postfix, בדרך כלל משתמשים בפורט 25 לתעבורת SMTP. אם השרת שלך לא צריך לשלוח דואר יוצא, ייתכן שתרצה לחסום סוג כזה של תעבורה. כדי לחסום חיבורי SMTP יוצאים, רוץ:

  1. sudo ufw deny out 25
Output
Rule added Rule added (v6)

זה מגדיר את הגדרות הגנה של הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת

מסכים

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

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

  1. man ufw

עמוד ה-UFW הרשמי בתיעוד של אובונטו הוא מקור נוסף שניתן להשתמש בו כהפנייה למקרים ודוגמאות מתקדמים יותר.

Source:
https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands