אחרי ייבוא ידני של דיסק וירטואלי אל Compute Engine, צריך לבצע אופטימיזציה של התמונות כדי שיוכלו להשתמש בתכונות שספציפיות לסביבת Compute Engine.
תוכן עניינים
התקנת סביבת האורח של Compute Engine
כדי להשתמש בתכונות מרכזיות של Compute Engine, צריך להתקין את סביבת האורח. כדי לדעת מתי צריך להתקין את סביבת האורח באופן ידני, אפשר לעיין במאמר בנושא מתי צריך להתקין או לעדכן את סביבת האורח באופן ידני.
מתקינים את סביבת האורח במכונה הווירטואלית הפעילה שיצרתם אחרי ייבוא ידני של קובץ האימג' הקיים. כדי לבצע את ההתקנה, ניגשים למכונה הווירטואלית באמצעות SSH עם חשבון משתמש שיצרתם לפני הייבוא, או באמצעות אינטראקציה עם המסוף הטורי.
הגדרת התמונה המיובאת ל-Compute Engine
אפשר להריץ את תמונת הדיסק של האתחול ב-Compute Engine בלי לבצע שינויים נוספים, אבל אפשר גם לבצע אופטימיזציה נוספת של התמונה כדי שהיא תפעל בצורה אופטימלית ב-Compute Engine ותהיה לה גישה לכל התכונות של Compute Engine.
עורכים את הקובץ
ntp.confכך שיכלול רק את הרשומה של שרת ה-NTP של Googleserver metadata.google.internal iburst.מגדירים את אזור הזמן ל-UTC:
sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime
כדי להבטיח יכולת רשת עם ביצועים גבוהים, מומלץ להשתמש בהגדרות הרשת הבאות:
- משתמשים ב-ISC DHCP client.
- מגדירים את ה-MTU של DHCP ל-MTU של הרשת. שרת ה-DHCP של Compute Engine מציג את הפרמטר הזה כאפשרות
interface-mtu, שרוב הלקוחות מכבדים. מידע נוסף על MTU ברשת זמין במאמר סקירה כללית של יחידת שידור מקסימלית. - אם לא מתכוונים להגדיר כתובות IPv6, צריך להשבית את IPv6.
מסירים כללי רשת קבועים כדי למנוע מהמופע לזכור כתובות MAC. לדוגמה:
rm -f /etc/udev/rules.d/70-persistent-net.rules
משביתים את חומת האש של מערכת ההפעלה, אלא אם יש לכם דרישות ספציפיות שלא נתמכות על ידי כללי חומת האש של Compute Engine. Compute Engine מספק חומת אש לתעבורה נכנסת ויוצאת. מידע נוסף על חומות אש
כדי להבטיח ביצועים גבוהים של הרשת והדיסק, צריך להשבית או להסיר את דמון
irqbalance. הדמון הזה לא מאזן בצורה נכונה בקשות IRQ למערכות הפעלה אורחות במופעים של מכונות וירטואליות (VM). במקום זאת, משתמשים בסקריפטים שכלולים בסביבת האורח כדי לאזן בצורה נכונה את הגדרות ה-IRQ של מעבדים וירטואליים.הגדרת גישת SSH לתמונת הבסיס:
- משביתים את הכניסה באמצעות SSH כמשתמש root.
- משביתים את אימות הסיסמה.
- משביתים את האימות שמבוסס על המארח.
- הפעלת בדיקה קפדנית של מפתחות מארח.
- אפשר להשתמש ב-
ServerAliveIntervalכדי לשמור על החיבורים פתוחים. הסרת מפתחות SSH מהתמונה כדי שאחרים לא יוכלו לגשת למפתחות הציבוריים או הפרטיים בתמונה. במקום זאת, משתמשים ב-Compute Engine כדי לנהל את הגישה למכונות.
עורכים את הקובץ
/etc/ssh/ssh_configכדי להשתמש בהגדרה הבאה:Host * Protocol 2 ForwardAgent no ForwardX11 no HostbasedAuthentication no StrictHostKeyChecking no Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc Tunnel no # Compute Engine times out connections after 10 minutes of inactivity. # Keep alive ssh connections by sending a packet every 7 minutes. ServerAliveInterval 420
עורכים את הקובץ
/etc/ssh/sshd_configכדי להשתמש בהגדרה הבאה:# Disable PasswordAuthentication because ssh keys are more secure. PasswordAuthentication no # Disable root login. Using sudo provides better auditing. PermitRootLogin no PermitTunnel no AllowTcpForwarding yes X11Forwarding no # Compute Engine times out connections after 10 minutes of inactivity. # Keep alive ssh connections by sending a packet every 7 minutes. ClientAliveInterval 420
אחרי שמגדירים את דיסק האתחול ב-Compute Engine ומבצעים בו אופטימיזציה, יוצרים ממנו קובץ אימג' כדי שתוכלו ליצור מכונות מגרסה שעברה אופטימיזציה מלאה של קובץ האימג', במקום להגדיר כל מכונה בכל פעם שיוצרים אותה.
הגדרת שיטות מומלצות לאבטחה
תמיד צריך לספק סביבת מערכת הפעלה מאובטחת, אבל יכול להיות קשה למצוא את האיזון בין סביבה מאובטחת לבין סביבה נגישה. מכונות וירטואליות שחשופות להתקפות עלולות לצרוך משאבים יקרים. Google ממליצה מאוד לוודא שהתמונות עומדות בשיטות המומלצות הבאות לאבטחה:
- צריך לצמצם את כמות התוכנה שמותקנת כברירת מחדל (לדוגמה, לבצע התקנה מינימלית של מערכת ההפעלה).
- הפעלת עדכונים אוטומטיים.
- כברירת מחדל, כל שירותי הרשת מושבתים, למעט SSH, DHCP ו-NTPD. אתם יכולים לאפשר לשרת אימייל, כמו Postfix, לפעול אם הוא מקבל חיבורים רק מ-localhost.
- לא לאפשר יציאות להאזנה חיצונית, למעט sshd.
- כדי למנוע ניסיונות התחברות ל-SSH בכוח, כדאי להתקין את חבילת denyhosts.
- מסירים את כל החשבונות המיותרים שאינם חשבונות משתמשים מההתקנה שמוגדרת כברירת מחדל.
- ב-
/etc/passwd, מגדירים את המעטפת של כל החשבונות שאינם חשבונות משתמשים ל-/sbin/nologinאו ל-/usr/sbin/nologin(בהתאם למיקום שבו מערכת ההפעלה התקינה את nologin). - מגדירים את מערכת ההפעלה לשימוש ב-SHA512 עם Salt לסיסמאות ב-
/etc/shadow. - הגדרה וקביעת תצורה של pam_cracklib לסיסמאות חזקות.
- מגדירים וקובעים את ההגדרות של pam_tally כדי לנעול חשבונות למשך 5 דקות אחרי 3 ניסיונות כושלים.
ב-
/etc/shadow, מגדירים את חשבון הבסיס כך שיינעל כברירת מחדל. מריצים את הפקודה הבאה כדי לנעול את חשבון הבסיס:usermod -L root
כדי לדחות את הגישה ל-root ב-
/etc/ssh/sshd_config, מוסיפים את השורה הבאה:PermitRootLogin no
יוצרים פרופילים של AppArmor או של SELinux לכל שירותי ברירת המחדל שפועלים ברשת.
כדי לאפשר שליטה מדויקת יותר, מומלץ להשתמש ביכולות של מערכת הקבצים כדי לבטל את הצורך ב-S*ID bit.
הפעלת אמצעים לצמצום הסיכון לניצול לרעה של קומפיילר וסביבת ריצה כשמבצעים קומפילציה של תוכנה שפונה לרשת. לדוגמה, הנה כמה מהאמצעים לצמצום הסיכון שזמינים ב-GNU Compiler Collection (GCC) והסבר איך להפעיל אותם:
- הגנה מפני פריצה למחסנית: מפעילים את ההגדרה הזו באמצעות
-fstack-protector. כברירת מחדל, האפשרות הזו מגנה על פונקציות עם מאגר שהוקצה למחסנית באורך של יותר משמונה בייטים. כדי להגדיל את ההגנה על ידי הוספת מאגרי נתונים זמניים של לפחות ארבעה בייטים לפונקציות, מוסיפים את--param=ssp-buffer-size=4. - אקראיות של פריסת מרחב כתובות (ASLR):
כדי להפעיל את ההגדרה הזו, צריך ליצור קובץ הפעלה בלתי תלוי במיקום באמצעות
-fPIC -pie. - הגנות Glibc: מפעילים את ההגנות האלה באמצעות
-D_FORTIFY_SOURCE=2. - הגנה על טבלת ההיסטים הגלובלית (GOT): מפעילים את התכונה הזו של טוען זמן הריצה באמצעות
-Wl,-z,relro,-z,now. - שגיאות בזמן הידור של מחרוזות פורמט חסרות:
-Wformat -Wformat-security -Werror=format-security
- הגנה מפני פריצה למחסנית: מפעילים את ההגדרה הזו באמצעות
השבתה של
CAP_SYS_MODULE, שמאפשרת טעינה ופריקה של מודולים של ליבת המערכת. כדי להשבית את התכונה הזו, עורכים את הקובץ/etc/sysctl.confומוסיפים את ההגדרה הבאה:kernel.modules_disabled = 1
מסירים את טבלת הסמלים של ליבת המערכת:
sudo rm /boot/System.map
המאמרים הבאים
- אחרי שהתמונה מוכנה להפקה, צריך ליצור גרסה סופית של התמונה המותאמת אישית ולכלול את התמונה במשפחת תמונות כדי שתוכלו לנהל בקלות גרסאות מעודכנות של התמונה המותאמת אישית.
- איך מפעילים מכונה מתמונה