הקדמה
UFW (uncomplicated firewall) הוא כלי תצורת חומת אש שרץ על גבי iptables
, כלי שכלול כבר בברירת המחדל בהפצות Ubuntu. הוא מספק ממשק מוזרם להגדרת מקרים נפוצים של חומת אש דרך שורת הפקודה.
מדריך זה בסגנון דף עזרה מהיר מספק הפניות מהירות למקרים נפוצים של שימוש עם UFW ופקודות, כולל דוגמאות לכיצד לאפשר ולחסום שירותים לפי פורט, ממשק רשת, וכתובת IP מקורית.
איך להשתמש במדריך זה
- מדריך זה בפורמט גליון עזרה עם קטעי קוד עצמאיים לשורת הפקודה.
- נווט לכל סעיף הרלוונטי למשימה שאתה מנסה להשלים.
- כאשר אתה רואה טקסט מודגש בפקודות של המדריך, שים לב שהטקסט צריך להתייחס לכתובות IP מהרשת שלך.
זכור שניתן לבדוק את סט החוקים הנוכחי של UFW שלך עם sudo ufw status
או sudo ufw status verbose
.
הפוך את האפליקציות שלך מקדמה מקוד פתוח ב-GitHub באמצעות פלטפורמת האפליקציות של DigitalOcean. הנהיגו את DigitalOcean על עליית הסקאלה של האפליקציה שלך.
אמת את מצב UFW
כדי לבדוק האם ufw
מופעל, הפעל:
OutputStatus: inactive
הפלט יציין האם הגדרת האש הנפעלה או לא.
הפעלת UFW
אם קיבלת הודעת סטטוס: לא פעיל
בעת הרצת ufw status
, זה אומר שהאש עדיין לא מופעלת במערכת. עליך להפעיל אותה באמצעות פקודה.
בברירת מחדל, כאשר UFW מופעלת היא תחסום גישה חיצונית לכל היציאות בשרת. בפועל, זה אומר שאם אתה מחובר לשרת דרך SSH ומפעיל את ufw
לפני שאתה מאפשר גישה דרך יציאת SSH, תתנתק. וודא שאתה עוקב אחר סעיף כיצד לאפשר גישת SSH במדריך זה לפני שאתה מפעיל את האש אם זו המקרה שלך.
כדי להפעיל את UFW במערכת שלך, הרץ:
תראה פלט דומה לזה:
OutputFirewall is active and enabled on system startup
כדי לראות מה כרגע חסום או מאושר, תוכל להשתמש בפרמטר verbose
בעת הרצת ufw status
, כך:
OutputStatus: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
נטרול את UFW
אם מסיבה מסוימת צריך לנטרל את UFW, ניתן לעשות זאת באמצעות הפקודה הבאה:
שים לב שהפקודה תנטרל באופן מלא את שירות האש במערכת שלך.
חסום כתובת IP
כדי לחסום את כל החיבורים הרשת שמקורם בכתובת IP מסוימת, הרץ את הפקודה הבאה, והחלף את כתובת ה-IP שמודגשת בכתובת ה-IP שברצונך לחסום:
OutputRule added
בדוגמה זו, מ־203.0.113.100
מציין כתובת IP מקורית של "203.0.113.100".
אם תריץ את sudo ufw status
כעת, תראה את כתובת ה-IP המצויינת כחסומה:
OutputStatus: active
To Action From
-- ------ ----
Anywhere DENY 203.0.113.100
כל החיבורים, הנכנסים או היוצאים, חסומים עבור כתובת ה-IP המצויינת.
חסום תת־רשת
אם נדרש לחסום רשת מלאה, תוכל להשתמש בכתובת התת־רשת כפרמטר from
בפקודת ufw deny
. זה יחסום את כל כתובות ה־IP בתת־רשת הדוגמתית 203.0.113.0/24
:
OutputRule added
חסום חיבורים נכנסים לממשק רשת
כדי לחסום חיבורים נכנסים מכתובת IP מסוימת לממשק רשת מסוים, הפעל את הפקודה הבאה, והחלף את כתובת ה־IP המודגשת עם כתובת ה־IP שברצונך לחסום:
OutputRule added
הפרמטר in
אומר ל־ufw
להחיל את הכלל רק עבור חיבורים נכנסים, והפרמטר on eth0
מציין כי הכלל מתייחס רק לממשק הרשת eth0
. זה עשוי להיות שימושי אם יש לך מערכת עם מספר ממשקי רשת (כולל כאלה וירטואליים) ואתה צריך לחסום גישה חיצונית לכמה מתוך הממשקים הללו, אך לא לכולם.
אפשר כתובת IP
כדי לאפשר את כל החיבורים לרשת שמתקורסים מכתובת IP מסוימת, הפעל את הפקודה הבאה, והחלף את כתובת ה־IP המודגשת עם כתובת ה־IP שברצונך לאפשר גישה אליה:
OutputRule added
אם תפעיל את sudo ufw status
כעת, תראה פלט דומה לזה, המציין את המילה ALLOW
לצד כתובת ה־IP שהוספת.
OutputStatus: active
To Action From
-- ------ ----
...
Anywhere ALLOW 203.0.113.101
ניתן גם לאפשר חיבורים מרשת שלמה על ידי ספק המסכים המתאים עבור מארח, כמו 203.0.113.0/24
.
אפשר חיבורים נכנסים לממשק רשת
כדי לאפשר חיבורים נכנסים מכתובת IP מסוימת לממשק רשת מסוים, הפעל את הפקודה הבאה, והחלף את כתובת ה־IP המודגשת בכתובת ה־IP שברצונך לאפשר:
OutputRule added
הפרמטר in
מספר ל־ufw
ליישם את הכלל רק עבור חיבורים נכנסים, והפרמטר on eth0
מציין כי הכלל מתייחס רק לממשק eth0
.
אם תפעיל את sudo ufw status
כעת, תראה פלט דומה לזה:
OutputStatus: active
To Action From
-- ------ ----
...
Anywhere on eth0 ALLOW 203.0.113.102
מחק כלל UFW
כדי למחוק כלל שקבעת קודם תוך השימוש ב־UFW, השתמש ב־ufw delete
ואז בפרמטר הכלל (allow
או deny
) ובמפרט המטרה. הדוגמה הבאה תמחק כלל שקובע קודם לאפשר את כל החיבורים מכתובת ה־IP 203.0.113.101
:
OutputRule deleted
דרך נוספת לציין איזה כלל ברצונך למחוק היא על ידי מסירת זיהוי הכלל. ניתן לקבל את המידע הזה בעזרת הפקודה הבאה:
OutputStatus: 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 כבר חוסמת את כל הגישה החיצונית למעט מה שמאושר באופן חסוי, החוק הראשון מיותר, ניתן להסיר אותו. כדי למחוק חוק לפי זיהויו, הריצו:
תתבקשו לאשר את הפעולה ולוודא שהזיהוי שאתם מספקים מתייחס לחוק הנכון שאתם רוצים למחוק.
OutputDeleting:
deny from 203.0.113.100
Proceed with operation (y|n)? y
Rule deleted
אם תציגו את החוקים שלכם שוב עם sudo ufw status
, תראו שהחוק הוסר.
רשימת פרופילי יישום זמינים
בהתקנה, יישומים שתלויים בתקשורת רשת ייצביעו בדרך כלל פרופיל UFW שתוכלו להשתמש בו כדי לאפשר חיבור מכתובות חיצוניות. זה בדרך כלל דומה להרצת ufw allow from
, עם היתרון של לספק קיצור דרך המסתיר את מספרי הפתחים הספציפיים ששירות משתמש בהם ומספק שם נוח להפניה לשירותים.
כדי לרשום אילו פרופילים זמינים כרגע, הריצו את הפקודה הבאה:
אם התקנתם שירות כמו שרת אינטרנט או תוכנה אחרת התלויה ברשת ולא הופק פרופיל זמין בתוך UFW, קודם תוודאו שהשירות מופעל. עבור שרתים מרוחקים, בדרך כלל יהיה לכם OpenSSH זמין באופן מיידי:
OutputAvailable applications:
OpenSSH
הפעל פרופיל אפליקציה
כדי להפעיל פרופיל אפליקציה של UFW, הריצו ufw allow
ואחריו שם הפרופיל שאתם רוצים להפעיל, שתוכלו לקבל עם פקודת sudo ufw app list
. בדוגמה הבאה, אנו מפעילים את פרופיל ה-OpenSSH, שיאפשר כל חיבורי SSH נכנסים על פורט ה-SSH המוגדר כברירת מחדל.
OutputRule added
Rule added (v6)
זכרו לציין שמות פרופילים שמורכבים ממספר מילים, כמו Nginx HTTPS
.
השבת פרופיל אפליקציה
כדי לנטרל פרופיל אפליקציה שהגדרתם מראש ב-UFW, עליכם להסיר את הכלל התואם שלו. לדוגמה, נשקלו את הפלט הבא מהפקודה sudo ufw status
:
OutputStatus: 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
:
תזכור שניתן לרשום את כל פרופילי היישומים הזמינים עם sudo ufw app list
.
אפשר SSH
כאשר אתה עובד עם שרתים מרוחקים, יהיה חשוב לוודא שפתח ה־SSH פתוח לחיבורים כך שתהיה מסוגל להתחבר לשרת שלך מרחוק.
הפקודה הבאה תאפשר את פרופיל היישום OpenSSH של UFW ותאפשר את כל החיבורים לפורט SSH המוגדר כברירת מחדל בשרת:
OutputRule added
Rule added (v6)
אף על פי שזה פחות ידידותי למשתמש, תחביר אלטרנטיבי הוא לציין את מספר הפורט המדויק של שירות ה־SSH, שבדרך כלל מוגדר ל־22
כברירת מחדל:
OutputRule added
Rule added (v6)
אפשר SSH נכנס מכתובת IP או תת־רשת מסוימה
כדי לאפשר חיבורים נכנסים מכתובת IP או תת־רשת מסוימה, עליך לכלול הוראת from
כדי להגדיר את המקור של החיבור. זה יחייב אותך גם לציין את כתובת היעד עם פרמטר to
. כדי לנעול את החוק הזה ל־SSH בלבד, עליך להגביל את ה־proto
(פרוטוקול) ל־tcp
ולאחר מכן להשתמש בפרמטר port
ולהגדיר אותו כ־22
, הפורט המוגדר כברירת מחדל של SSH.
הפקודה הבאה תאפשר חיבורי SSH רק מכתובת ה-IP 203.0.113.103
:
OutputRule added
ניתן גם להשתמש בכתובת משתם כפרמטר from
כדי לאפשר חיבורי SSH נכנסים מרשת שלמה:
OutputRule added
לאפשר חיבורי Rsync נכנסים מכתובת IP ספציפית או כתובת משתם
התוכנית Rsync, הרצה על פורט 873
, יכולה לשמש להעברת קבצים ממחשב אחד למחשב אחר.
כדי לאפשר חיבורי rsync
נכנסים מכתובת IP ספציפית או מכתובת משתם, השתמש בפרמטר from
כדי לציין את כתובת ה-IP המקורית ובפרמטר port
כדי להגדיר את פורט היעד 873
. הפקודה הבאה תאפשר חיבורי Rsync רק מכתובת ה-IP 203.0.113.103
:
OutputRule added
כדי לאפשר לרשת המלאה 203.0.113.0/24
לבצע rsync
אל השרת שלך, הרץ:
OutputRule added
לאפשר Nginx HTTP / HTTPS
בעת התקנה, שרת האינטרנט Nginx מגדיר כמה פרופילים שונים של UFW בתוך השרת. לאחר התקנת Nginx והפעלתו כשירות, הפעילו את הפקודה הבאה כדי לזהות אילו פרופילים זמינים:
Output Nginx Full
Nginx HTTP
Nginx HTTPS
כדי לאפשר תעבורת HTTP ו-HTTPS, בחרו Nginx Full
. אחרת, בחרו באפשרות Nginx HTTP
כדי לאפשר רק HTTP או Nginx HTTPS
כדי לאפשר רק HTTPS.
הפקודה הבאה תאפשר תעבורת HTTP ו-HTTPS על השרת (פורטים 80
ו- 443
):
OutputRule added
Rule added (v6)
אפשר Apache HTTP / HTTPS
בעת התקנה, שרת האינטרנט Apache מגדיר כמה פרופילים שונים של UFW בתוך השרת. לאחר התקנת Apache והפעלתו כשירות, הפעילו את הפקודה הבאה כדי לזהות אילו פרופילים זמינים:
Output Apache
Apache Full
Apache Secure
כדי לאפשר תעבורת HTTP ו-HTTPS, בחרו Apache Full
. אחרת, בחרו באפשרות Apache
עבור HTTP או Apache Secure
עבור HTTPS.
הפקודה הבאה תאפשר תעבורת HTTP ו-HTTPS על השרת (פורטים 80
ו- 443
):
OutputRule added
Rule added (v6)
אפשר כניסה נכנסת לכל ה-HTTP (פורט 80
)
שרתי האינטרנט, כמו אפאצ'י ו-Nginx, נוהגים להאזין לבקשות HTTP בפורט 80
. אם המדיניות ברירת המחדל שלך עבור תעבורת נכנסת מוגדרת להשליך או לדחות, תצטרך ליצור כלל של UFW כדי לאפשר גישה חיצונית בפורט 80
. ניתן להשתמש במספר הפורט או בשם השירות (http
) כפרמטר לפקודה זו.
כדי לאפשר כל החיבורים הנכנסים של HTTP (פורט 80
), הפעל:
OutputRule added
Rule added (v6)
תחביר אלטרנטיבי הוא לציין את מספר הפורט של שירות ה-HTTP:
OutputRule added
Rule added (v6)
אפשר כל החיבורים הנכנסים של HTTPS (פורט 443
)
HTTPS רגיל רץ על פורט 443
. אם המדיניות ברירת המחדל שלך עבור תעבורת נכנסת מוגדרת להשליך או לדחות, תצטרך ליצור כלל של UFW כדי לאפשר גישה חיצונית בפורט 443
. ניתן להשתמש במספר הפורט או בשם השירות (https
) כפרמטר לפקודה זו.
כדי לאפשר כל החיבורים הנכנסים של HTTPS (פורט 443
), הפעל:
OutputRule added
Rule added (v6)
תחביר אלטרנטיבי הוא לציין את מספר הפורט של שירות ה-HTTPS:
OutputRule added
Rule added (v6)
אפשר כל החיבורים הנכנסים של HTTP ו-HTTPS
אם ברצונך לאפשר תעבורת HTTP ו-HTTPS, תוכל ליצור כלל יחיד שמאפשר את שני הפורטים. עליך גם להגדיר את הפרוטוקול עם הפרמטר proto
, שבמקרה זה יש להגדיר אותו ל־tcp
.
כדי לאפשר חיבורי HTTP ו-HTTPS נכנסים (פורטים 80
ו־443
), יש להריץ:
OutputRule added
Rule added (v6)
אפשר חיבור MySQL מכתובת IP או תת־רשת ספציפית
MySQL מאזין לחיבורי לקוח על פורט 3306
. אם שרת בסיס הנתונים שלך משמש על ידי לקוח בשרת מרוחק, יהיה עליך ליצור כלל UFW שמאפשר את הגישה הזו.
כדי לאפשר חיבורים נכנסים של MySQL מכתובת IP או תת־רשת ספציפית, יש להשתמש בפרמטר from
כדי לציין את כתובת ה־IP ממנה מגיע המקור ובפרמטר port
עליך להגדיר את פורט היעד 3306
.
הפקודה הבאה תאפשר לכתובת ה־IP 203.0.113.103
להתחבר לשרת בפורט ה־MySQL:
OutputRule added
כדי לאפשר לרשת של כתובת IP 203.0.113.0/24
כולה להתחבר לשרת MySQL שלך, יש להריץ:
OutputRule added
אפשר חיבור ל־PostgreSQL מכתובת IP מסוימת או מתת־רשת
PostgreSQL מאזין לחיבורי לקוח על פורט 5432
. אם שרת מסד הנתונים של PostgreSQL שלך משמש על ידי לקוח בשרת מרוחק, עליך לוודא שהתעבורה הזו מותרת.
כדי לאפשר חיבורי PostgreSQL נכנסים מכתובת IP מסוימת או מתת־רשת, יש לציין את המקור בעזרת הפרמטר from
, ולהגדיר את הפורט ל־5432
:
OutputRule added
כדי לאפשר לכל מתת ה־203.0.113.0/24
להתחבר לשרת PostgreSQL שלך, רוץ:
OutputRule added
חסום חיבורי SMTP יוצאים
שרתי דואר, כגון Sendmail ו־Postfix, בדרך כלל משתמשים בפורט 25
לתעבורת SMTP. אם השרת שלך לא צריך לשלוח דואר יוצא, ייתכן שתרצה לחסום סוג כזה של תעבורה. כדי לחסום חיבורי SMTP יוצאים, רוץ:
OutputRule added
Rule added (v6)
זה מגדיר את הגדרות הגנה של הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגדרות הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת הגנת
מסכים
UFW היא כלי עוצמתי שיכול לשפר באופן משמעותי את האבטחה של השרתים שלך כאשר הוא מוגדר כהלכה. מדריך ההפניות הזה מכסה כמה כללי UFW נפוצים שנהוג להשתמש בהם כדי להגדיר חומת אש על Ubuntu.
רוב הפקודות במדריך זה ניתן להתאים למקרים שונים ולתרחישים, על ידי שינוי פרמטרים כגון כתובת IP מקור ו/או יציאת יעד. למידע נוסף ומפורט יותר על כל פרמטר פקודה ומפעילים זמינים, ניתן להשתמש בכלי ה- man
כדי לבדוק את המדריך של UFW:
עמוד ה-UFW הרשמי בתיעוד של אובונטו הוא מקור נוסף שניתן להשתמש בו כהפנייה למקרים ודוגמאות מתקדמים יותר.
Source:
https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands