Redis מועיל למטרות רבות, אחת מהן היא מטמון. באפשרותך גם להשתמש ב-Redis כאחסון נתונים ראשי או אפילו כמחליף למסד נתונים. אבל איך אפשר לבצע התקנת Redis מאובטחת? התקנת Redis יכולה להיות מטרחנית, ואם אינך זהיר, ייתכן ותקבל הרבה שגיאות. מזל טוב עליך, המדריך הזה מכסה אותך.
במדריך זה, תלמד כיצד להתקין את Redis בצורה מאובטחת על מערכת ה-Linux שלך, יחד עם כמה טיפים למניעת שגיאות נפוצות.
קרא וחסוך לעצמך את הכאבי ראש מתיקוני שגיאות התקנת Redis!
דרישות מוקדמות
מדריך זה יהיה הדגמה מעשית. אם ברצונך לעקוב, היה בטוח שיש לך את הדברים הבאים:
- מחשב Ubuntu 20.04 LTS – מדריך זה משתמש ב-Ubuntu 20.04 LTS, אך ההוראות דומות לרוב ההפצות של Linux.
- שורש הרשאות או משתמש לא-שורש עם
הרשאות sudo
התקנת Redis עם מנהל החבילות APT
ישנם כמה דרכים להתקין את Redis על Ubuntu, אך במדריך זה תבחר במנהל החבילות APT כדי להתקין את Redis.
Redis נכתב בשפת C, כך שתצטרך להרכיב את Redis מקור הקוד שלו באופן ידני. יהיו צורך בהתקנת מספר תלויות ותהליך הבנייה לא תמיד מוצלח.
הרכבת Redis ממקור אינה מומלצת, אך היתרון הוא שניתן להתאים אישית את ההתקנה שלך אם תרצה. תוריד את קוד המקור, ותגדיר אותו באופן ידני.
פתח את הטרמינל שלך והפעל את הפקודה apt update
למטה כדי לוודא שיש לך את רשימות החבילות העדכניות ביותר.

עכשיו, הפעל את הפקודה apt install
למטה כדי להתקין את Redis על המכשיר שלך.
הפקודה למטה משתמשת במנהל החבילות apt
כדי להוריד ולהתקין את חבילת השרת של Redis ממאגרי המידע של Ubuntu למכשיר שלך. הדגל -y
אומר ל-apt
לקבל פניות במהלך התהליך התקנה באופן אוטומטי.

קביעת הגדרות בקובץ Redis.conf כדי להפעיל את Redis כשירות
אתה רק התקנת את Redis, אך הוא עדיין לא מוכן לשימוש. לפני שתוכל להתחיל להשתמש ב-Redis, תצטרך תחילה להגדיר את קובץ ה-redis.conf.
קובץ התצורה redis.conf כלול עם חבילת ה-Redis שהתקנת ומאוחסן בתיקיית /etc/redis/ כברירת מחדל. קובץ זה מכיל את כל אפשרויות התצורה עבור Redis.
סיומת הקובץ .conf היא לוגית, כי היא עוקבת אחר דפוס קונבנציונלי. השימוש בסיומת .conf נפוץ גם בתוכניות אחרות. לדוגמה, שרת האינטרנט Apache, משתמש בסיומת קובץ .conf לקובץ ההגדרות הראשי שלו.
1. הרץ את הפקודה הבאה של systemctl
כדי ל-עצור
את שירות ה-redis-server
. העצירת השירות של Redis היא פרקטיקה מומלצת כאשר אתה מתחיל לעבוד עם Redis לראשונה.
2. לאחר מכן, פתח את קובץ ה-/etc/redis/redis.conf בעורך הטקסט המועדף עליך.
מצא את ההוראה supervised, והגדר אותה ל-systemd, כפי שמוצג למטה, ושמור את השינויים. בכך תודיע למערכת ההפעלה להפעיל את Redis כשירות.

3. כעת, הפעל את הפקודה systemctl restart
למטה כדי לאתחל את שירות ה־Redis (redis.service
), מאחר שהשירות אינו מודע לשינויים עדיין.
4. לבסוף, הפעל את הפקודה systemctl status
למטה כדי לראות האם ה־Redis פועל.
כפי שניתן לראות למטה, הפלט מראה שהשירות Redis פועל.

בדיקת פעולת השרת של Redis
הגדרת ואימות שהשירות של Redis פועל בצורה פעילה, אך זה לא אומר שהשרת של Redis עובד. איך לבדוק אם השרת של Redis פועל כמו שצריך? התחבר לשרת Redis ושלח פקודות כדי לראות האם השרת מגיב.
1. הפעל את הפקודה redis-cli
למטה כדי להתחבר לשרת Redis. redis-cli
היא ממשק השורת פקודה של Redis, המאפשרת לך לשלוח פקודות לשרת ולבדוק את מצבו.
כפי שניתן לראות למטה, תוכל לראות שאתה במערכת השרת של Redis (127.0.0.1:6379>). הפקודה redis-cli
מנסה להתחבר לשרת Redis בכתובת 127.0.0.1:6379
כברירת מחדל.

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

