כשיש לנו שרת אינטרנט שיש עליו אתר או שירות, אנחנו צריכים להקפיד היטב על הפורטים שיש בו. פורטים הם סוג של "שערים" שפתוחים על המכונה ותוכנות שונות עובדות איתן לתקשורת. כך למשל, פורט 80 משמש אותנו לתקשורת http ופורט 443 משמש אותנו ל https. פורט 21/20 ל-FTP ופורט 22 ל-SSH וכך הלאה. כשאנחנו מרימים שרת לוקלי, אנחנו יכולים למשל לבחור לעבוד בפורט אחר כמו פורט 3000 למשל, או כל פורט אחר.
פורטים הם חלק מעולם התקשורת. הבעיה היא שהם גם חור אבטחה, אם למשל פורט 21 פתוח במחשב שלי ואם במקרה יש גם תוכנת FTP שעושה בו שימוש והיא לא מעודכנת, או מעודכנת אבל משתמשת ב-admin\admin – אני בבעיה. זו הסיבה האקרים וסקריפטים אוטומטיים מבצעים סריקות של כל הפורטים וכשהם מוצאים פורט פתוח הם ינסו להתחבר אליו באמצעות תוכנה עם ברירות מחדל או לבדוק חולשות ידועות הקשורות לפורט הזה.
הסריקה לפורט מתבצעת עם nmap. תוכנה שרצה ב-CLI ומראה פורטים פתוחים. מדובר בסריקה לאורך כל הפורטים (אל תעשו את זה לשרת שאתם לא מכירים או מרשת העבודה שלכם) והצגה של הפורטים הפתוחים. כך זה נראה למשל אצלי:
ניתן לראות שיש פה פורט 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 ללא הגבלה. לא הרעיון הכי טוב שלי, זה בטוח.
מה עושים? אם אני צריך את ה-SSH פעם באלף שנה. אפשר להוריד את הכתובת ולהוסיף אותה כשצריכים לפיירוול. שזה מה שעשיתי. אם צריך קצת יותר ויש לי כתובת IP קבועה או VPN ארגוני – אפשר להכניס את הריינג' שלהם. לחלופין, אפשר פשוט לעבור לזיהוי עם מפתחות ולנטוש את שם המשתמש והסיסמה. וכמובן להקפיד לעדכן ולתחזק את הקליינט של SSH כל הזמן. יש כמה דרכים לטפל בפורט פתוח. הדרך הראשונה היא מודעות.
מה שאסור לעשות זה לא לחשוב על הדברים האלו. וכן, מומלץ לבדוק איזה פורטים פתוחים על המכונות שלכם שיוצאות החוצה. בחלק מהמקרים, כמו אחסון שיתופי, לא תהיה לכם שליטה על מה פתוח ומה לא. אבל בחלק אחר מהמקרים בוודאי שיהיה לכם. אז זה הזמן להריץ nmap על השרתים שלכם ולסגור את הפורטים שלא צריך. גם אם מדובר בפורט 80 אגב. אצלי בשגרה הפורט היחידי שפתוח הוא 443.
אז הנה, אני סגרתי את הבעיה הזו. אני מודה מאוד ליותם הכהן שנתן לי מתנה גדולה – הראה לי חולשת אבטחה שהיתה אצלי. אין מישהו שאין לו חולשות אבטחה, השאלה היא מה עושים ברגע שהיא מתגלה. במקרה שלי: רק תודה גדולה וגם הסבר לאחרים, שאולי לא ידעו או יבדקו גם הם.
7 תגובות
למה לסגור את פורט 80? אחרת איך האנשים יגיעו לאתר שלך? אחרת, למה הוא פתוח דיפולטיבת?
אין שום בעיה עם פורט שאתה מודע אליו וכל התקשורת אליו מוצפנת בhttps ודאגת לעשות בדיקות קלט למה שאנשים שולחים לך לשם.
יכול להיות שבתוך התוכנה שלך תשתמש בתקשורת פנימית ופורטים פנימיים (ונראה לי זאת הייתה הבעיה של רן) אתה צריך לדאוג שהם לא יהיו חשופים וזמינים לקהל הרחב.
לצערי בגלל שאני בתוך הכתובות של אמזון, עושים המון סריקות על ה-IP שבתוך הכתובות האלו. כל הסריקות הן על פורט 80 שאני לא משתמש בו (אני משתמש בפורט 443) אז למה להשאיר אותו פתוח? שהסורקים של הרעים יחזירו שאין שם כלום. יותר טוב לי.
מומלץ להחליף את ssh לפורט אחר עם מספר גבוה. זה ימנע הרבה מאוד ניסיונות פריצה, גם אם זה כמובן לא תחליף לאבטחה של ssh.
למה לא לפתוח את 443 רק מהכתובות של cloudflare?
יצאת בזול.. לפחות לא הזמינו לך מנה גלאט כשר… 😉
אם עשיתי שרת vpn על ראוטר שמחובר לרשת הפנימית ולצורך כך פתחתי את פורט 443 בראוטר הראשי לכתובת של השרת vpn לtcp ו udp זה בעיה?