PracticU

הגדרת Port Forwarding על ידי firewall-cmd בלינוקס

בלי כתוביותעם כתוביות
PracticU › קורס לינוקס למתקדמים - הסמכה בינלאומית - Linux - Red Hat - RHCSA / RHCE › הגדרת Port Forwarding על ידי firewall-cmd בלינוקס
מילון מושגים:
חומת אש - מערכת שמסננת תעבורת רשת לפי כללים, ומתירה או חוסמת חיבורים כדי להגן על מחשב או רשת.
HTTP - פרוטוקול להעברת דפי אינטרנט ונתונים בין דפדפן לשרת. הגרסה המאובטחת שלו היא HTTPS.
HTML - שפת הסימון שבה בונים את מבנה ותוכן דפי האינטרנט, באמצעות תגיות שמגדירות כותרות, פסקאות, קישורים ועוד.
SSH - פרוטוקול לחיבור מרוחק ומוצפן למחשב, בעיקר לשרתי Linux, לצורך ניהול דרך שורת הפקודה.
פרוטוקול - מערכת כללים מוסכמת שקובעת כיצד מכשירים או תוכנות מתקשרים ומחליפים מידע, למשל HTTP או TCP.
TCP - פרוטוקול תקשורת אמין שמוודא שכל חבילות המידע מגיעות ליעד בשלמות ובסדר הנכון.
IPv4 - הגרסה הרווחת של פרוטוקול IP, שבה כתובת מורכבת מארבעה מספרים בין 0 ל-255.
תחביר - אוסף הכללים של שפת תכנות הקובעים כיצד לכתוב קוד תקין. הפרתם גורמת לשגיאת תחביר.

הגדרת Port Forwarding על ידי firewall-cmd בלינוקס
שלוש שאלות הכנה ל-RHCE בנושא Port Forwarding ב-firewall-cmd: הפניית פורט 5422 ל-80 עבור כולם, הפניה רק מרשת 192.168.50.0/24, והגבלת קצב החיבורים לפורט 80. ההרצאה מדגימה כל אחת ומראה איך לשמור את התוצאה.
השלבים העיקריים
1. בדיקה מקדימה: על System 1 (192.168.50.14) רץ שרת HTTP בפורט 80, ובדף index.html פשוט נכתב טקסט לבדיקה. מ-System 2 (192.168.50.12) בודקים עם curl. בהתחלה מתקבל Connection Refused, ולכן מוסיפים את השירות עם --add-service=http ומוודאים שהכל עובד.
2. זהירות ב-SSH: כשעובדים עם חומת אש דרך SSH אסור לחסום את החיבור עצמו.
3. שאלה 1, הפניה לכולם: משתמשים ב---add-forward-port עם פורט, פרוטוקול tcp ופורט יעד. בודקים עם --list-forward-ports. ההפניה פועלת על חיבורים שמגיעים מבחוץ, ולא על בדיקה מתוך אותה מכונה.
4. מחיקה ושמירה: --remove-forward-port מוחק. ההגדרות נעשות ב-runtime, ולכן כדי שישרדו אתחול מריצים --runtime-to-permanent. גם מחיקה צריכה שמירה כזו.
5. שאלה 2, Rich Rules: כללים עשירים מאפשרים להגדיר מקור, יעד, פעולה ועוד. כדי לכתוב אותם נעזרים ב-man firewalld.richlanguage, שמופיע בסעיף See also של man firewall-cmd.
6. שאלה 3, הגבלת קצב: מוסיפים ל-rich rule עם accept את limit value. לפני כן מסירים את השירות http, כי כל עוד הוא מאופשר הוא עוקף את הכלל.
7. בדיקה: עם 2 בדקה החיבור השלישי נדחה עד שחולפת הדקה. אחר כך הכלל נערך (מוחקים ומוסיפים מחדש) ל-5 בדקה, ושוב נבדק.
פקודות והגדרות
- firewall-cmd --list-all
- firewall-cmd --add-forward-port=port=5422:proto=tcp:toport=80
- firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.50.0/24 forward-port port=5422 protocol=tcp to-port=80'
- firewall-cmd --runtime-to-permanent
שימו לב
- רוב הפקודות ב-firewall-cmd קיימות בגרסאות list, add ו-remove.
- אם שוכחים תחביר, firewall-cmd --help | grep על מילה כמו service, port או forward מסנן את האפשרויות.
- לפני הוספת rich rule מריצים --list-all כדי לוודא שאין התנגשות.
אחרי ההרצאה אפשר להפנות פורטים, להגביל קצב גישה ולשמור את ההגדרות לאתחול הבא.
לחץ כאן להורדת הורדת קבצי Script של לינוקס שהיו בסרטים
מילון מושגים:
דיסק - התקן לאחסון קבוע של נתונים, כמו כונן קשיח (HDD) או כונן מבוסס זיכרון מהיר (SSD).
תיקייה - מכל במערכת הקבצים שמשמש לארגון קבצים ותיקיות אחרות בתוך מבנה היררכי.
מחיצה - חלוקה לוגית של דיסק פיזי לאזורים נפרדים, שכל אחד מתפקד כאילו הוא כונן עצמאי.
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.
דומיין - תחום ניהולי משותף של מחשבים ומשתמשים ברשת ארגונית, המנוהל מרכזית. גם שם ייחודי של אתר באינטרנט.
אימות - תהליך שמוודא שהמשתמש או המערכת הם מי שהם טוענים שהם, בדרך כלל באמצעות סיסמה, קוד או תעודה.
Active Directory - שירות מדריך של מיקרוסופט לניהול מרכזי של משתמשים, מחשבים והרשאות ברשת ארגונית מבוססת דומיין.
GPO - אובייקט מדיניות קבוצתית ב-Active Directory, שמכיל הגדרות ומדיניות המוחלות על משתמשים ומחשבים.


