קוראים כמוך עוזרים לתמוך ב-MUO. כאשר אתה מבצע רכישה באמצעות קישורים באתר שלנו, אנו עשויים להרוויח עמלת שותף. קרא עוד.

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

1. השתמש במנהור SSH במקום בחיבור מרחוק

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

מכיוון ששרתים מופעלים בדרך כלל על הפצת לינוקס, הדוגמאות שלהלן מבוססות על הפצת דביאן. הקובץ שבו אתה צריך להשתמש עבור מנהור SSH במקום חיבור מרחוק וכדי לסגור את יציאת ברירת המחדל לעולם החיצון הוא /etc/mysql/my.cnf. בקובץ זה, עליך לפתוח שדה בשם [mysqld] וכתוב את הפקודה הבאה:

[mysqld]
לִקְשׁוֹר-כתובת=127.0.0.1

לאחר תהליך זה, אל תשכח לשמור את הקובץ הזה ולהפעיל מחדש את השירות עם הפקודה הבאה:

instagram viewer
sudo systemctl הפעל מחדש את mysqld
# או
סודוsystemctlאיתחולmariadb.שֵׁרוּת

עם זה, שירות MySQL יקשיב רק לכתובת המקומית.

אם אתה משתמש ב-MariaDB, אתה יכול גם לבדוק /etc/mysql/mariadb.conf.d/50-server.cnf ולבדוק אם יש הגדרה ל כתובת כריכה.

כעת, לאחר שהגדרת את כתובת ה-binding 127.0.0.1, שהוא מארח מקומי, אתה יכול להפעיל סריקת Nmap ולבדוק את הפלט:

אתה יכול לראות את יציאת MySQL שכן 127.0.0.1 מייצג את המארח המקומי שאתה רואה. אתה יכול לנסות ולשנות את כתובת האיגוד שוב כדי לוודא שזה עובד:

[mysqld]
לִקְשׁוֹר-כתובת=127.5.5.1

לאחר מכן שמור את /etc/mysql/my.cnf קובץ והפעל מחדש את שירות MySQL. אם תבצע סריקת Nmap שוב בשלב זה, אינך אמור לראות את כתובת הקישור הזו ב-localhost.

ברגע שאתה יודע שזה עובד, חזור להגדרות מהשלב הראשון והגדר את כתובת ה-bind בחזרה ל-127.0.0.1 ושמור שוב.

2. הגדר מחסום גישה לקבצים מקומיים

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

אתה יכול להשתמש בפונקציה הנקראת local-infile כדי לנקוט באמצעי זהירות. לדוגמה, דמיין שיש לך קובץ בשם "/etc/secretfile.txt" ויש לך סיסמה בקובץ הזה. אם הערך של הפונקציה local-infile בקובץ /etc/mysql/my.cnf שלך הוא 1, אז הגישה פתוחה. אז אתה יכול לגשת לקובץ secretfile.txt.

הערך של הפונקציה local-infile הוא 1. הפעל מחדש את מסד הנתונים של MySQL כדי שהשינויים יתבצעו. כעת, התחבר ל-MySQL עם הפקודה הבאה ובדוק אם אתה יכול לראות את הקובץ secretfile.txt:

בחרLOAD_FILE("/etc/secretfile.txt");

זה לא קשה ללכוד את המידע בכל קובץ במחשב שלך.

כדי לפתור בעיה זו, שנה את ערך ה-local-infile בקובץ /etc/mysql/my.cnf שלך באופן הבא:

[mysqld]
מְקוֹמִי-infile=0

הפעל מחדש את שירות MySQL. התחבר מחדש ל-MySQL וחזור על השלב הקודם; לא תוכל עוד לראות את תוכן הקובץ.

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

3. הגדר משתמשי אפליקציה וסיסמאות

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

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

4. מחק משתמשים אנונימיים

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

בחר * מ mysql.user איפהמִשׁתַמֵשׁ="";
# פלט לדוגמה
ריק מַעֲרֶכֶת (0.001 שניות)

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

זרוק משתמש 'משתמש אנונימי'@'מארח מקומי';

5. בדוק את הרשאות הקובץ המקומי של MySQL

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

עיין בספריית /var/lib/mysql כדי לבדוק את ההרשאות שניתנו. מה שאתה צריך לבדוק כאן הוא האם הבעלים של כל הקבצים הוא משתמש MySQL. הפקודה הבאה תעשה את העבודה:

sudo ls -al /var/lib/mysql

הרשאות הקריאה והכתיבה של הקבצים צריכות להיות רק עבור משתמש MySQL. לאף משתמש אחר לא אמורה להיות הרשאות כלשהן.

6. השתמש ב-MySQL SSL

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

אם הם מזהים שרת MySQL במהלך תהליך זה, הם יכולים לבצע א מתקפה של Man-in-the-Middle (MitM) על שרת היעד, כלומר הם יכולים לגנוב את פרטי ההפעלה של יישומים ומשתמשים המתחברים לשרת זה. אחת הדרכים הטובות ביותר להימנע מכך היא לעשות זאת אפשר SSL בשרת MySQL.

7. קובצי יומן והיסטוריה

אתה משתמש ביומני MySQL כדי לנתח ולאתר שגיאות. אתה יכול לערוך היכן יומנים אלה נשמרים על ידי הזנת my.cnf באופן הבא:

# /etc/mysql/my.cnf
[mysqld]
עֵץ =/var/עֵץ/mylogfiles

אתה יכול לשנות את השם או המיקום של mylogfiles כרצונך. יש עוד קובץ אחד שאתה צריך לבדוק. כאשר אתה מתחבר לשרת MySQL במסוף לינוקס ומקליד פקודות שונות, שאילתות אלו נשמרות בקובץ mysql_history. אם תפעיל את הפקודה הבאה, תוכל לראות את השאילתות שבהן אתה משתמש במסוף MySQL:

cat ~/.mysql_history

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

אקו סודו "נקי"> ~/.mysql_history

לאחר מכן תוכל לבדוק שוב את תוכן הקובץ.

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

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