Nginx - הדרך הנכונה לאבטח את שרת ה HA שלך
כמו ששמתם לב, כברירת מחדל בהתקנה שרת ה Home Assistant נגיש בפורט 8123 וללא סיסמה. דבר לכשעצמו ניתן לפרשנויות שונות אך גם מגביל מאוד את עניין הגישה לשרת מחוץ לרשת הביתית היות והתעבורה לא מאובטחת.
דבר זה ניתן לטיפול בדרך מאוד פשוטה על ידי שימוש ב Nginx ובתופת של SSL Certificate אשר מאפשרים לאבטח ולהצפין את התעבורה אל השרת וממנו.
במדריך זה אסביר בצורה פשוטה מאוד כיצד ניתן לעשות את זה ומבלי להסתבך יותר מדי.
כפי שתוכלו לראות בציור הבא, המשתמש ניגש לשרת באמצעות פרוטוקול מאובטח HTTPS, ושרת ה NGNIX יעביר את הבקשה לשרת ה HASS בפרוטוקול לא מאובטח HTTP ובכך מאפשר גישה מאובטחת מחוץ לרשת הביתית:
לצורך אבטחת השרת נשתמש ברכיבים הבאים: 1. Nginx בתצורה של Reverese Proxy.
2. תעודת אבטחה (Certificate) מבית Lets Encrypt
3. שימוש ב DNS או Dynamic DNS לצורך שיוך הדומיין ל IP שלנו (אחרת לא ניתן להנפיק תעודת SSL).
על מנת להתקין את שרת ה NGINX יש להריץ את הפקודה הבאה:
וללחוץ על y ואנטר לאישור ההתקנה.
על מנת לוודא כי ההתקנה עברה וה NGINX מתפקד פתחו את הדפדפן והקלידו את כתובת ה IP של המכשיר עליו התקנתם את ה HASS. אתם אמורים לראותמסך שנראה כך:
בשלב הבא, נוסיף את ההגדרות אשר יבצעו את ההפניה מה NGINX אל ה HASS. לצורך כך הכנסו לנתיב בו נמצאות הגדרות ה NGINX בנתיב הבא:
כעת, צרו קובץ בשם hass.conf על ידי הפקודה הבאה:
והדביקו את הטקסט הבא:
לחצו על Ctrl+x ולאחריו y ואנטר לשמירת השינויים.
כעת, על מנת להפעיל את הקונפיגורציה הקלידו את הפקודה הבאה:
בשלב זה, הפורט בו השרת יאזין לבקשות עדיין 80 (HTTP), בהמשך כאשר נתקין את ה Certificate הוא יהפוך ל 443 (HTTPS) .
בשורה 3 בקוד יש להחליף את הדומיין hass.example.com בדומיין שלכם וכן יש לוודא כי הדומיין מפנה לכתובת ה IP החיצונית שלכם (אחרת לא תוכלו להנפיק SSL Certificate).
כעת ניגש להתקנת certbot של Lets Encrypt אשר דרכו וגם נחדש את ה Certificate, לשם כך הקלידו את הפקודות הבאות:
כעת נמשוך ונתקין את תעודת ה SSL עבור שרת ה Home Assistant על ידי סט הפקודות הבא:
במסך שלפנינו תפתח רשימה של כלל האתרים שנמצאים תחת ה NGINX:
כעת נבחר במספר של האתר אותו נרצה לאבטח ונלחץ על Enter לאישור הפעולה. במידה וזו הפעם הראשונה שאנחנו מגדירים תעודת SSL על השרת נתבקש לספק כתובת Email אשר תשמש את Lets Encrypt לשלוח לנו הודעות כגון תזכורת לעדכן את התעודה.
אחרי שתעודת ה SSL תונפק תוצג בפנינו שאלה, האם להפנות את כל התעבורה ל HTTPS או לאפשר גם תעבורה לא מוצפנת. כמובן שנבחר בלהצפין את כל התעבורה כך שגם אם בקשה תגיע בטעות ב HTTP היא תופנה באופן מיידי ל HTTPS.
כעת ניגש לדפדפן ונקיש את הכתובת כולל HTTPS, ונוכל להבחין כי התעודה תקיפה:
על מנת לקשר את הדומיין ל IP שלכם ישנן מספר דרכים:
1. שימוש בשרתי Dynamic DNS כדוגמאת DuckDNS.
2. אפשרות נוספת היא להשתמש ב API של CloudFlare על מנת להשתמש בדומיין שלכם (גם חינמי), פרטים נוספים תוכלו לקרוא כאן!
** הערה חשובה **
היות ו Lets Encrypt מספקים תעודות אבטחה בחינם ועל מנת למנוע מצב של הנפקת יתר או ספאם התעודות מוגבלות מראש לשלושה חודשים (90 ימים). במידה ורוצים יותר יש לחדש אותן באופן יזום. לשמחתנו הרבה החברה מספקת פתרון המאפשר חידוש אוטומטי, ולצורך כך נקבע משימה מתוזמנת אשר תעשה זאת עבורינו. לצורך כך יש לכתובת את הפקודה הבאה:
אם זו הפעם הראשונה שאתם כותבים את הפקודה תתבקשו לבחור את העורך בו המערכת תשתמש, ממליץ להשתמש ב nano שהיא הנוחה ביותר.
כעת הכניסו פנימה את הטקסט הבא:
לחצו Ctrl+x ולאחר מכן y ואנטר לשמירת הקובץ ויציאה מהעורך.
החל מרגע זה בכל יום בשעה 00:00 המערכת תבצע בדיקת חידוש ואם נותרו פלות מ-30 יום לפקיעת התוקף יתבצע חידוש אוטומטי.
לשאלות ועזרה, ניתן לפנות ל