כיצד לאבטח את העגינה לסביבת הייצור?

בואו נראה כיצד להתקשות ולאבטח את ה- Docker לסביבת הייצור.


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

נבחן כיצד לאבטח Docker בפלטפורמת לינוקס מהפעולות הבאות.

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

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

לפני שנמשיך לאבטח, בואו נתחבר אל היסודות.

מהי טכנולוגיית מכולות?

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

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

ההבדל בין VM & VE

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

מה זה דוקר?

Docker היא טכנולוגיית מכולות המשמשת מיליונים ליצירת יישום אינטרנט ולפריסה מבדיקה לסביבת ייצור.

מנוע דוקר

מנוע הדוקר מורכב משלושה רכיבים.

  • שרת: רכיב זה הנו תהליך או דמון שפועל לאורך זמן ואחראי על ניהול תמונות ומכולות.
  • ממשק API: REST: ממשק זה מאפשר לתאם את הדמון של הדוקר ואת כלי לקוח הדוקר.
  • כלי לקוח Docker: כלי לקוח Docker עושה שימוש ברכיב ה- REST API כדי להודיע ​​לדמון הדוקר להפעיל אפליקציה מכולה..

הרישום המהימן של דוקר

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

אמון התוכן של Docker

אמון התוכן של Docker מספק את היכולת להשתמש בחתימות נתונים לתמונות שנשלחות והתקבלו אל ומרישומי docker מרוחקים כמו מרכזת הדוקר..

מרחבי שמות של לינוקס

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

קבוצות בקרה לינוקס (קבוצות)

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

יכולות

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

עכשיו נתמקד בביטחון.

אבטחת מארח הדוקר

בחלק זה נבחן כיצד לאבטח את המארח בו שוכן דוקר.

סריקת גרעין לינוקס

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

העתק או שיבט את פרויקט Lynis מ- Github באמצעות הפקודה git clone.

שכפול git https://github.com/CISOfy/lynis.git

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

תקליטור ליניס; ./lynis מערכת ביקורת

גרעין לינוקס הארדן

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

  • מניעת ניצול הצפת מאגר
  • / tmp מניעת פגיעות במירוץ
  • / proc הגבלות שאינן מדליפות מידע על בעלי תהליכים.
  • מניעה של ביצוע קוד שרירותי בקרנל וכן הלאה.

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

התקן את Docker ב- VM

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

שמירה על הרשאות שורש

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

כדי למנוע זאת אנו יכולים להשתמש בפקודה הבאה. אנו יכולים להחליט להוריד יכולות כמו setgid ו- setuid כדי למנוע מתוכנות או תהליכים אחרים לשנות את ה- GID שלהם ל- GID אחר שעלול לגרום לזכות בהסלמה. אתה יכול גם לבדוק כאן לקבלת רשימה של הגדרת יכולות לינוקס.

הפקודה שלמטה מריצה את מיכל שרת האינטרנט של אפאצ’י ומפילה את יכולות ה- setgid וה- setuid דרך – cap-drop כדי למנוע מכלי ה- Apache לשנות את ה- GID וה- UID שלו ל- UID ו- GID אחר..

GID ו- UID בהקשר זה מתייחס לזיהוי קבוצתי ולזיהוי משתמש בהתאמה.

docker run – d –cap-drop SETGID – cap-drop SETUID apache

משתמש עגינה

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

באפשרותך להוסיף או ליצור משתמש עגינה באמצעות הדברים הבאים:

סוחר קבוצות

הפקודה שלמעלה יוצרת קבוצה הנקראת docker

בשלב הבא, צור משתמש באמצעות הפקודה שלהלן:

סודו

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

sudo usermod – מייק דוקר

ניהול מיכל עם קבוצות

בסביבת ייצור יתכן ויהיה יותר ממכולה אחת.

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

sudo apt-get להתקין cgroup-bin cgroup-lite cgroup-tools cgroupfs-mount libcgroup1

אנו יכולים להקצות את המכולות למשאבי CPU מוגבלים דרך – cpu-share ו- – cpuset-cpus

דוגמת הפקודה הבאה מציגה תהליך מיכל prodnginx מבוצע רק בליבה הראשונה דרך – cpuset-cpus ומקצה 20 מעבד באמצעות – cpu-share ואילו תהליך המיכל של proxnginx מבוצע בשתי ליבות ה- CPU הראשונות ומוקצה לו גם 20 מעבד.

הפעלת docker – d – שם prodnginx – cpuset-cpus = 0 – cpu-share = 20 nginx
מפעיל docker – d – שם testnginx – cpuset-cpus = 2 – cpu-share = 20 nginx

