הגנה על הרספברי פיי ברשת הפנימית

מתקינים אתר ביתי? פיי הול? שרת מדיה? אתם עלולים לחשוף את עצמכם לסיכונים מיותרים.

כמה ימים לפני כתיבת שורות אלו, הייתי בדיון בקבוצת הטלגרם Cyberspace ISR שמוקדשת לאבטחת מידע. אחד המשתמשים שם ציין, ובצדק, שמי שיבחר להתקין וורדפרס, או pihole או כל דבר אחר שיש לו ממשק אדמין על הרשת הפנימית שלו בעצם חושף את ההתקן הזה ואת הרשת הביתית שלו החוצה אם הוא לא משתמש בפיירוול על ההתקן או בין הרשת לנתב של הספק (או מחליף את הנתב של הספק למשהו שיש לו פיירוול משלו).

כלומר – אם אני מתקין שרת במחשב, או על רספברי פיי, יש יותר מסיכוי סביר שהוא ייחשף החוצה. כלומר כל מי שיקליד את כתובת ה-IP שלי יוכל לגשת אליו. רוצים דוגמה? חפשו בשודאן, שהוא מנוע חיפוש ל-IP ולפורטים, pi-hole בישראל. תגלו רשימה עצומה של פיי-הולים שמותקנים על רסבפרי פיי בתוך רשתות בישראל. וניתן להכנס לכל אחד מהם ולנסות להכנס לממשק הניהול. ובדיוק כמו פיי הול – ככה גם שרתי plex (למי שבא לו לראות סרט ממחשב של מישהו אחר).

תוצאות של חיפוש שרתי plex
תוצאות של חיפוש שרתי plex

אז איך מונעים את זה? איך מונעים משרת שאמור להיות פנימי שלי להיות גלוי לכל האקר חמוש בשודאן/סורק כלשהו?

הדבר הראשון הוא פיירוול. הדבר השני הוא לצאת מנקודת הנחה של zero trust ולאבטח את ההתקנים כאילו אין פיירוול והם בחוץ.

פיירוול

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

במק או בחלונות יש לנו ממשק נאה של פיירוול מותקן. שבו אנו יכולים לבצע הגבלות או הגדרות שונות. אבל רספברי פיי עובד על לינוקס דביאן ושם הפיירוול הוא באמצעות מערכת שנקראת iptables. המערכת הזו לא מאוד ידידותית למשתמש, אז אפשרי ומקובל להשתמש ב-ufw – – ראשי תבות של Uncomplicated Firewall לניהול. זה עדיין CLI (כלומר אנו עדיין מזינים את זה בקונסולה).

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

איך עושים את זה? ראשית מבררים מה טווח ה-IP של הרשת הפנימית. יש את זה בהגדרות הנתב או פשוט להתחבר לרשת ולעשות ip addr ולראות מה שלושת המספרים הראשונים של הכתובת אם הכתובת היא *.192.168.4? אז הטווח הוא 192.168.4.0-192.168.4.254.

אנו מתקינים ufw כך:

sudo apt install ufw -y
sudo ufw enable

את ההגבלה עושים כך

sudo ufw allow from 192.168.4.0/24

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

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

אם לא אכפת לכם שהשרת יהיה גלוי לכל דיכפין, או שאתם רוצים שהשרת יהיה גלוי (למשל אם אתם מפעילים hidden service) – אתם יכולים להגביל פורטים ספציפיים. מה זה אומר? שבעוד שפורט 80 ניתן לגישה, פורט 22 או כל פורט אחר לא יהיה זמין למישהו שהוא לא ברשת הפנימית. כך יהיה ניתן להכנס לשרת ולצפות בתוכן שהאתר מציג, אבל לא לעשות SSH או FTP.

sudo ufw allow from 192.168.4.0/24 to any port 22

לא משנה מה אתם מפעילים על הרספברי פיי – מומלץ להשקיע כמה דקות במחשבה על איך חוסמים סיכונים מיותרים וגישה מהרשת הלא פנימית או הגבלת גישה אחרת.

Zero trust

גם אם הקשחנו את הפיירוול, אנו עדיין צריכים לצאת מנקודת הנחה שהוא לא פועל. זאת אומרת שב-SSH לבחור סיסמה רצינית יותר ולא 123456, לשקול להחליף את המשתמש מ-pi לשם אחר (שהוא לא root או admin). אם מדובר בהתקנת מערכת כמו וורדפרס אז לדאוג שהיא תהיה מעודכנת וכן לבחור שם משתמש וסיסמה מאובטחים. הגישה הדואלית הזו, שבמסגרתה אנו לא סומכים על הפיירוול שיגן עלינו ומתנהלים כאילו האפליקציה שלנו חשופה לגמרי והמשתמשים שמגיעים אליה מהרשת הפנימית לא בטוח שכשרים ואמינים, גם כן מוסיפה לאבטחה.

שינוי סיסמה ושם משתמש ב-SSH

שינוי סיסמה של המשתמש הנוכחי מתבצע עם הכלי passwd. מתחברים עם SSH לרספברי פיי ומקלידים בשורת הפקודה:

passwd

יצירת משתמש חדש ומחיקת משתמש ברירת המחדל pi

יוצרים משתמשים חדש באופן הזה:

sudo adduser ran

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

sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi ran

הפקודה הנ"ל נותנת למשתמש ran את כל ההרשאות ומכניסה אותו לקבוצת ה-sudoers היוקרתית. נוודא את זה באמצעות הקלדה של:

sudo su - ran

ונמחק את המשתמש הקודם, pi, כך:

sudo pkill -u pi
sudo deluser pi
sudo deluser -remove-home pi

התיקון הזה חשוב במיוחד כי תוקפים יודעים שמשתמש pi והסיסמה raspberrypi הם בברירת המחדל של רסבפרי פיי. משנים שם משתמש ומשנים סיסמה לסיסמה חזקה ובטוחה? מזערנו את הסיכון שהתוקף לא יכנס עם SSH למכונה גם אם הפיירוול לא יעבוד ולא יתקוף אותנו. הראיתי פה כמה זה קל.

סיסמה ושם משתמש מאובטחים בוורדפרס

גם אם זה שרת ביתי, גם אם חסמתם את הגישה מבחוץ דרך הפיירוול, הכלל של zero trust קובע שאנו לא סומכים עליו. קבעו שם משתמש וסיסמה חזקים (השתמשו במנהל ססמאות) והקפידו לעדכן את הוורדפרס והתוספים בקביעות. יש דרכים לעשות את זה באופן אוטומטי והסיכוי שמשהו ישתבש הוא קטן אם מדובר באתר ביתי פשוט. בנוסף, בצעו הקשחה של וורדפרס מעבר לכך: ודאו שב-apache אין open directory, חיסמו brute force לססמאות ובצעו עוד פעולות לאבטחה.

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

שיקלו להוסיף פיירוול חיצוני

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

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

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

המנעו מהעלאת source control לשרת פומבי

לא תאמינו כמה אתרים מעלים את ה-source control שלהם לשרת. ככה תמצאו אותם וגם הסבר למה זה רעיון רע.

עבודה בהיי טק

איך מראיינים סניורים?

השיטה שלי לבדיקת התאמה טכנית למתכנתות ולמתכנתים בכירים עם כמה שנות ניסיון.

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