رفتن به محتوای اصلی
iServer24 | ارائه‌کننده سرورهای ابری و اختصاصی
آموزش نصب و ایمن‌سازی Redis روی Ubuntu

آموزش نصب و ایمن‌سازی Redis روی Ubuntu

Redis یک دیتابیس NoSQL از نوع Key-Value در حافظه (In-Memory) است که معمولاً برای کش، سشن کاربران، صف پردازش و داده‌های بلادرنگ استفاده می‌شود. مشکل اینجاست که Redis به‌صورت پیش‌فرض هیچ امنیتی فعال ندارد و فرض می‌کند در یک شبکه کاملاً قابل اعتماد اجرا می‌شود.

Redis یک دیتابیس NoSQL از نوع Key-Value در حافظه (In-Memory) است که معمولاً برای کش، سشن کاربران، صف پردازش و داده‌های بلادرنگ استفاده می‌شود. مشکل اینجاست که Redis به‌صورت پیش‌فرض هیچ امنیتی فعال ندارد و فرض می‌کند در یک شبکه کاملاً قابل اعتماد اجرا می‌شود.

در این آموزش Redis را روی Ubuntu نصب می‌کنیم، عملکرد آن را تست می‌کنیم و سپس با چند تنظیم مهم آن را ایمن می‌کنیم:

  • محدود کردن دسترسی فقط به لوکال‌هاست

  • فعال‌سازی رمز عبور

  • غیرفعال یا تغییر نام دستورات خطرناک

این مراحل برای Ubuntu 22.04 و نسخه‌های LTS جدید کاملاً قابل استفاده است.


پیش‌نیازها


چرا باید Redis را ایمن کنیم؟

Redis به طور پیش‌فرض:

  • رمز عبور ندارد

  • روی همه اینترفیس‌ها گوش می‌دهد

  • همه دستورات مدیریتی فعال هستند

اگر پورت 6379 از اینترنت در دسترس باشد، هر کسی می‌تواند:

  • تمام داده‌ها را پاک کند (FLUSHALL)

  • تنظیمات سرور را تغییر دهد (CONFIG SET)

  • حتی در برخی سناریوها فایل روی سیستم بنویسد

پس ایمن‌سازی Redis شوخی نیست.


مرحله 1: نصب Redis

2 خط
sudo apt update
sudo apt install redis-server
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

ویرایش فایل تنظیمات:

sudo nano /etc/redis/redis.conf
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

گزینه زیر را پیدا کنید و مقدارش را تغییر دهید:

supervised systemd
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

سپس سرویس را ریستارت کنید:

2 خط
sudo systemctl restart redis
sudo systemctl status redis
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

باید وضعیت active (running) باشد.


مرحله 2: تست Redis

ورود به کنسول:

redis-cli
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

تست ارتباط:

ping
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

خروجی باید:

PONG
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

تست ذخیره داده:

2 خط
set test "ok"
get test
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

مرحله 3: محدود کردن دسترسی به لوکال

فایل تنظیمات را باز کنید:

sudo nano /etc/redis/redis.conf
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

این خط باید فعال باشد (بدون #):

bind 127.0.0.1 ::1
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

ریستارت:

sudo systemctl restart redis
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

بررسی:

ss -tlnp | grep 6379
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

باید فقط روی 127.0.0.1 گوش دهد.


مرحله 4: فعال کردن رمز عبور

در همان فایل:

requirepass رمز_خیلی_قوی_اینجا
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

برای ساخت رمز قوی:

openssl rand 60 | base64
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

ریستارت سرویس:

sudo systemctl restart redis
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

تست:

2 خط
redis-cli
set key 1
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

باید خطای NOAUTH بدهد.

سپس:

3 خط
auth پسورد_شما
set key 1
get key
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

مرحله 5: غیرفعال کردن دستورات خطرناک

در فایل تنظیمات اضافه کنید:

4 خط
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
rename-command SHUTDOWN SHUTDOWN_SECURE
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

ریستارت:

sudo systemctl restart redis
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

حافظه و ماندگاری داده‌ها

Redis داده را در RAM نگه می‌دارد. دو روش ذخیره دارد:

روشتوضیح
RDBاسنپ‌شات دوره‌ای
AOFثبت تمام عملیات نوشتن

فعال‌سازی AOF:

appendonly yes
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

همچنین در محیط تولید بهتر است مقدار حافظه را محدود کنید:

2 خط
maxmemory 512mb
maxmemory-policy allkeys-lru
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

خطاهای رایج

Redis بالا نمی‌آید

sudo journalctl -u redis -n 50
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

NOAUTH Authentication required

پسورد تنظیم شده ولی AUTH نزده‌اید.

Connection refused از سیستم دیگر

Redis فقط روی localhost فعال است. برای دسترسی راه دور از SSH Tunnel یا VPN استفاده کنید.


مزایا و محدودیت‌ها

مزایا

  • کاهش سطح حمله

  • جلوگیری از پاک شدن تصادفی داده

  • مدیریت پایدار توسط systemd

محدودیت

  • داده‌ها به‌صورت پیش‌فرض رمزنگاری نمی‌شوند

  • هر کسی دسترسی شل داشته باشد می‌تواند پسورد Redis را ببیند


سوالات متداول

پورت Redis؟
6379

آیا باید Redis روی اینترنت باز باشد؟
نه. هرگز.

چطور رمز را تغییر دهم؟
ویرایش redis.conf و ریستارت سرویس.


جمع‌بندی

حالا Redis شما:

  • فقط روی localhost در دسترس است

  • رمز عبور دارد

  • دستورات خطرناک غیرفعال شده‌اند

این تنظیمات Redis را برای کش، سشن و کارهای داخلی سرور کاملاً امن می‌کند. امنیت Redis فقط به خودش وابسته نیست؛ امنیت کل سرور، SSH و فایروال هم حیاتی است.

زیرساخت ابری برای اجرای همین آموزش

سرور ابری ساعتی را برای Docker، Ubuntu و DevOps راه‌اندازی کنید — پرداخت به میزان مصرف یا ماهانه.

ادامه یادگیری:Docker·Ubuntu·VPS