نمونه Redis مدیریت شده می تواند مزایایی مانند دسترسی بالا و به روزرسانی های خودکار را ارائه دهد. با این حال ، هر زمان که با یک سرور مجازی پایگاه داده از راه دور ارتباط برقرار کنید ، خطر حمله گران برای جاسوسی اطلاعات حساس ارسال شده به آن را به همراه دارد.
redis-cli ، رابط خط فرمان Redis ، به طور مستقیم از TLS ، یعنی پروتکل رمزنگاری که امکان برقراری ارتباط امن از طریق شبکه را فراهم می کند، پشتیبانی نمی کند. این بدان معنی است که بدون پیکربندی بیشتر ، redis-cli راهی مطمئن برای اتصال به یک سرور مجازی Redis از راه دور نیست. یکی از راه های برقراری ارتباط امن با نمونه Redis ایجاد شده ، ایجاد تونلی است که از پروتکل TLS استفاده می کند.
Stunnel یک پروکسی منبع باز است که برای ایجاد تونل های ایمن استفاده می شود و به شما امکان می دهد تا با ماشین های دیگر از طریق TLS ارتباط برقرار کنید. در این راهنما ، ما نصب و پیکربندی Stunnel را نشان میدهیم تا بتوانید با redis-cli به نمونه Redisمدیریت شده با Redis متصل شوید.
پیش نیازها
برای تکمیل این راهنما ، به موارد زیر نیاز دارید:
• دسترسی به سرور مجازی اوبونتو 18.04. این سرور مجازی باید دارای کاربر غیر ریشه و امتیازات ادمین و فایروال تنظیم شده با ufw باشد. برای انجام این کار ، راهنمای راه اندازی سرور مجازی اولیه ما برای اوبونتو 18.04 را دنبال کنید.
• یک نمونه پایگاه داده Redis مدیریت شده: مراحل ذکر شده در این آموزش به طور کلی برای بانکهای اطلاعاتی مدیریت شده از هر ارائه دهنده ابری کار میکنند.
مرحله 1 – نصب Stunnel و redis-cli
هنگامی که سرور مجازی Redis را نصب می کنید ، معمولاً با redis-cli همراه است. با این وجود ، می توانید با نصب بسته redis-tools از مخازن پیش فرض اوبونتو ، redis-cli را بدون سرور مجازی Redis نصب کنید. همچنین می توانید با دانلود بسته stunnel4 ، stunnel را از مخازن پیش فرض اوبونتو نصب کنید.
اگر اخیراً این کار را نکرده اید ، دیرکتوری بسته سرور مجازی خود را به روز کنید:
$ sudo apt update

سپس بسته های redis-tools و stunnel4 را با APT نصب کنید:
$ sudo apt install redis-tools stunnel4

هنگامی که از شما درخواست شد ، تأیید کنید که می خواهید بسته ها را نصب کنید.
با اجرای دستور زیر می توانید بررسی کنید که آیا stunnel به صورت صحیح نصب شده است یا خیر:
$ sudo systemctl status stunnel4

Output
● stunnel4.service – LSB: Start or stop stunnel 4.x (TLS tunnel for network daemons)
Loaded: loaded (/etc/init.d/stunnel4; generated)
Active: active (exited) since Thu 2019-09-12 14:34:05 UTC; 8s ago
Docs: man:systemd-sysv-generator(8)
Tasks: 0 (limit: 2362)
CGroup: /system.slice/stunnel4.service

