איך להגדיר חומת אש עם UFW על שרת ענן של Ubuntu ו-Debian

הקדמה

הקמת חומת אש פעילה היא חיונית לאבטחת השרת בענן שלך. לפני כן, הקמת חומת אש נעשתה דרך יישומי מורכבים או מערכות קסומות. רבים מתוך אלה היישומים (לדוגמה, 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:

  1. sudo nano /etc/default/ufw

וודא ש־IPV6 מוגדר כ־yes:

/etc/default/ufw
# /etc/default/ufw # # הגדרה ל־yes כדי ליישם כללי תמיכה ב־IPv6 (no משמע רק IPv6 על loopback # מאושר). תצטרך להפוך ל־'disable' ואז ל־'enable' את הגישה לחומת האש כדי # שהשינויים יתקבלו. IPV6=yes

לאחר שביצעת את השינויים שלך, שמור וצא מהקובץ. אם אתה משתמש ב־nano, לחץ CTRL + X, Y, ואז ENTER.

כעת אתה יכול לאתחל את הגדרות האש שלך באמצעות השבתתה תחילה:

  1. sudo ufw disable
Output
Firewall stopped and disabled on system startup

לאחר מכן הפעל אותה שוב:

  1. sudo ufw enable
Output
Firewall is active and enabled on system startup

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

הגדרת ערכי ברירת מחדל של UFW

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

  1. sudo ufw default deny incoming
Output
Default incoming policy changed to 'deny' (be sure to update your rules accordingly)

בשלב הבא, תתמקד בכללי החיבורים היוצאים:

  1. sudo ufw default allow outgoing
Output
Default outgoing policy changed to 'allow' (be sure to update your rules accordingly)

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

  1. sudo ufw default deny outgoing

אישור חיבורים לגישה לגישה לגישה

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

  1. sudo ufw allow ssh

אם השינויים שלך הצליחו, תקבל את הפלט הבא:

Output
Rule added Rule added (v6)

UFW מגיע עם מספר ברירות מחדל כמו פקודת ssh ששימשה בדוגמה הקודמת. בנוסף, אתה יכול להרשות חיבורים נכנסים לפורט 22/tcp, שמשתמש ב־פרוטוקול בקרת העברה (TCP) להשגת אותו הדבר:

  1. sudo ufw allow 22/tcp

אם ניסית זאת לאחר שכבר הפעלת allow ssh, תקבל את ההודעה הבאה מאחר והכלל כבר קיים:

Output
Skipping adding existing rule Skipping adding existing rule (v6)

אם השרת שלך של SSH פועל בפורט 2222, אתה יכול להרשות חיבורים באותו התחביר, אך להחליף אותו בפורט 2222. יש לשים לב שאם אתה משתמש במספר הפורט לבדו, זה משפיע גם על tcp ו־udp:

  1. sudo ufw allow 2222/tcp
Output
Rule added Rule added (v6)

אבטחת שרתי האינטרנט

כדי לאבטח שרת אינטרנט עם גישת File Transfer Protocol (FTP), תצטרך לאפשר חיבורים עבור פתח 80/tcp.

לאפשור חיבורים עבור פתח 80 מועיל לשרתי האינטרנט כמו Apache ו-Nginx שמקבלים בקשות חיבור HTTP. כדי לעשות זאת, תאפשר חיבורים לפתח 80/tcp:

  1. sudo ufw allow 80/tcp

UFW בדרך כלל מספק פרופילים עם החוקים הנדרשים עבור פעולת השרת האינטרנט. אם לא, פרופילי השרת האינטרנט עשויים להיות מאוחסנים כ "WWW" ופתוחים כ ftp או tcp, כמו בדוגמאות הבאות:

  1. sudo ufw allow www

ניתן גם להשתמש ב- ftp או בפתח 21 כדי לאפשר חיבורי FTP:

  1. sudo ufw allow ftp
  1. sudo ufw allow 21/tcp

עבור חיבורי FTP, עליך גם לאפשר חיבורים עבור פתח 20:

  1. sudo ufw allow 20/tcp

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

הגדרת טווחי פתחים

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

לדוגמה, הפקודה הבאה תאפשר גישה TCP לכל יציאה מ-1000 עד 2000, כוללים:

  1. sudo ufw allow 1000:2000/tcp

באופן דומה, הפקודה הבאה תסרב חיבורי UDP לכל יציאה מ-1234 עד 4321:

  1. sudo ufw deny 1234:4321/udp

ציון כתובות IP

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

  1. sudo ufw allow from your_server_ip

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

סרב חיבורים

אם תרצה לפתוח את כל פתחי השרת שלך — מה שאינו מומלץ — תוכל להרשות כל חיבור ולאחר מכן לדחות כל הפורטים שברצונך לא להעניק להם גישה. בדוגמה הבאה נמחק גישה לפורט 80:

  1. sudo ufw deny 80/tcp

מחיקת כללים

אם ברצונך למחוק כמה מהכללים שהוטמעו על ידך, השתמש ב- delete וציין את הכלל שברצונך להסיר:

  1. sudo ufw delete allow 80/tcp
Output
Rule deleted Rule deleted (v6)

אם הכללים הם ארוכים ומורכבים, יש גישה דו-שלבית חלופית. ראשית, צור רשימה ממוספרת של הכללים הנוכחיים:

  1. sudo ufw status numbered

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

  1. sudo ufw delete number
Output
Status: 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:

  1. sudo ufw delete 4
Output
Deleting: allow 80 Proceed with operation (y|n)? y Rule deleted (v6)

הפעלת UFW

כאשר תגדיר את כל הכללים שברצונך ליישם על הגדרת האש שלך, תוכל להפעיל את UFW כך שיתחיל ליישם אותם. אם אתה מתחבר דרך SSH, וודא שהפורט שלך ל-SSH, בדרך כלל פורט 22, מוגדר כך שהחיבורים יכולים להתקבל. אחרת, תוכל לנעול את עצמך מחוץ לשרת:

  1. sudo ufw enable
Output
Firewall is active and enabled on system startup

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

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 22/tcp ALLOW Anywhere 2222/tcp ALLOW Anywhere 20/tcp ALLOW Anywhere 80/tcp DENY Anywhere …

ניתן גם להשתמש ב־verbose עבור פלט מקיף יותר:

  1. sudo ufw status verbose

כדי להשבית את UFW, הריץ את הפקודה הבאה:

  1. sudo ufw disable
Output
Firewall stopped and disabled on system startup

איפוס הגדרות ברירת המחדל

אם מסיבה כלשהי נדרש לאפס את הכללים של שרת הענן שלך להגדרות המחדל שלהם, ניתן לעשות זאת עם הפקודה ufw reset. יש לשים לב שתקבל הודעה לכתוב y או n לפני איפוס הכל מאחר שמעשיית כך עשויה להפריע לחיבורי SSH קיימים:

  1. sudo ufw reset
Output
Resetting 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: כללים ופקודות נפוצות של חומת האש.

Source:
https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server