הקדמה
הקמת חומת אש פעילה היא חיונית לאבטחת השרת בענן שלך. לפני כן, הקמת חומת אש נעשתה דרך יישומי מורכבים או מערכות קסומות. רבים מתוך אלה היישומים (לדוגמה, iptables
) מכילים המון פונקציות, אך דורשים מהמשתמש מאמץ נוסף כדי ללמוד ולהבין אותם.
אפשרות נוספת היא UFW, או חומת אש לא מורכבת. UFW היא ממשק קדמי ל־iptables
שמטרתו לספק ממשק ידידותי יותר מאשר כלי ניהול חומת האש אחרים. UFW נתמך באופן טוב בקהילת הלינוקס, ובדרך כלל מותקן כבר כחלק מהתפצלויות רבות.
במדריך זה, תקינו חומת אש באמצעות UFW כדי לאבטח את שרת הענן של Ubuntu או Debian. תלמד גם איך להגדיר כללי ברירת מחדל של UFW כדי לאפשר או לדחות חיבורים עבור פורטים וכתובות IP, למחוק כללים שיצרת, להשבית ולהפעיל מחדש את UFW, ולאפס הכל בחזרה להגדרות ברירת המחדל אם תעדיפו.
דרישות מקדימות
כדי לעקוב אחרי המדריך הזה, תצטרך שרת שרץ או את אובונטו או דביאן. השרת שלך צריך להכיל משתמש לא-root עם הרשאות sudo. כדי להגדיר זאת עבור אובונטו, עקוב אחרי המדריך שלנו על הגדרת שרת ראשונית עם אובונטו 20.04. כדי להגדיר זאת עבור דביאן, עקוב אחרי המדריך שלנו על הגדרת שרת ראשונית עם דביאן 11. שני מדריכי הגדרת שרת הראשונית האלו יבטיחו שיש לך UFW מותקן במכונה שלך ושיש לך סביבה מאובטחת שבה תוכל להתאמן ביצירת כללי חומת אש.
שימוש ב־IPv6 עם UFW
אם השרת הפרטי הווירטואלי (VPS) שלך מוגדר עבור IPv6, וודא ש־UFW מוגדר לתמוך ב־IPv6 כך שהוא יגדיר גם את כללי החומת האש שלך עבור IPv4 ו־IPv6. כדי לעשות זאת, פתח את קובץ ההגדרות של UFW בעורך הטקסט המועדף עליך. כאן נשתמש ב־nano
:
וודא ש־IPV6
מוגדר כ־yes
:
/etc/default/ufw# /etc/default/ufw
#
# הגדרה ל־yes כדי ליישם כללי תמיכה ב־IPv6 (no משמע רק IPv6 על loopback
# מאושר). תצטרך להפוך ל־'disable' ואז ל־'enable' את הגישה לחומת האש כדי
# שהשינויים יתקבלו.
IPV6=yes
…
לאחר שביצעת את השינויים שלך, שמור וצא מהקובץ. אם אתה משתמש ב־nano
, לחץ CTRL + X
, Y
, ואז ENTER
.
כעת אתה יכול לאתחל את הגדרות האש שלך באמצעות השבתתה תחילה:
OutputFirewall stopped and disabled on system startup
לאחר מכן הפעל אותה שוב:
OutputFirewall is active and enabled on system startup
הגדרת האש שלך של UFW מוגדרת כעת להגדיר את האש לשני IPv4 ו־IPv6 במקרים הרלוונטיים. בשלב הבא, תסדר את הכללים המוגדרים כברירת מחדל לחיבורים לאש שלך.
הגדרת ערכי ברירת מחדל של UFW
אתה יכול לשפר את יעילות האש שלך על ידי הגדרת כללי ברירת מחדל לאישור והשחתה של חיבורים. הברירת מחדל של UFW היא לחסום את כל החיבורים הנכנסים ולאפשר את כל החיבורים היוצאים. זה אומר שכל אדם שמנסה להגיע לשרת שלך לא יוכל להתחבר, בעוד שכל יישום בתוך השרת יכול להתחבר חיצונית. כדי לעדכן את הכללים המוגדרים כברירת מחדל של UFW, תתמקד תחילה בכללי החיבורים הנכנסים:
OutputDefault incoming policy changed to 'deny'
(be sure to update your rules accordingly)
בשלב הבא, תתמקד בכללי החיבורים היוצאים:
OutputDefault outgoing policy changed to 'allow'
(be sure to update your rules accordingly)
הערה: אם ברצונך להיות יותר מגביל, אתה יכול לחסום את כל בקשות היציאה. אפשרות זו מבוססת על העדפה אישית. לדוגמה, אם יש לך שרת ענן שמופעל בפני קהל, זה עשוי לעזור למנוע כל סוג של חיבורי של קונכרן מרחוק. אף על פי כן, זה יכול להפוך את האש שלך לפסיבית יותר לניהול מאשר עדכון כללי ברירת מחדל לחיבורים יוצאים. תוכל להגדיר זאת כברירת מחדל עם הבא:
אישור חיבורים לגישה לגישה לגישה
להתיר חיבורים מחייב שינוי בכללי הגישה לגישה, אשר אפשר לעשות באמצעות מתן פקודות בטרמינל. אם הפעלת את הגישה לגישה כעת, לדוג', היא תסרב לכל החיבורים הנכנסים. אם אתה מחובר ב־SSH לשרת שלך, זה יהיה בעיה מכיוון שתסתכל לתוך השרת שלך. מנע מכך לקרות על ידי אפשרות חיבורי SSH לשרת שלך:
אם השינויים שלך הצליחו, תקבל את הפלט הבא:
OutputRule added
Rule added (v6)
UFW מגיע עם מספר ברירות מחדל כמו פקודת ssh
ששימשה בדוגמה הקודמת. בנוסף, אתה יכול להרשות חיבורים נכנסים לפורט 22/tcp
, שמשתמש ב־פרוטוקול בקרת העברה (TCP) להשגת אותו הדבר:
אם ניסית זאת לאחר שכבר הפעלת allow ssh
, תקבל את ההודעה הבאה מאחר והכלל כבר קיים:
OutputSkipping adding existing rule
Skipping adding existing rule (v6)
אם השרת שלך של SSH פועל בפורט 2222
, אתה יכול להרשות חיבורים באותו התחביר, אך להחליף אותו בפורט 2222
. יש לשים לב שאם אתה משתמש במספר הפורט לבדו, זה משפיע גם על tcp
ו־udp
:
OutputRule added
Rule added (v6)
אבטחת שרתי האינטרנט
כדי לאבטח שרת אינטרנט עם גישת File Transfer Protocol (FTP), תצטרך לאפשר חיבורים עבור פתח 80/tcp.
לאפשור חיבורים עבור פתח 80 מועיל לשרתי האינטרנט כמו Apache ו-Nginx שמקבלים בקשות חיבור HTTP. כדי לעשות זאת, תאפשר חיבורים לפתח 80/tcp:
UFW בדרך כלל מספק פרופילים עם החוקים הנדרשים עבור פעולת השרת האינטרנט. אם לא, פרופילי השרת האינטרנט עשויים להיות מאוחסנים כ "WWW" ופתוחים כ ftp או tcp, כמו בדוגמאות הבאות:
ניתן גם להשתמש ב- ftp או בפתח 21 כדי לאפשר חיבורי FTP:
עבור חיבורי FTP, עליך גם לאפשר חיבורים עבור פתח 20:
התאמותיך יתלו באילו פתחים ושירותים אתה צריך לפתוח, ונדרשות בדיקות. זכור להשאיר את החיבור ל-SSH שלך מאופשר גם כן.
הגדרת טווחי פתחים
אתה יכול גם לציין טווחי יציאות (Ports) לאישור או סרבן עם UFW. כדי לעשות זאת, עליך לציין תחילה את היציאה בקצה הנמוך של הטווח, לעקוב אחר כך עם נקודתיים (:
), ולאחר מכן עם קצה הנמוך של הטווח. לבסוף, עליך לציין איזה פרוטוקול (או tcp
או udp
) אתה רוצה שהחוקים יחולו עליו.
לדוגמה, הפקודה הבאה תאפשר גישה TCP לכל יציאה מ-1000
עד 2000
, כוללים:
באופן דומה, הפקודה הבאה תסרב חיבורי UDP לכל יציאה מ-1234
עד 4321
:
ציון כתובות IP
אתה יכול לאפשר חיבורים מכתובת IP ספציפית כמו בדוגמה הבאה. נסה להחליף את כתובת ה-IP במידע שלך:
כפי שדוגמאות אלה מדגימות, יש לך הרבה גמישות כאשר מדובר בהתאמת חוקי הגנה על ידי אישור יציאות מסוימות וחיבורים לכתובות IP. עיין במדריך שלנו כדי ללמוד עוד על אישור חיבורים נכנסים מ-כתובת IP או רשת מסוימת.
סרב חיבורים
אם תרצה לפתוח את כל פתחי השרת שלך — מה שאינו מומלץ — תוכל להרשות כל חיבור ולאחר מכן לדחות כל הפורטים שברצונך לא להעניק להם גישה. בדוגמה הבאה נמחק גישה לפורט 80
:
מחיקת כללים
אם ברצונך למחוק כמה מהכללים שהוטמעו על ידך, השתמש ב- delete
וציין את הכלל שברצונך להסיר:
OutputRule deleted
Rule deleted (v6)
אם הכללים הם ארוכים ומורכבים, יש גישה דו-שלבית חלופית. ראשית, צור רשימה ממוספרת של הכללים הנוכחיים:
אז, עם הרשימה הממוספרת הזו, בדוק אילו כללים מותרים כרגע ומחק את הכלל על ידי התייחסות אל מספרו:
OutputStatus: active
To Action From
-- ------ ----
[ 1] OpenSSH ALLOW IN Anywhere
[ 2] 22/tcp ALLOW IN Anywhere
[ 3] 2222/tcp ALLOW IN Anywhere
[ 4] 80 ALLOW IN Anywhere
[ 5] 20/tcp ALLOW IN Anywhere
…
לדוגמה, אם הפורט 80
הוא מספר 4 ברשימה, תשתמש בתחביר הבא. יתכן גם שתתבקש בשאלה האם ברצונך להמשיך עם הפעולה. תוכל להחליט כן y
או לא n
:
OutputDeleting:
allow 80
Proceed with operation (y|n)? y
Rule deleted (v6)
הפעלת UFW
כאשר תגדיר את כל הכללים שברצונך ליישם על הגדרת האש שלך, תוכל להפעיל את UFW כך שיתחיל ליישם אותם. אם אתה מתחבר דרך SSH, וודא שהפורט שלך ל-SSH, בדרך כלל פורט 22
, מוגדר כך שהחיבורים יכולים להתקבל. אחרת, תוכל לנעול את עצמך מחוץ לשרת:
OutputFirewall is active and enabled on system startup
לאישור שהשינויים שלך הועברו, בדוק את המצב כדי לבדוק את רשימת הכללים:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
22/tcp ALLOW Anywhere
2222/tcp ALLOW Anywhere
20/tcp ALLOW Anywhere
80/tcp DENY Anywhere
…
ניתן גם להשתמש ב־verbose
עבור פלט מקיף יותר:
כדי להשבית את UFW, הריץ את הפקודה הבאה:
OutputFirewall stopped and disabled on system startup
איפוס הגדרות ברירת המחדל
אם מסיבה כלשהי נדרש לאפס את הכללים של שרת הענן שלך להגדרות המחדל שלהם, ניתן לעשות זאת עם הפקודה ufw reset
. יש לשים לב שתקבל הודעה לכתוב y
או n
לפני איפוס הכל מאחר שמעשיית כך עשויה להפריע לחיבורי SSH קיימים:
OutputResetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20220217_190530'
Backing up 'before.rules' to '/etc/ufw/before.rules.20220217_190530'
Backing up 'after.rules' to '/etc/ufw/after.rules.20220217_190530'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20220217_190530'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20220217_190530'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20220217_190530'
איפוס להגדרות ברירת המחדל יכבה את UFW וימחוק כל כללים שהגדרת בעבר. הגדרות ברירת המחדל, בכל זאת, לא ישונו להגדרות המקוריות שלהן אם ערכת אותן בכלל. כעת ניתן להתחיל מחדש עם UFW ולהתאים אישית את הכללים והחיבורים שלך לפי העדפתך.
מסקנה
במדריך זה, למדת כיצד להגדיר ולהגדיר את השרת בענן שלך כך שיהיה אפשרי או מוגבל גישה לקבוצה מסוימת של יציאות או כתובות IP. בנוסף, תירגלת למחוק כללים שאינם רצויים עוד ולוודא כי השינויים הללו נלקחו בחשבון על ידי השבתת ואז הפעלת חומת האש שלך באמצעות UFW. לבסוף, למדת כיצד לאפס את חומת האש שלך ב-UFW חזרה להגדרות המקוריות. כדי לקרוא עוד על האפשרויות של UFW, בדוק את מדריך שלנו על יסודות UFW: כללים ופקודות נפוצות של חומת האש.