אולי עדיין אתה מהוסס; הרץ את הפקודה set
למטה. הפקודה set
היא פקודת Redis שמגדירה זוג מפתח-ערך במסד נתונים.
כפי שאתה יכול לראות, הפקודה set מחזירה "OK", מה שמציין כי שירות ה-Redis פועל כהלכה.

3. הרץ את הפקודה exit
למטה כדי לצאת מה-redis-cli
. בכך, אתה סוגר את החיבור לשרת ה-Redis.
קישור של שרת ה-Redis ל־localhost
הנך כעת בודק שהשרת של Redis פועל כהלכה, אך יתכן כי יהיה נגיש ממכשירים אחרים ברשת שלך גם. התנהגות זו אינה רצויה, ורגיל לרצות להגן על שרת ה-Redis שלך מאנשים זרים.
קישור של שרת ה-Redis ל־localhost מגדיר התנהגות שרק המחשב שבו התקנת את Redis יכול לגשת לשרת ה-Redis.
1. פתח את הקובץ /etc/redis/redis.conf בעורך הטקסט שלך.
2. אתר את השורה שאומרת bind 127.0.0.1 ::1
ובטל את ההערה על השורה על ידי מחיקת סימן המספר (#
) בתחילת השורה.

3. כעת, הרץ את הפקודה למטה כדי לאתחל את שירות ה־redis-server
.
4. לבסוף, הרץ את הפקודה הבאה כדי לבדוק האם השרת שלך מחובר ל־localhost. הפקודה netstat -lnp
מפרטת את כל חיבורי הרשת הפעילים, והחלק grep redis
מסנן את הפלט לשורות שמכילות "redis".
-lnp
מתייחס לתקשורת של פרוטוקול שם מקומי, פרוטוקול תקשורת המשמש במערכות בדומה ל-UNIX כדי לפתור שמות מאחסנים לכתובות IP.
ניתן לראות למטה שהשרת Redis מאזין כעת רק בממשק המקומי (127.0.0.1:6379
). משקף את השינוי בקובץ התצורה, ניתן לראות כי רק ממשק המקומי מופיע בתחתית רשימת החיבורים האינטרנטיים הפעילים שלך (tcp
).
כעת, אף תקן אחר ברשת שלך לא יכול להתחבר לשרת Redis שלך.

אבטחת חיבור שרת Redis בעזרת סיסמה
בנקודה זו, אין ל-Redis הגדרת הצוברים לדרוש מהמשתמשים אימות באמצעות סיסמה. כל מי שידע את כתובת ה-IP או שם המארח של השרת Redis שלך יכול להתחבר אליו ולשנות את הנתונים שלו.
כיצד להגן על שרת ה-Redis שלך? הגדר סיסמה כדי לדרוש מהמשתמשים אימות בעת התחברות לשרת ה-Redis שלך.
1. פתח מחדש את קובץ התצורה redis.conf בעורך טקסט/קוד שלך.
2. לאחר מכן, הגדר סיסמה חזקה עם ההוראות הבאות:
- חפש
requirepass foobared
תחת הקטעSECURITY
- מחק את סימן המספר (
#
) בתחילת השורה - החלף את
foobared
בסיסמה חזקה שבחרת ושמור את השינויים

3. הרץ את הפקודות הבאות כדי לאתחל ולהתחבר מחדש לשרת ה-Redis שלך.
4. כעת, הרץ את הפקודה ping
כדי לראות אם תקבל תגובה מהשרת.
שלמטה, ניתן לראות הודעת שגיאה שאומרת NOAUTH נדרש אימות. ההודעה מציינת שנדרשת סיסמת אימות כדי לגשת לשרת Redis שלך מרחוק.

5. הפעל את הפקודה auth
למען האימות, ואז הזן את הסיסמה שלך כדי לאמת את החיבור לשרת Redis שלך.
תקבל תשובת OK כאשר האימות הצליח, כמו בדוגמה למטה.

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

