האקרים מתקדמים יותר, והם יודעים איך לנצל פגיעויות. אם יש לך נתונים רגישים במסד הנתונים של MongoDB שלך, חשוב לקחת את האבטחה ברצינות. אבל איך? אל תדאג! המדריך הזה יכול לעזור לך!
במדריך הזה, תלמד להגן על מסדי הנתונים שלך ב-MongoDB ולהרחיב קרינת האקרים על ידי הגדרת צעדים אבטחה.
קרא והתחל לשלוט באבטחת ה-MongoDB שלך!
דרישות מוקדמות
- המדריך הזה יהיה הדגמה מעשית. כדי לעקוב, הקפד לוודא שיש לך את הפריטים הבאים:
- MongoDB מותקן במכונת ה-Linux שלך.
- A non-root user with
sudo
privileges.
יצירת משתמש מנהל מוקדם
MongoDB אין לו מערכת אימות מובנית. לפי ברירת מחדל, כל אחד שיש לו גישה למסד הנתונים יש פריבילגיות מנהל מלאות – זה סכני מדי! כיצד לאבטח את מסד הנתונים שלך? תיצור משתמש עם פריבילגיות מנהל ותנעל את מסדי הנתונים למשתמש המנהל הזה.
ההגדרה הזו מאפשרת לך לספק נקודת גישה יחידה עם הרשאות מנהל כלליות בעוד מגבילה את מה שכל משתמש יכול לעשות בתוך מסד הנתונים. לדוגמה, מפתחים יכולים לקבל גישה רק לקריאה במסדי הנתונים, בעוד מנהלים יכולים ליצור ולערוך נתונים.
1. פתח את הטרמינל שלך והפעל את הפקודה mongo
ללא שום ארגומנטים. פקודה זו מאפשרת לך להתחבר למסד הנתונים של MongoDB שלך כמשתמש המנהל המוגדר כברירת מחדל.
משתמש זה מנהלי מאוד מאחר ויש לו גישה קריאה/כתיבה מלאה לכל המסדים בשרת, ומומלץ להימנע משימוש במשתמש זה לעבודה יומיומית.
תקבל אזהרה שאומרת פקודת בקרת גישה אינה מאופשרת…, כפי שמוצג למטה.
האזהרה הזו מציינת שכל אדם שיכול לגשת לשרת MongoDB יכול לבצע את הפעולות שהוא רוצה עם מסדי הנתונים. פעולות אלו כוללות אך אינן מוגבלות למחיקה, השלכת, עדכון מסדי הנתונים.
האזהרה הזו מופיעה משום שלא הפעלת בקרת גישה עדיין. אין צורך לדאוג מזה, לפחות לעכשיו. בהמשך תלמד כיצד להפעיל בקרת גישה בקטע הבא.

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

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

4. כעת, העתק והדבק את הקוד למטה למסד הנתונים של Mongo ולחץ על Enter. קוד זה יוצר משתמש בשם AdminATA
, עם סיסמה של LDWbPf6Fy9Ezs3Mv
, אך תוכל להשתמש בפרטי הכניסה שאתה מעדיף.
משתמש זה יש גישה קריאה/כתיבה (readWriteAnyDatabase
) לכל מסדי הנתונים וגישה למנהל לכל האוספים. אך למשתמש זה אין הרשאות למחוק או לשנות מסדי נתונים אחרים או לשנות את ההרשאות של משתמשים אחרים.
לאחר ביצוע הפקודה וקבלת הודעת שגיאה, אנא בדוק שוב את הקוד שלך ונסה שוב.
5. ספק סיסמה מאובטחת כשיש לך בקשה, כפי שמוצג למטה, ולחץ על Enter.

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

6. לבסוף, הפעל את הפקודה exit כדי לצאת ממסד הנתונים של MongoDB.

הוספת אבטחה על ידי הפעלת אימות
עכשיו שיש לך משתמש מנהל, תוסיף שכבת אבטחה נוספת על ידי הפעלת אימות. בעזרת כך, תאפשר גישה למסד הנתונים רק למשתמשים עם פרטי כניסה נכונים.
אימות מתייחס לתהליך של אימות החיבור, בדרך כלל על ידי ספק שם משתמש וסיסמה או באמצעות טוקן אימות. אימות מבטיח כי אתה אדם מזהה את עצמך ולא מתחזה שמנסה לגשת למשאבים.
1. הפעל אימות על ידי עריכת קובץ התצורה של MongoDB עם ההגדרות הבאות ושמור את השינויים:
- פתח את קובץ /etc/mongod.conf בעורך טקסט לבחירתך. קובץ /etc/mongod.conf מכיל הגדרות של קבוצת ה-MongoDB שלך.
- חפש ובטל את ההערה של #security על ידי הסרת הסמל # מתחילת ההוראה, כפי שמוצג למטה. ההוראה הזו אומרת ל-MongoDB לחפש את הגדרת האבטחה בקובץ התצורה.
- הוסף שורה חדשה מתחת להוראה של security שאומרת authorization: enabled. שים לב שהשורה authorization: enabled מוזחת (יש לה שני רווחים בתחילתה), כפי שמוצג למטה.

2. לבסוף, הפעל את הפקודה הבאה של systemctl
כדי לאתחל את שרת ה-MongoDB כדי שהשינויים ייכנסו לתוקף.
3. לבסוף, הפעל את הפקודה הבאה כדי לראות את מצב השירות של MongoDB שלך.
הנה, תוכל לראות שורה שאומרת פעיל: פעיל (פועל) בטקסט ירוק, שמציינת שהשרת שלך MongoDB פועל ומוכן לקבל חיבורים.

בדיקת עבודת האימות
אתה כעת הפעלת אימות, אך איך תדע שזה עובד? תתחבר כמשתמש מנהל לבדוק ולוודא שהאימות שלך עובד על ידי צפייה במסדי נתונים.
1. הפעל את הפקודות הבאות כדי לגשת לקושחה של mongo
כפי שעשית בקטע "יצירת משתמש מנהל מיועד" (שלב אחד).
כפי שאתה יכול לראות למטה, אתה לא מקבל יותר את האזהרה בקרת גישה אינה מופעלת… בנוגע להפעלת האימות. במקום זאת, תקבל הודעה שאומרת לך את גרסת השרת שלך ואת המקור של MongoDB.

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

עם האימות מופעל, החיבור יכשל אם מישהו ינסה לגשת למסד הנתונים באמצעות מחרוזת חיבור שאין לה את פרטי הכניסה הנכונים.
אימות מחרוזות החיבור הוא חלק מרכזי באבטחת MongoDB, ועליך ליישם אימות בכל שכבות היישום. כל החיבורים ל־MongoDB חייבים להשתמש במחרוזת אימות הכוללת פרטי כניסה. פרטי הכניסה אלו כוללים את שם המשתמש והסיסמה הנכונים.
3. הפעל את הפקודה exit
כדי לצאת ממסד הנתונים של MongoDB.
4. כעת, הרץ את הפקודה למטה כדי להתחבר למסד הנתונים של MongoDB עם שם המשתמש של המשתמש הניהולי שנוצר עם הסיסמה (-u
) והסיסמה (-p
) שנוצרה. החלף AdminATA
בשם המשתמש שיצרת בסעיף "יצירת משתמש ניהולי מיוחד" (שלב ארבעה).
הפרמטר --authenticationDatabase
מגיד למסד הנתונים של MongoDB לאמת נגד מסד הנתונים admin
.
5. ספק את הסיסמה שלך עבור המשתמש הניהולי שלך כאשר מתבקש.


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

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