פורטים פתוחים בשרת

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

כשיש לנו שרת אינטרנט שיש עליו אתר או שירות, אנחנו צריכים להקפיד היטב על הפורטים שיש בו. פורטים הם סוג של "שערים" שפתוחים על המכונה ותוכנות שונות עובדות איתן לתקשורת. כך למשל, פורט 80 משמש אותנו לתקשורת http ופורט 443 משמש אותנו ל https. פורט 21/20 ל-FTP ופורט 22 ל-SSH וכך הלאה. כשאנחנו מרימים שרת לוקלי, אנחנו יכולים למשל לבחור לעבוד בפורט אחר כמו פורט 3000 למשל, או כל פורט אחר.

פורטים הם חלק מעולם התקשורת. הבעיה היא שהם גם חור אבטחה, אם למשל פורט 21 פתוח במחשב שלי ואם במקרה יש גם תוכנת FTP שעושה בו שימוש והיא לא מעודכנת, או מעודכנת אבל משתמשת ב-admin\admin – אני בבעיה. זו הסיבה האקרים וסקריפטים אוטומטיים מבצעים סריקות של כל הפורטים וכשהם מוצאים פורט פתוח הם ינסו להתחבר אליו באמצעות תוכנה עם ברירות מחדל או לבדוק חולשות ידועות הקשורות לפורט הזה.

הסריקה לפורט מתבצעת עם nmap. תוכנה שרצה ב-CLI ומראה פורטים פתוחים. מדובר בסריקה לאורך כל הפורטים (אל תעשו את זה לשרת שאתם לא מכירים או מרשת העבודה שלכם) והצגה של הפורטים הפתוחים. כך זה נראה למשל אצלי:

סריקת nmap המראה שלושה פורטים פתוחים: 22, 53, 80.
סריקת nmap המראה שלושה פורטים פתוחים: 22, 53, 80.

ניתן לראות שיש פה פורט 80 פתוח, כלומר אם אני אכניס את ה-url לדפדפן אני אוכל להכנס ולראות מה קורה פה. יש פורט 22, שבאמצעות אפשר להתחבר עם ssh ופורט 53 שמשמש שאילתות DNS לשרתי DNS. אם זה שרת ציבורי, ואני תוקף – אני אנסה להכנס ולראות אם פורט 80 אולי מכיל משהו מעניין (ממשק ניהול פתוח?), אני אנסה להתחבר עם ssh, אולי root עם סיסמה 1234 יעבוד? ואם יש חולשה של שרת DNS אני אנסה לתקוף את פורט 53 וכך הלאה.

זו הסיבה שמאוד מומלץ לעבור על הפורטים הפתוחים ולראות אם יש משהו שאתם לא צריכים. וזה בדיוק מה שיותם הכהן, מייסד של openfox.io (סטארטפ בתחום מערכות ידע לארגונים) מצא אצלי. בגלל בעיית קונפיגורציה, גוגל סרקו את כתובת ה-IP של השרת שלי שנמצא מאחורי קלאודפלייר וכתובת ה-IP האמיתית נחשפה, יותם ביצע סריקה של nmap גילה שפורט 22 פתוח בשרת שלי לכל דיכפין.

אז ראשית וידאתי שכתובת ה-IP שלי לא חשופה. אבל זה לא עוזר, כיוון שכתובות IP, בטח כאלו ששייכות לאמזון, נסרקות כל הזמן.

המכונה שלי היא מכונה של אמזון עם image של bitnami. פורט SSH פתוח בה לכל כתובת IP ללא הגבלה. לא הרעיון הכי טוב שלי, זה בטוח.

דוגמה של הגדרות רשת לשרת באמזון Lightsail. מגיעים לשם מממשק השליטה הפשוט של אמזון.

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

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

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

פוסטים נוספים שכדאי לקרוא

DALL·E 2024-09-06 12.34.24 - A visually engaging post about Python and cryptographic problems. The image should feature a dark-themed background with a glowing, futuristic Python
פתרונות ומאמרים על פיתוח אינטרנט

בעיות במימוש של פונקציות קריפטוגרפיות בפייתון

היום (16 לספטמבר) ממש, אני מעביר הרצאה ב-PyconIL 2024 על בעיות קריפטוגרפיות באפליקציות פייתון. לצערי אי אפשר להכניס את כל הבעיות הקריפטוגרפיות להרצאה אחת או

פתרונות ומאמרים על פיתוח אינטרנט

יישום של nonce על מנת להגן מפני התקפות injection

בפוסט הקודם הסברתי על hash עם CSP על משאבי inline – שזה נחמד ומעולה אבל פחות ישים בעולם האמיתי שבו בדרך כלל התוכן ה-inline (בין

גלילה לראש העמוד