ביטול פקודות מסוכנות להגנה על שרת Redis שלך
הגדרת סיסמה לאימות החיבור לשרת Redis שלך אינה אומרת שיש לו 100% הגנה. באופן ברירת מחדל, Redis כולל מספר פקודות מסוכנות שמאפשרות למשתמשים לשנות את הנתונים במסד הנתונים שלך.
כאשר הן נופעות על ידי משתמשים לא מאומתים, פקודות אלו מאפשרות לפורצים לקרוא, לשנות, להרוס, ואפילו למחוק את הנתונים שבמסד הנתונים שלך.
למטה אין רשימה כוללת מכיוון של שרת Redis שלך ייתכן ויש לו פקודות מסוכנות נוספות, אך ברוב המקרים, אלו הן הפקודות המסוכנות:
כדי לחזק את שרת Redis שלך נוסף, שנה את שמות הפקודות המסוכנות אלו בקובץ redis.conf:
1. פתח את קובץ redis.conf בעורך הטקסט שלך וחפש את קטע Command renaming.
שנה את הפקודות למחרוזת ריקה כדי להשבית אותן לפי התחביר הבא. החלף הפקודה
בפקודה המדויקת להשבתה.
לדוגמה, כדי להשבית את הפקודה CONFIG
צריך לשנות את שמה למחרוזת ריקה, כפי שמוצג למטה, ולשמור את השינויים. הגרשיים הכפולים (“”) מציינים מחרוזת ריקה שמציינת השבתת פקודה.

CONFIG
command 2. צא מעורך הטקסט והפעל את הפקודה למטה כדי לאתחל מחדש את שרת ה-Redis.
3. כעת הפעל את הפקודות הבאות כדי להתחבר לשרת ה-Redis שלך.
4. לבסוף, הפעל את הפקודה config get
כדי לבדוק שהפקודה CONFIG
מושבתת.
תקבל תגובת ERR unknown command config
, כפי שמוצג למטה, המציינת שהפקודה CONFIG
מושבתת.

CONFIG
command אם הפקודה config get requirepass
עוברת בהצלחה, היא מבקשת את סיסמת ה-Redis שלך כדי לאמת את החיבור לשרת ה-Redis שלך.
כעת ששינית בהצלחה את שם הפקודה המסוכנת בכדי להגן על שרת ה-Redis שלך. כעת המשך להשבית פקודות מסוכנות נוספות בקובץ redis.conf.
חסימת בקשת חיבור לשרת ה-Redis עם חומת אש
דרך נוספת לאבטח את שרת ה-Redis שלך היא להגדיר חומת אש. הגדרת חומת אש מחייבת אותך לאפשר רק את הפורט הדרוש עבור כל שירות הרץ על השרת שלך.
לדוגמה, אם אתה מפעיל את Redis על השרת שלך בפורט 6379
, אז הפורט הזה הוא מה שעליך לפתוח. אם תצטרך להרשות גישה מכתובת IP ספציפית או טווח של כתובות, תוכל להוסיף את הכתובות האלה לחוקי הגישה של הגישה.
כדי להגדיר חומת אש, תתקין תחילה כלי תצורת חומת אש. בדוגמה זו אנו משתמשים ב־UFW, כלי תצורת חומת אש נפוץ ב־Linux. אך תוכל גם להשתמש בכלי אחר, כמו iptables, להגדרת חומת אש.
1. הרץ את הפקודה הבאה כדי להתקין את UFW על המכונה שלך.
2. לאחר מכן, הרץ את הפקודה למטה כדי להפעיל את UFW.
הקלד 'Y' כאשר תקבל את הערה המופיעה למטה כדי להמשיך להריץ את הפקודה.

3. הרץ את הפקודה ufw
להוספת כלל, שמאפשר (allow
) תעבורה בפורט 6379
עבור שרת ה־Redis שלך. החלף את כתובת ה־IP 11.22.33.44
בכתובות ה־IP של המשתמשים הרצויים.

6379
4. לבסוף, הרץ את הפקודה למטה כדי לוודא שהוספת את כלל החומת האש בהצלחה. הפקודה בודקת את status
החומת האש שלך.
ניתן לראות בפלט למטה כי החומת האש פעילה וכי יש לה כלל להרשאת תעבורה בפורט 6379
עבור Redis מכתובת ה־IP 11.22.33.44
.

עכשיו, משתמשים כלשהם עם כתובת ה-IP 11.22.33.44
יכולים להתחבר ל-Redis דרך פתח ה-6379
ויהיו צריכים לאמת עם סיסמה. ניתן להוסיף פורטים נוספים עבור שירותים נוספים בדרך דומה.
סיכום
במהלך המדריך הזה, למדת כיצד להתקין ולאבטח את שרת ה-Redis שלך על ידי שינוי של פקודות מסוכנות למחרוזות ריקות והתקנת חומת אש.
עם הידע החדש שזכית בו, תוכל ליהנות מכל היתרונות של Redis בלי לדאוג לחשיפת השרת שלך לסיכונים לא נדרשים.
רוצה ללמוד עוד? למה לא להתחיל עם איך לאבטח שרת Redis ב-Kubernetes?