מבנה ושמות דיסקים ומחיצות בלינוקס:


(Sda (disk0): זה הדיסק הפיזי הראשון (SATA DISK)

(Sda1,Sda2 (Partitions in disk): אלו הן המחיצות בתוך הדיסק הפיזי הראשון.

(Sdb (disk1): זה הדיסק הפיזי השני כמו בוינדוס Disk1

(Sdb1,Sdb2 (Partitions in disk): אלו הן המחיצות בתוך הדיסק הפיזי השני.

מחיצת השורש הראשונה:

וינדוס: C

לינוקס: /

מחיצות נוספות:

וינדוס: D: / E:

לינוקס: /data /example כמו תיקיות.

הערה: בתהליך ההתקנה יוצרים מחיצה נוספת לזיכרון הווירטואלי שנקראת SWAP

מטרת צירוף לינוקס לדומיין הינה לאימות משתמשים מתוך Active Directory בלבד ואין GPO  ללינוקס דרך AD.


הוכן ע"י התלמיד המצטיין: אברהים אבו שיכה

פרקי ההרצאה: הגדרת Port Forwarding על ידי firewall-cmd בלינוקס

  1. 00:00

    מטרת Port Forwarding בלינוקס

  2. 01:28

    עבודה עם הכלי firewall-cmd

  3. 03:05

    בדיקת גישה לשרת HTTP

  4. 04:08

    עבודה על פרופיל public

  5. 05:28

    הגדרת forward port

  6. 08:25

    רשימת הפניות הפורטים

  7. 09:42

    קונפיגורציה live מול permanent

  8. 11:22

    עבודה עם rich rules

תמלול ההרצאה: הגדרת Port Forwarding על ידי firewall-cmd בלינוקס

הטקסט המלא של הדקות הראשונות בהרצאה «הגדרת Port Forwarding על ידי firewall-cmd בלינוקס» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום וברוכים הבאים לסרטון בנושא ההכנה ל-RHCE. היום אנחנו נלמד שאלות בנושא Local Port Forwarding. אנו נבחן שלוש שאלות.

  2. 00:13

    בשאלה הראשונה אנו מתבקשים לקחת את כל מי שמתחבר ל-System 1 בפורט 5422 להפנות אותו לפורט 80. בשאלה השנייה אנחנו מתבקשים לעשות אותו דבר אבל רק למי שמתחבר מרשת 192.168.50 שיועבר מפורט 5422 לפורט 80. ובשאלה השלישית אנו מתבקשים להגביל את קצב הגישה למערכת 1 בפורט 80 מרשת 192.168.50 לשתי חיבורים חדשים בדקה לכל היותר.

  3. 00:56

    ראשית בואו נסתכל רגע על הקונפיגורציה של המערכות שלנו ברשת יש לנו סיסטם אחד שנמצא בכתובת 192.168.50.14 וסיסטם שתיים שבו אנחנו נשתמש לניסיון של יצירת הקונקשנים והוא נמצא בכתובת 192.168.50.12 טוב אז בואו נתחיל אני מתחבר למערכת בssh שימו לב כאשר אתם מחוברים ב-SSH ועושים פעולות עם ה-Firewall

  4. 01:30

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

  5. 01:43

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

  6. 02:00

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

  7. 02:21

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

  8. 02:37

    אז אני עושה vi var www.htmlindex.htmltesting123 בואו נבדוק ומעולה. התשובה הזאת תגיד שהתקשורת שלנו הצליחה. עכשיו אני אעבור למערכת הטסט שלנו, סלע SSH, כתובת 12, יש סיסמה ועכשיו אני אנסה להגיע לכתובת ה-14 לראות אם אני מצליח.

  9. 03:14

    HTTP 192.168.50.14 ואני מקבל הודעה של Connection Refused מהסיבה הפשוטה שעדיין לא אפשרתי בפיירוול את הגישה לסרוויס הזה אז הדרך הכי פשוטה לאשר אותו ואני עושה את זה בעצם לפני שאני מתחיל לעשות את כל המשחקים ולענות על השאלה אני רוצה לוודא שאכן הכל תקין והתקשורת עובדת בסדר.

  10. 03:50

    אם אתם בטוחים בעצמכם, לא חייבים לעשות את זה במבחן. אז אני אעשה כזה דבר. אני קודם כל אתחיל בזה שאני אציג את כל הקונפיגורציה של ה-firewall בצורה הבאה: firewall.cmd == list == all.

  11. 04:08

    ואני רואה שאני עובד כרגע על פרופיל public, ואני רואה שאלה הם הסרוויסים שמאופשרים אצלי, ואני הולך עכשיו להוסיף service == add service http. הוספתי, קיבלתי הודעה success, עכשיו אני הולך לבדוק, ועל מערכת 2, ואני מקבל את ההודעה שציפיתי לה, test123. מצוין.

  12. 04:44

    אגב, אם אתם לא בטוחים, נגיד, איך לעבוד עם firewall cmd אז טריק טוב זה לעשות מינוס מינוס help ואז פשוט להשתמש בגרפ למשל על סרוויס אז יש get services את הפקודה סרוויס יש list service add service ו-remove service אוקיי בעיקרון רוב הפקודות ב firewall cmd יש להם אופציה של list add ו-remove מעולה

  13. 05:19

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

  14. 05:49

    אני עושה forward cmd מינוס מינוס help ומריץ את גרפ על forward ואני רואה כאן list forward ports בואו נריץ אותו כרגע מן הסתם אני מאמין שלא יהיו שום פורטים הפניית פורטים במערכת הרצתי מקבל פלט ריק ואז אני רואה כאן את הסינטקס של add port forward זה הולך ככה add

  15. 06:19

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

  16. 06:36

    5422 כי יהיה ממש לא נחמד לעשות את כל התרגיל ואז להבין בעצם שבטעות העברנו פורט אחר. ואז יש כאן נקודותיים פרוטו, כלומר פרוטוקול שווה tcp ונקודותיים 2 port שווה 80. אגב יש כאן אפשרות גם לעשות רנג' כלומר מטווח של פורטים נגיד מפורט 5400 עד פורט 5500 להפנות אותו אותם לפורטים נגיד מ-1 עד 100 וכמובן בהתחלה firewall cmd אוקיי

  17. 07:23

    סקסס קיבלתי הפניית פורטים ובואו עכשיו ננסה קח כאן ונוסיף את port 5422 מצוין עובד עכשיו בואו נעשה list forward ports ואני רואה את ההפניה שיצרנו.

  18. 07:46

    עכשיו, שימו לב, אם אני אריץ את הפקודה הזאתי על מערכת המקור, היא לא תעבוד, כי בעצם ההפניה הזאת נעשית ברמת ה-firewall, וה-firewall פעיל על קונקשנים שהם בעצם לפני שהם נכנסים למכונה.

  19. 08:06

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

  20. 08:25

    נתחיל מלעשות list port forwards ונלך ל-firewall cmd == help forward. ואנחנו כאן רואים את ה-remove port forward. firewall.cmd.remove.port.forward ואותו syntax port שווה 5,422.2.proto שווה tcp.2.port שווה 80. מחקנו בואו נוודא שהוא לא נמצא ברשימה הרשימה ריקה ובואו

  21. 09:09

    נוודא שההפניה כבר לא עובדת ואנחנו אכן רואים שההפניה הפסיקה לעבוד אגב אם הייתי באמת עושה את התרגיל ואז בואו נחזיר רגע את ההפניה אז במצב הזה הנה אתם רואים אפשרתי את ההפניה והיא כן והיא עובדת אני רואה טסט 1 2 3 עכשיו זה לא מספיק עכשיו מה שאני צריך לעשות אני צריך לשמור את הקונפיגורציה של הפיירוול כי כרגע אנחנו

  22. 09:42

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

  23. 10:03

    ויש לנו כאן את האפשרות הזאתי run time to permanent, והיא אומרת שלקחת את הקונפיגורציה של ה-run time שנמצאת כרגע ולשמור אותה לתוך הפרמננט.

  24. 10:21

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

  25. 10:42

    אם אני רוצה לשמור את המצב הזה שהקונפיגורציה איננה, אני צריך לעשות עוד פעם runtime to permanent.

  26. 10:51

    מעולה, אז זאת בעצם דרך אחת לעשות port forwarding, אבל קיימת עוד דרך שהיא בעצם טיפה יותר מתקדמת ומאפשרת לנו להגדיר קצת יותר פרמטרים, ולדרך הזאתי קוראים reach rules, חוקים עשירים.

  27. 11:09

    כשעשו את firewall.cmd רצו לעשות משהו שיהיה קצת יותר פשוט לקונפיגורציה מהIP tables אבל עדיין לתת מספיק רמות חופש למנהלי מערכת שיוכלו בעצם לשים את החוקים שהם רוצים ובואו נראה איזה פקודות יש לנו ב-reach rules נעשה help Grap-reach אז יש לנו List Rituals, Add Rituals, Remove Rituals ו-Query Rituals.

  28. 11:44

    בואו נתחיל מה-List Rituals, נראה אם משהו כרגע מוגדר במערכת. List Rituals, וכרגע לא מוגדר שום דבר. אגב, דרך טובה בעצם להיזכר ולהתרענן בניסוח של ה-Rituals זה להסתכל על עמוד אמ"ן.

  29. 12:02

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

  30. 12:32

    וכאן יש לי firewall.dreach.language וזה בעצם המען שאני צריך אני אעשה מען על firewall.dreach.language וכאן אני בעצם רואה את הסטרקצ'ר שהסטרקצ'ר מתחיל ב-rule אחרי זה יכול להיות source, destination אחרי זה יש לי אפשרויות או שאני רוצה לעבוד עם סרוויס, פורט,

  31. 12:58

    פרוטוקול, ICMP, מסקריט, פורט, פורוורד ו-source port אחרי זה מה אני רוצה לעשות עם זה לעשות לשים את זה בלוג לשלוח את זה לאאודיט די או לעשות עם זה אקספט ריג'קט דרופ או מארק כלומר אם אני ארצה לעשות פורט פורוורדינג וכמו שזה כתוב בתרגיל שלנו צריך לעשות בעצם רול סורס מאיזה רשת איזה פורט פורוורדינג

  32. 13:30

    מאיזה פורט ולאיזה פורט. אז בואו נכתוב את הרול. אז אנחנו עושים firewall.tmd add ritual שווה מירכאות.

  33. 13:45

    כאן אני כותב rule family שווה IPv4.

לקורס המלא: קורס לינוקס מתקדם אונליין

ההרצאה הקודמת: הגדרת FirewallD

ההרצאה הבאה: התקנה אוטומטית עם Kickstart

הרצאות קשורות מקורסים אחרים

  • הגדרת VLAN ו-TRUNK עם Port Security
  • העלאת הרשאות בלינוקס על ידי ניצול של משימות מתוזמנות - crontab
  • סיכום ב-3 דקות - חוקים ב-Firewall
  • הסבר על GIT CMD

קורסים נוספים במסלול

  • קורס AWS - ניהול מכונה וירטואלית בענן
  • קורס Terraform - DevOps - Azure & AWS
  • קורס קוברנטיקס - Kubernetes
  • קורס Docker - עם Swarm Cluster
  • קורס DevOps - Ansible
  • קורס PowerShell