دیتابیس Redis، یک ساختمان داده متن باز(Open-source) میباشد که از RAM یا همان حافظه اصلی فضایی که سایت در آن میزبانی شده است، برای ذخیره اطلاعات آن استفاده میکند. Redis، معمولا به عنوان یک دیتابیس انعطاف پذیر استفاده میشود، که از الگوی key-value برای ذخیره اطلاعات استفاده میکند. Redis به ما قابلیت ایجاد یک عملکرد مناسب در انجام عملیات مختلف میدهد که در این حین، از انواع حالات ذخیره داده ها مانند: رشته(String)، هش(Hash)، لیست(List) و… پشتیبانی میکند. در این صورت، Redis برای برنامه های real-time مانند سیستم های گفتگو آنلاین، نشست های آنلاین و مقادیری که مدام بهروزرسانی میشوند، مناسب است.
در این آموزش، نصب Redis بر روی یک سرور با سیستم عامل Ubuntu را می آموزیم.
نصب Redis را انجام دهید و مراحل ایمن سازی آن را شروع کنید
معمولا، Redis در مخزن های پیشفرض سیستم عامل Ubuntu موجود میباشد، پس با استفاده از apt package manager میتوانیم آن را نصب کنیم. بعد از انجام نصب Redis، نیاز است مراحل مربوط به احراز هویت با استفاده از پسورد، اتصال Redis به localhost و همچنین تغییر دستورات خطرناکی که ممکن است به سیستم عامل ما آسیب بزند را انجام دهیم.
قدم اول: Redis را نصب کنید
قبل از نصب Redis، پکیج های مخزن سیستم عامل Ubuntu را با استفاده از دستور Update، بهروزرسانی کنید.
sudo apt update
بعد از اتمام مراحل بهروزرسانی، Redis را نصب کنید.
sudo apt install redis-server -y

قدم دوم: Redis را پیکربندی کنید
بعد از اینکه روند نصب تکمیل شد، فایل پیکربندی Redis را ویرایش کنید. فایل Config به شما این اجازه را میدهد تا Redis را بر اساس نیاز های خود تنظیم کنید که به سبب آن عملکرد، امنیت و دیگر بخش های آن را بهبود ببخشید.
- فایل پیکربندی یا config را با یک ویرایشگر باز کنید (میتوانید از nano استفاده کنید)
sudo nano /etc/redis/redis.conf
- سپس، در کدهای فایل، بخشی را که شامل supervised میشود را پیدا کنید. به صورت پیشفرض، این خط بر روی گزینه no یا غیرفعال تنظیم شده است. در هر صورت، برای تنظیم Redis به عنوان یک سرویس قابل اجرا، این بخش را بر روی گزینه systemd تنظیم کنید.

- تغییرات را ذخیره کنید و فایل را ببندید. در ویرایشگر nano، ذخیره و بستن فایل با Ctrl+X انجام میشود.
- در نهایت، فایل سرویس مربوط به Redis را ریاستارت کنید تا تغییرات انجام شده اعمال شود.
sudo systemctl restart redis
قدم سوم: نصب Redis را تایید کنید
برای بررسی اینکه سرویس در حال اجرا میباشد و به درستی کار میکند، نیاز است اتصال به سرور را تست کنید و بررسی کنید که قابلیت تنظیم key-value در آن وجود داشته باشد.
- وضعیت سرویس Redis را بررسی کنید
با استفاده از دستور زیر، وضعیت سرویس Redis را بررسی کنید:
sudo systemctl status redis
خروجی باید شامل active (running) باشد:

در صورتی که وضعیت سرویس inactive بود، با دستور زیر روند فعالسازی آن را شروع کنید:
sudo systemctl start redis
- اتصال Redis را بررسی کنید
وضعیت اتصال به سرور Redis را با ابزار redis-cli بررسی کنید. این ابزار محیط دستورات redis یا همان Command-Line آن میباشد. با استفاده از دستور زیر به آن متصل شوید:
redis-cli
این دستور شمار را به محیط دستورات redis-cli میکند. برای بررسی اتصال به سرور، دستور زیر را وارد کنید:
ping
سرویس باید با بازگردانی PONG پاسخ دهد:

- تنظیم key-value را در Redis بررسی کنید
از آنجایی که Redis یک دیتابیس NoSQL که از حافظه اصلی برای ذخیره اطلاعات استفاده میکند، مهم است تا مقادیر اختصاص داده شده در key-value آن را بررسی کنیم و از دسترسی آن مطمئن شویم.
ابتدا به redis-cli متصل شوید:
redis-cli
سپس با استفاده از دستور set یک key جدید در آن تعریف کنید:
set key1 "You have successfully set up a key-value pair!"
در این مثال، key جدید ما به عنوان key1 نام گذاری شده است و شامل متنی است که در مقابل آن نوشته شده است.
بعد از وارد کردن کلید Enter، محیط دستور باید با پیام OK به شما پاسخ دهد:

حالا دسترسی مقدار اختصاص داده شده به key خود را با استفاده از دستور get بررسی کنید.
get key1
خروجی باید شامل پیامی باشد که در key اختصاص داده اید:

با دستور quit از محیط دستورات Redis خارج شوید.
quit
قدم چهارم: Redis را ایمنسازی کنید
امنیت Redis بسیار حیاتی و مهم است، چون به صورت پیشفرض، Redis برای محیط های شبکه ای مطمئن ساخته شده است و فاقد مکانیزم های داخلی ضروری مانند احراز هویت، رمزنگاری و کنترل دسترسی ها میباشد. یک پیکربندی Redis در اینترنت و یا در یک شبکه ناامن میتواند باعث ایجاد یک آسیب وحشتناک در شبکه ما شود.
- سیستم احراز هویت Redis را راهاندازی کنید.
دیتابیس Redis شامل یک ویژگی احراز هویتی میباشد، که میتوان آن را به یک لایه حفاظتی برای آن تبدیل کرد. این ویژگی به صورت پیشفرض فعال نشده است. همچنین نیاز است تا فایل پیکربندی یا Config را برای راهاندازی سیستم authentication ویرایش کنیم.
فایل پیکربندی Redis را با یک ویرایشگر متن، باز کنید. میتوانید از nano استفاد کنید:
sudo nano /etc/redis/redis.conf
در فایل پیکربندی، بخشی از کد که شامل requirepass میباشد را پیدا کنید. این بخش در زیر قسمت SECURITY قرار دارد و به صورت پیشفرض، کامنت شده است. با پاک کردن علامت # قبل از requirepass، آن را از حالت کامنت خارج کنید.
در مقابل requirepass و با یک فاصله، یک پسورد قوی برای آن انتخاب کنید.

فایل را ذخیره کنید و از آن خارج شوید.
مجدد سرویس Redis را ریاستارت کنید.
sudo systemctl restart redis
پس از اینکه سیستم authentication را در Redis پیکربندی کنیم، ایجاد هیچ کوئری(Query) یا وارد کردن هیچ دستوری تا زمانی که احراز هویت را انجام ندهیم ممکن نخواهد بود. برای مثال، اگر مجدد وارد redis-cli شوید و دستور ping را در آن وارد کنید، خروجی پیام (error) NOAUTH Authentication required. را نمایش خواهد داد.
تنها راه برای احراز هویت نیز، وارد کردن همان پسوردی میباشد که در فایل پیکربندی Redis وارد کرده اید.
از دستور زیر برای احراز هویت استفاده کنید. به جای [your_password] نیاز است پسوردی که تنظیم کرده اید را وارد کنید.
auth [your_password]
پس از وارد کردن این دستور، پیام OK به شما نمایش داده خواهد شد:

- دیتابیس Redis را به localhost سرور متصل کنید
روندی که برای نصب Redis تا به حال طی کرده اید، شامل این نکته است که Redis تنها از طریق localhost سرور قابل دسترس است. محدود کردن این دسترسی یکی از مهمترین بخش های فراهم کردن امنیت شبکه ای Redis میباشد.
برای جلوگیری از دسترسی خارجی به localhost، به صورت زیر عمل کنید.
فایل پیکربندی Redis را مجدد باز کنید:
sudo nano /etc/redis/redis.conf
در کدهای فایل به بخش NETWORK بروید. سپس کد bind 127.0.0.1 ::1 را از حالت کامنت خارج کنید (با پاک کردن # کد از حالت کامنت خارج میشود)

فایل را ذخیره کنید و از آن خارج شوید.
سرویس Redis را ریاستارت کنید تا تغییرات در آن اعمال شود.
sudo systemctl restart redis
- دستورات خطرناک را تغییر دهید
یکی دیگر از راه های محافظت از اطلاعاتتان این است که برخی از دستورات خاص را غیرفعال یا تغییرنام دهید تا دیگر قابل استفاده نباشند. این کار، یک روش برای افزایش امنیت میباشد که به موجب آن از استفاده دستوراتی که ممکن است باعث آسیب به سیستم شوند، جلوگیری میکند.
فایل پیکربندی Redis را باز کنید:
sudo nano /etc/redis/redis.conf
بخش SECURITY را در آن پیدا کنید. به بخش پایین آن بروید تا Command renaming# را پیدا کنید. این بخش شامل مثال هایی است که به طریق آن متوجه میشویم چگونه میتوانیم یک دستور را تغییر دهیم و یا غیرفعال کنیم.
به عنوان مثال برای تغییرنام دستور CONFIG، خط زیر را وارد میکنیم. در قسمت [new_command_name] باید دستور دلخواه خود را وارد کنیم.
rename-command CONFIG [new_command_name]
در این مثال، دستور config را به sys_admin_config_836 تغییر دادیم. این کار برای این است که کاربران معمولی، نتوانند به آسانی دستوری را که تنظیم کرده ایم پیدا کنند:

برای غیرفعال کردن یک دستور به صورت کامل و یا اصطلاح، kill کردن آن دستور به طوری که دیگر قابل استفاده نباشد، از همین روش اما با استفاده از یک String خالی استفاده میکنیم.
به عنوان مثال، برای غیرفعال کردن دستور CONFIG، این خط را به فایل پیکربندی اضافه میکنیم:
rename-command CONFIG ""
سپس طبق معمول برای اعمال شدن تغییرات، یکبار سرویس Redis را غیرفعال میکنیم.
sudo systemctl restart redis