Redis یک دیتابیس NoSQL از نوع Key-Value در حافظه (In-Memory) است که معمولاً برای کش، سشن کاربران، صف پردازش و دادههای بلادرنگ استفاده میشود. مشکل اینجاست که Redis بهصورت پیشفرض هیچ امنیتی فعال ندارد و فرض میکند در یک شبکه کاملاً قابل اعتماد اجرا میشود.
در این آموزش Redis را روی Ubuntu نصب میکنیم، عملکرد آن را تست میکنیم و سپس با چند تنظیم مهم آن را ایمن میکنیم:
-
محدود کردن دسترسی فقط به لوکالهاست
-
فعالسازی رمز عبور
-
غیرفعال یا تغییر نام دستورات خطرناک
این مراحل برای Ubuntu 22.04 و نسخههای LTS جدید کاملاً قابل استفاده است.
پیشنیازها
-
سرور Ubuntu
-
کاربر دارای دسترسی sudo
-
فعال بودن فایروال (مثل UFW)
چرا باید Redis را ایمن کنیم؟
Redis به طور پیشفرض:
-
رمز عبور ندارد
-
روی همه اینترفیسها گوش میدهد
-
همه دستورات مدیریتی فعال هستند
اگر پورت 6379 از اینترنت در دسترس باشد، هر کسی میتواند:
-
تمام دادهها را پاک کند (
FLUSHALL) -
تنظیمات سرور را تغییر دهد (
CONFIG SET) -
حتی در برخی سناریوها فایل روی سیستم بنویسد
پس ایمنسازی Redis شوخی نیست.
مرحله 1: نصب Redis
ویرایش فایل تنظیمات:
گزینه زیر را پیدا کنید و مقدارش را تغییر دهید:
سپس سرویس را ریستارت کنید:
باید وضعیت active (running) باشد.
مرحله 2: تست Redis
ورود به کنسول:
تست ارتباط:
خروجی باید:
تست ذخیره داده:
مرحله 3: محدود کردن دسترسی به لوکال
فایل تنظیمات را باز کنید:
این خط باید فعال باشد (بدون #):
ریستارت:
بررسی:
باید فقط روی 127.0.0.1 گوش دهد.
مرحله 4: فعال کردن رمز عبور
در همان فایل:
برای ساخت رمز قوی:
ریستارت سرویس:
تست:
باید خطای NOAUTH بدهد.
سپس:
مرحله 5: غیرفعال کردن دستورات خطرناک
در فایل تنظیمات اضافه کنید:
ریستارت:
حافظه و ماندگاری دادهها
Redis داده را در RAM نگه میدارد. دو روش ذخیره دارد:
| روش | توضیح |
|---|---|
| RDB | اسنپشات دورهای |
| AOF | ثبت تمام عملیات نوشتن |
فعالسازی AOF:
همچنین در محیط تولید بهتر است مقدار حافظه را محدود کنید:
خطاهای رایج
Redis بالا نمیآید
NOAUTH Authentication required
پسورد تنظیم شده ولی AUTH نزدهاید.
Connection refused از سیستم دیگر
Redis فقط روی localhost فعال است. برای دسترسی راه دور از SSH Tunnel یا VPN استفاده کنید.
مزایا و محدودیتها
مزایا
-
کاهش سطح حمله
-
جلوگیری از پاک شدن تصادفی داده
-
مدیریت پایدار توسط systemd
محدودیت
-
دادهها بهصورت پیشفرض رمزنگاری نمیشوند
-
هر کسی دسترسی شل داشته باشد میتواند پسورد Redis را ببیند
سوالات متداول
پورت Redis؟
6379
آیا باید Redis روی اینترنت باز باشد؟
نه. هرگز.
چطور رمز را تغییر دهم؟
ویرایش redis.conf و ریستارت سرویس.
جمعبندی
حالا Redis شما:
-
فقط روی localhost در دسترس است
-
رمز عبور دارد
-
دستورات خطرناک غیرفعال شدهاند
این تنظیمات Redis را برای کش، سشن و کارهای داخلی سرور کاملاً امن میکند. امنیت Redis فقط به خودش وابسته نیست؛ امنیت کل سرور، SSH و فایروال هم حیاتی است.