לאחר מכן הקלד את סטטיסטיקת docker הפקודות כדי להציג את השימוש במעבד על ידי מיכלי prodnginx ו- testnginx

שם מזהה שם מעבד% MEM שימוש / הגבלה MEM% NET I / O חסימת קלט / פלט
845bea7263fb prodnginx 57.69% 1.258MiB / 985.2MiB 0.13% 578B / 0B 1.33MB / 0B
189ba15e8258 testnginx 55.85% 1.25MB / 985.2MiB 0.13% 578b / 0B 1.33MB / 0B

כדאי להגדיר שיתופי CPU למארח הדוקר כשיש יותר ממכולה אחת.

ניהול מכולות עם מרחבי שמות

מרחב שמות יכול למנוע מכולות לפעול כמשתמשים הרשאים, מה שיכול לעזור למנוע התקפות הסלמה של הרשאות.

אנו יכולים לאפשר מרחב שמות בדוקר על ידי שימוש בקבצים / etc / subuid ו / etc / subgid כמוצג להלן..

  • צור משתמש באמצעות פקודת adduser

הספינה

  • הגדר תת-סמל עבור הסרת dock dock של המשתמש

הסר dock dock של הד סודה – 400000: 65536 > / etc / subuid ‘

  • ואז הגדר תת-משנה עבור הסרת dock dock של המשתמש

הסר dock dock של הד סודה – 400000: 65536 > / etc / subgid ‘

  • פתח את קובץ daemon.json ומלא אותו בתוכן הבא כדי לשייך את התכונה userns-remap לתוכנת dock dockap

vi /etc/docker/daemon.json
{

"userns-remap": "הסרת dock"

}

  • לחץ על: wq כדי לשמור ולסגור את קובץ daemon.json ולבסוף הפעל מחדש את הדוקר כדי לאפשר מרחבי שמות במארח הדוקר.

sudo /etc/init.d/ הפעלה מחדש של docker

אבטחת הדמון הדוקר

כמו כן, יש צורך לקבוע את התצורה של הדמון Docker כדי להבטיח תקשורת מאובטחת בין לקוח הדוקר לדמון הדוקר באמצעות TLS.

השתמש בפקודה הבאה כדי לפתוח קובץ daemon.json ולהעתיק ולהדביק את התוכן הבא (החלף את ה- IP בפועל שלך) כמוצג להלן.

vi daemon.json
{
"לנפות": שקר,
"tls": נכון,
"tlscert": "/var/docker/server.pem",
"tlskey": "/var/docker/serverkey.pem",
"מארחים": ["tcp: //192.168.16.5: 2376"]
}

אבטחת רכיבי Docker

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

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

אמת תמונות עם שרת נוטריון

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

  • הפעל את הפקודה שלהלן כדי להוריד את הגרסה האחרונה של Docker Compose

סולדו תלתל – ל "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s) – $ (uname -m)" -o / usr / local / bin / docker-compose

  • החל הרשאות הניתנות להפעלה על הדוקר-קומפוזיט כמוצג להלן

sudo chmod 700 / usr / local / bin / docker-compose

  • אתה יכול לבדוק אם התקנת בהצלחה את הדוקר-קומפוזיציה באמצעות הפקודה הבאה

הדוקר – לחבר – מהפך

  • כעת נוכל להתקין את שרת הנוטריון באמצעות הדוקר-קומפוז

שכפול git https://github.com/theupdateframework/notary.git

  • הפקודה שלמעלה משכפלת או מעתיקה את שרת הנוטריון מה – מאגר נוטריון
  • הפעל את שרת הנוטריון והחתימה באמצעות הפקודות שלהלן:

להרכיב הדוקר
הדוקר – חבר עד -ד

  • לאחר מכן העתק את אישורי התצורה ובדיקה לספריית הנוטריון המקומית שלך באמצעות הפקודה למטה

mkdir -p ~ /. נוטריון && cp cmd / notary / config.json cmd / notary / root-ca.crt ~ /. notary

  • כעת הפעל את הפקודה הבאה לחיבור שרת הנוטריון ללקוח הדוקר

ייצא DOCKER_CONTENT_TRUST = 1
ייצא DOCKER_CONTENT_TRUST_SERVER = https: // נוטריון: 4443

  • צור צמד מפתחות למשלחת באמצעות הפקודה שלמטה

מפתח אמון של הדוקר מייצר מייק -. ~ /

  • כעת ניצור מיקוד למפתחות חדשים למקרה שהמאגר לא קיים

חתימת אמון על הדוקר להוסיף – מפתח ~ /. docker / trust / mike.pub מייק mikedem0 / whalesay

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

סימן האמון של הדוקר – mikedem0 / nginx: האחרונה

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

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

תגיות:

  • דוקר

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map