Sep 12 14:34:05 stunnel systemd[1]: Starting LSB: Start or stop stunnel 4.x (TLS tunnel for network daemons)…
Sep 12 14:34:05 stunnel stunnel4[2034]: TLS tunnels disabled, see /etc/default/stunnel4
Sep 12 14:34:05 stunnel systemd[1]: Started LSB: Start or stop stunnel 4.x (TLS tunn

در اینجا ، می بینید که سرویس stunnel فعال است ، اگرچه این روند بلافاصله خارج می شود. این به ما می گوید که stunnel در حال اجراست ، اما از آنجایی که ما هنوز پیکربندی نکرده ایم ، قادر به انجام عملی نیستیم.
مرحله 2 – پیکربندی Stunnel
سیستم های مدرن لینوکس برای تنظیم اولیه و مدیریت خدمات و دیمن ها به سیستم متکی هستند. با این حال ، stunnel برای راه اندازی از اسکریپت مبتنی بر سبک SysV که مبتنی بر سیستم قدیمی UNIX System V init است ، استفاده می کند. برای فعال کردن این اسکریپت اولیه باید فایل / etc / default / stunnel4 را تغییر دهید.
این فایل را با ویرایشگر متن مورد نظر خود باز کنید. در اینجا ، ما از nano استفاده خواهیم کرد:
$ sudo nano /etc/default/stunnel4

گزینه ENABLED را در بالای فایل پیدا کنید. به طور پیش فرض روی 0 تنظیم می شود ، اما ان را به 1 تغییر می دهد تا بتواند در بوت شروع به کار کند:
/etc/default/stunnel4
# /etc/default/stunnel
# Julien LEMOINE <speedblue@debian.org>
# September 2003

# Change to one to enable stunnel automatic startup
ENABLED=1
. . .

فایل را ذخیره کنید و ببندید. اگر از nano برای ویرایش فایل استفاده کرده اید ، این کار را با فشار دادن CTRL + X ، ، سپس Y انجام دهید.
در مرحله بعد ، نیاز به ایجاد یک فایل پیکربندی برای stunnel دارید که به برنامه می گوید کجا به مسیریابی ترافیک نیاز دارد.
فایل جدیدی به نام stunnel.conf را تحت دیرکتوری / etc / stunnel باز کنید:
$ sudo nano /etc/stunnel/stunnel.conf

محتوای زیر را به این فایل اضافه کنید:
/etc/stunnel/stunnel.conf
fips = no
setuid = nobody
setgid = nogroup
pid = /home/sammy/pids/stunnel.pid
debug = 7
delay = yes
[redis-cli]
client = yes
accept = 127.0.0.1:8000
connect = managed_redis_hostname_or_ip:managed_redis_port

پنج خط اول در فایل گزینه های جهانی هستند ، به این معنی که آنها برای هر سرویسی که در این فایل گنجانده اید اعمال خواهد شد:
fips: حالت FIPS 140-2 را برای stunnel فعال یا غیرفعال می کند. در این حالت ، stunnel تأیید می کند که اتصال مطابق با استاندارد پردازش اطلاعات فدرال است. تنظیم آن روی no این ویژگی را غیرفعال می کند. توجه داشته باشید که غیرفعال کردن این امر امنیت کمتری ندارد ، اما فعال کردن آن (به صورت پیش فرض) به پیکربندی بیشتری نیاز دارد.
setuid: شناسه کاربر یونیکس را که تحت آن stunnel اجرا می شود تعریف میکند. به طور پیش فرض ، روند stunnel متعلق به کاربر root است. با این حال ، مستندات stunnel توصیه می کنند که پس از شروع stunnel ، امتیازات ادمین را رها کنید ، زیرا عدم انجام این کار خطر امنیتی را ایجاد می کند. تنظیم پارامتر setuid  بر روی nobody  باعث می شود که هیچ کاربر غیرمجازی پس از شروع به کار stunnel ، روند آن را به تصرف خود نیاورد.
setgid: شناسه گروه یونیکس را تعریف می کند که stunnel تحت آن اجرا می شود. مانند تنظیمات setuid ، این پیکربندی گروهی را بدون هیچ گونه امتیاز ویژه – nogroup  – مشخص می کند تا از مشکلات امنیتی احتمالی جلوگیری کند.
pid: موقعیت فایل را تعریف می کند که در آن stunnel یک فایل .pid ایجاد کند ، نوعی فایل که حاوی PID فرآیند است. فایلهای pid معمولاً توسط برنامه های دیگر برای یافتن PID یک فرایند در حال اجرا استفاده می شوند. به طور پیش فرض ، stunnel یک فایل .pid را در دیرکتوری / var / run / stunnel4 / ایجاد می کند ، اما به دلیل اینکه هیچ کاربری اجازه دسترسی به آن دیرکتوری را ندارد ، از شروع صحیح stunnel جلوگیری می کند. در عوض ، این خط فایلی به نام stunnel.pid را که در پوشه ای به نام pids در دیرکتوری هوم کاربر Ubuntu نگهداری می شود ، مشخص می کند. ما در ادامه این دیرکتوری و فایل stunnel.pid را ایجاد خواهیم کرد. همینطور که این خط را اضافه می کنید ، حتماً sammy را به نام کاربر سیستم Ubuntu خود تغییر دهید.
debug: سطح اشکال زدایی stunnel را تنظیم می کند ، که می تواند از 0 تا 7 باشد. در این مثال ما آن را به 7 ، بالاترین سطح در دسترس قرار می دهیم ، زیرا در صورت بروز هرگونه مشکل ، دقیق ترین اطلاعات را ارائه می دهد. می توانید آن را در هر سطحی که دوست دارید تنظیم کنید ، اما توجه داشته باشید که تنظیم پیش فرض 5 است.
delay: هنگامی که روی بله تنظیم میشود ، این گزینه باعث می شود تا stunnel جستجوی DNS برای آدرس ذکر شده در گزینه اتصال را به تأخیر بیندازد. همچنین از عدم دسترسی آدرس IP جلوگیری می کند. این کار باعث می شود که حتی اگر نمونه Redis آفلاین باشد، همانطور که می تواند هنگام افزایش اندازه خوشه شما اتفاق بیفتد، تونل را باز نگه دارد.
خطوط باقیمانده گزینه هایی در سطح سرویس ها هستند و فقط برای تونلی که ما برای redis-cli ایجاد خواهیم کرد اعمال می شود:
[redis-cli] : یک نام سرویس است و مشخص می کند که خطوط زیر یک پیکربندی سرویس فردی برای یک برنامه کلاینت را نشان می دهد. شما می توانید بیش از یک سرویس را در یک فایل پیکربندی stunnel داشته باشید ، هر چند که باید با یک برنامه کلاینت موجود همراه باشد و نمی توانید دو سرویس برای یک برنامه مشابه داشته باشید.
Client: تنظیم این گزینه روی بله به stunnel می گوید که در حالت کلاینت اجرا شود ، به این معنی که stunnel به جای اینکه به عنوان یک سرور مجازی TLS عمل کند ، به یک سرور مجازی TLS (نمونه Redis مدیریت شده) وصل می شود.
accept: میزبان و پورت را که تونل در آن از کلاینت پشتیبانی می کند ، تعریف می کند. در اینجا ، ما آدرس IP 127.0.0.1 را مشخص می كنیم ، كه یك آدرس IPv4 loopback است كه برای نمایش localhost و پورت 8000 استفاده می شود. این بدان معناست كه stunnel اتصالات منشاء گرفته از سرور مجازی اوبونتو را در پورت 8000 گوش می دهد و آنها را رمزگذاری می كند. توجه داشته باشید که می توانید پورت را روی هر شماره پورتی که که از قبل استفاده نشده تنظیم کنید.
connect: آدرس و پورت راه دور را که stunnel به آن متصل میشود را تعیین می کند. حتماً این پارامتر را تغییر دهید تا با پورت و نام میزبان یا آدرس IP پایگاه داده مدیریت شده مطابقت داشته باشید.
توجه: نام میزبان یا آدرس IP و پورتی که باید در بخشنامه اتصال مشخص کنید مربوط به بانک اطلاعاتی Redis شما می باشد. این موارد معمولاً در رابط کاربری مدیریت پایگاه داده ارائه دهنده ابری شما وجود دارد که نمونه Redis خود را تهیه کرده اید.
این پیکربندی نسبتاً جزیی است که بسیاری از تنظیمات پیش فرض stunnel را کنار می گذارد. این برنامه برای ایجاد تونل هایی متناسب با نیازهای خاص شما گزینه های بسیاری در اختیار شما قرار داده است. برای اطلاعات بیشتر به اسناد رسمی مراجعه کنید.
پس از افزودن این محتوا ، فایل را ذخیره کنید و ببندید.
سپس ، مطمئن شوید که شما در دیرکتوری اصلی کاربر اوبونتو هستید:
$ cd

در مرحله بعد پوشه pids را که فایل stunnel.pid را نگه می دارد ایجاد کنید:
$ mkdir pids

فرآیند stunnel فایل stunnel.pid را بطور خودکار ایجاد می کند ، بنابراین نیازی نیست خودتان این فایل را ایجاد کنید. با این حال ، نیاز به تغییر مالکیت دایرکتوری pids در گروه کاربر و گروه های جدید دارید:
$ sudo chown -R nobody:nogroup pids/

سپس سرویس stunnel4 را مجدداً راه اندازی کنید تا stunnel فایل پیکربندی جدید را بخواند:
$ sudo systemctl restart stunnel4

پس از آن ، می توانید آزمایش کنید که آیا stunnel با استفاده از netstat ، ابزار خط فرمان که برای نمایش اتصالات شبکه استفاده می شود ، با موفقیت یک تونل ایجاد کرده است. دستور زیر را اجرا کنید ، که خروجی netstat را به یک دستور grep پایپ می کند ، که به نوبه خود آن را برای هر نمونه از stunnel جستجو می کند:
$ sudo netstat -plunt | grep stunnel

Output
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN 17868/
این خروجی نشان می دهد که stunnel در حال گوش دادن به اتصالات در پورت محلی 8000 است.
همچنین می توانید تأیید کنید که هیچ کس مالکیت فرآیند stunnel را با ps ، یعنی برنامه ای که تمام فرآیندهای در حال اجرا را نشان می دهد، در دست نگرفته است:
$ ps aux | grep stunnel

Output
nobody 15674 0.0 0.1 121912 3180 ? Ssl 19:28 0:00 /usr/bin/stunnel4 /etc/stunnel/stunnel.conf
. . .

در اینجا ، می بینید که هیچ کس واقعاً روند stunnel را به دست نگرفته است.
اکنون Stunnel کاملاً پیکربندی شده است و روی سیستم شما کار می کند. اکنون آماده اتصال به نمونه Redis مدیریت شده و تست کارکرد تونل هستید.
مرحله 3 – اتصال به بانک اطلاعاتی مدیریت شده از طریق TLS
اکنون که redis-cli را بر روی سرور مجازی خود نصب و stunnel را پیکربندی کرده اید، آماده هستید تا از طریق TLS به بانک اطلاعاتی مدیریت شده خود وصل شوید.
بر اساس تنظیمات تعریف شده در فایل پیکربندی ایجاد شده در مرحله 2 ، با دستور زیر به پایگاه داده مدیریت شده خود وصل می شوید:
$ redis-cli -h localhost -p 8000

این دستور شامل پرچم -h است که به redis-cli می گوید که آرگومان بعدی میزبان اتصال به آن خواهد بود. در این حالت ، از آنجا که ما به یک تونلی که به صورت محلی روی سرور مجازی ایجاد شده است متصل میشویم، localhost  خواهد بود. پس از آن پرچم -p است که بر پورت تونل محلی که به آن متصل می شویم ، پیشی میگیرد که در این حالت پورت 8000 است.
پس از اجرای آن فرمان ، به سرور مجازی مدیریت شده Redis خود متصل خواهید شد. اعلان شما تغییر خواهد کرد تا منعکس کننده اتصال و در حالت تعاملی redis-cli شما باشد:
Localhost:8000>
توجه: اغلب اوقات ، پایگاه داده های مدیریت شده پیکربندی می شوند تا کاربران را هنگام اتصال با رمز عبوری که وارد میکنند احراز هویت کنند. اگر نمونه Redis مدیریت شده شما نیاز به رمزعبور دارد ، می توانید پرچم -a را در فرمان redis-cli خود وارد کنید ، و پس از آن رمز عبور خود را دنبال کنید:
$ redis-cli -h localhost -p 8000 -a password

از طرف دیگر ، می توانید با اجرای دستور auth و پسورد خود پس از برقراری اتصال ، تأیید اعتبار کنید:
Localhost:8000> auth password

با اجرای دستور ping از حالت تعاملی Redis می توانید آزمایش کنید که آیا تونل کار می کند:
Localhost:8000> ping

اگر اتصال زنده باشد ، PONG را برمی گرداند:
Output
PONG

اگر با این حال ، stunnel به درستی ترافیک را از سرور مجازی شما به نمونه Redis شما تونل نکند ، ممکن است قبل از جدا شدن از Redis ، پیغام خطایی مانند این را مشاهده کنید:
Output
Error: Server closed the connection

اگر این یا یک خطای مشابه را دریافت کرده اید ، دوباره بررسی کنید که نام میزبان و پورت Redis را به درستی در فایل stunnel.conf خود وارد کرده اید. به همین ترتیب ، مطمئن باشید که شماره فرمان صحیح را در دستور redis-cli خود وارد کرده اید.
همچنین می توانید هنگامی که نمونه Redis مدیریت شده اتصالات باز خود را بازنشانی می کند ، این خطا را دریافت کنید ، همانطور که می تواند هنگام پیکربندی تنظیمات خوشه اتفاق بیفتد. در چنین مواردی ، ممکن است از Redis جدا نشوید ، اگرچه لازم است مجدداً تأیید اعتبار کنید.
پس از تأیید کار تونل ، پیش بروید و از نمونه Redis خود جدا شوید:
Localhost:8000> exit

اگر پیکربندی stunnel را تغییر دهید ، باید سرویس stunnel4 را بار دیگر بارگذاری یا ریستارت کنید ، تا stunnel متوجه تغییرات شود:
$ sudo systemctl reload stunnel4

اگر در هر زمانی در آینده می خواهید تونل TLS را ببندید ، می توانید با systemctl نیز این کار را انجام دهید:
$ sudo systemctl stop stunnel4

بعد از اینکه بنز تونل بسته شد ، می توانید با شروع دوباره سرویس ، تونل را مجدداً باز کنید:
$ sudo systemctl start stunnel4

اکنون که پیکربندی خود را با موفقیت انجام داده اید ، شروع به اضافه کردن داده ها به نمونه Redis مدیریت شده با Redis-cli میکنید.
نتیجه
Stunnel ابزاری مفید برای ایجاد تونل های TLS و برقراری اتصالات ایمن به سرور مجازی های از راه دور است. این امر به ویژه در مواردی که انتقال ایمن اطلاعات بین ماشین ها بسیار مهم است ، مانند پایگاه داده از راه دور، بسیار مفید خواهد بود.
از اینجا ، می توانید کاوش در Redis و ادغام آن با برنامه بعدی خود را شروع کنید. اگر به تازگی کار با Redis را شروع کرده اید ، ممکن است مجموعه مقالات ما را در مورد چگونگی مدیریت یک بانک اطلاعاتی Redis برایتان مفید باشد.

نحوه میزبانی وب سایت با استفاده از Cloudflare و Nginx در اوبونتو 20.04

چگونه می توان با Stunnel و redis-cli به یک Redis نمونه مدیریت شده از طریق TLS متصل شد

چگونگی توسعه وب سایت Drupal 9 در دستگاه محلی خود با استفاده از Docker و DDEV

نحوه راه اندازی بستگی به سیستم عامل برنامه Eclipse Theia Cloud IDE در اوبونتو 18.04 [Quickstart]

نحوه استفاده از Cron برای خودکارسازی کارها در CentOS 8

نحوه نوشتن کد ناهمگام (غیر همزمان) در Node.js

نحوه تنظیم Mattermost در اوبونتو 20.04

نحوه ساخت یک ربات Discord با Node.js

نحوه پیکربندی Jenkins با SSL با استفاده از پروکسی معکوس Nginx در اوبونتو 20.04

نحوه نصب چهارچوب وب Django در اوبونتو 20.04

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکاخرید سرور مجازی ارزان هلندvpsخرید vps هلندخرید سرور مجازی آمریکاخرید vps فرانسهتست vpsسرور مجازی تستسرور مجازی ویندوزارزانترین vpsخرید وی پی اسvps ارزان –