ubuntu

نصب و ایمن سازی phpMyAdmin با Nginx در سرور

در حالی که بسیاری از کاربران به عملکرد سیستم دیتابیس مانند MySQL نیاز دارند ، تعامل با سیستم صرفاً از طریق سرویس دهنده خط فرمان MySQL نیاز به آشنایی با زبان SQL دارد ، بنابراین ممکن است برای بعضی ها رابط ارجح نباشد.
phpMyAdmin به گونه ای ایجاد شده است که کاربران بتوانند از طریق یک رابط وب بصری با MySQL در تعامل باشند که در کنار یک محیط توسعه PHP اجرا شود. در این راهنما ، در مورد نحوه نصب phpMyAdmin روی سرور Nginx و نحوه پیکربندی سرور برای افزایش امنیت بحث خواهیم کرد.
توجه: در هنگام استفاده از نرم افزاری مانند phpMyAdmin ملاحظات امنیتی مهمی وجود دارد ، از آنجا که بر روی سرور پایگاه داده اجرا می شود ، با اعتبارات پایگاه داده در ارتباط است ، و کاربر را قادر می سازد تا به راحتی پرس و جوهای SQL دلخواه را در پایگاه داده شما اجرا کند. از آنجا که phpMyAdmin یک برنامه PHP با استقرار گسترده است ، اغلب مورد حمله قرار می گیرد. در این آموزش برخی اقدامات امنیتی که می توانید انجام دهید را مرور خواهیم کرد تا بتوانید تصمیماتی آگاهانه بگیرید.

پیش نیازها
قبل از شروع این راهنما ، به موارد زیر نیاز خواهید داشت:
سرور Ubuntu 18.04 که دارای یک پشته LEMP (Linux ، Nginx ، MySQL و PHP) و ایمن شده با ufw باشد ، همانطور که در راهنمای تنظیم اولیه سرور برای اوبونتو 18.04 شرح داده شده است. اگر هنوز سرور خود را تنظیم نکرده اید ، می توانید راهنمای نصب پشته LEMP در اوبونتو 18.04 را دنبال کنید.
• دسترسی به این سرور به عنوان یک کاربر غیر ریشه با امتیازات sudo.
از آنجا که phpMyAdmin احراز هویت را با استفاده از اعتبار MySQL انجام می دهد ، توصیه می شود یک SSL / TLS نصب کنید تا بتوانید ترافیک رمزگذاری شده بین سرور و کلاینت را فعال کنید. اگر دامنه موجود که با گواهی معتبر پیکربندی شده باشد ندارید ، می توانید این راهنما را در مورد ایمن سازی Nginx با let’s Encrypt در Ubuntu 18.04 دنبال کنید.
هشدار: اگر گواهی SSL / TLS را روی سرور نصب نکرده اید و همچنان مایل به ادامه کار هستید ، لطفاً دسترسی از طریق تونل های SSH را همانطور که در مرحله 5 این راهنما توضیح داده شده است ، در نظر بگیرید.
هنگامی که این پیش نیازها را انجام دادید ، می توانید با ادامه این راهنما پیش بروید.
مرحله 1 – نصب phpMyAdmin
اولین کاری که باید انجام دهیم نصب phpMyAdmin روی سرور LEMP است. ما می خواهیم از مخازن پیش فرض اوبونتو برای رسیدن به این هدف استفاده کنیم.
بیایید با به روزرسانی فهرست بسته سرور با دستور زیر شروع کنیم:
⦁ $ sudo apt update

اکنون می توانید phpMyAdmin را با این دستور نصب کنید:
⦁ $ sudo apt install phpmyadmin

در طی مراحل نصب ، از شما خواسته می شود تا وب سرور (Apache یا Lighthttp) را برای پیکربندی انتخاب کنید. از آنجا که ما از Nginx به عنوان وب سرور استفاده می کنیم ، نباید اینجا انتخابی انجام دهیم. برای رفتن به مرحله بعدی ، tab را فشار داده و سپس OK را بزنید.
در مرحله بعد ، از شما خواسته می شود كه برای پیكربندی پایگاه داده برنامه از dbconfig-common استفاده شود یا خیر. yes را انتخاب کنید. این کار پایگاه داده داخلی و کاربر admin را برای phpMyAdmin تنظیم می کند. از شما خواسته می شود رمز جدید را برای کاربر phpmyadmin MySQL تعریف کنید. همچنین می توانید آن را خالی بگذارید و به phpMyAdmin اجازه دهید بطور تصادفی یک رمز عبور ایجاد کند.
اکنون نصب تمام می شود. برای اینکه سرور وب Nginx به درستی فایلهای phpMyAdmin را پیدا و ارائه کند ، باید یک لینک نمادین از فایلهای نصب به دیرکتوری اصلی سند Nginx بسازیم:
⦁ $ sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

نصب phpMyAdmin شما اکنون عملیاتی است. برای دسترسی به رابط ، به نام دامنه یا آدرس IP عمومی سرور خود که پس از آن / phpmyadmin در مرورگر وب وجود دارد ، بروید:
https://server_domain_or_IP/phpmyadmin

همانطور که قبلاً نیز گفته شد ، phpMyAdmin با استفاده از اعتبار MySQL ، احراز هویت را کنترل می کند ، به این معنی که شما باید از همان نام کاربری و رمز عبوری که معمولاً برای اتصال به بانک اطلاعاتی از طریق کنسول یا از طریق API استفاده می کنید ، استفاده نمایید. اگر در ایجاد کاربران MySQL به کمک نیاز دارید ، این راهنما را در مورد نحوه مدیریت بانک اطلاعاتی SQL بررسی کنید.
توجه: ورود به سیستم phpMyAdmin به عنوان کاربر ریشه MySQL توصیه نمی شود زیرا خطرات امنیتی قابل توجهی را به همراه دارد. در مرحله بعدی این راهنما نحوه غیرفعال کردن ورود به سیستم ریشه را مشاهده خواهیم کرد.
نصب phpMyAdmin شما باید در این مرحله کاملاً عملی باشد. اما ، با نصب یک رابط وب ، سرور پایگاه داده MySQL خود را در معرض دنیای خارج قرار می دهیم. به دلیل محبوبیت phpMyAdmin و مقادیر زیادی از داده هایی که ممکن است به آنها دسترسی پیدا کند ، نصب های این چنینی ، اهداف متداول برای حملات هستند. در بخش های بعدی این راهنما ، چند روش مختلف را مشاهده خواهیم کرد که با استفاده از آن می توانیم نصب phpMyAdmin را ایمن تر کنیم.
مرحله 2 – تغییر موقعیت پیش فرض phpMyAdmin
یکی از اساسی ترین راه های محافظت از نصب phpMyAdmin ، دشوار نمودن دسترسی به آن است. رباتها مسیرهای متداول مانند phpmyadmin ، pma ، admin ، mysql و مواردی از این دست را اسکن می کنند. تغییر آدرس URL رابط از / phpmyadmin به چیزی غیر استاندارد ، اسکریپت های خودکار را برای پیدا کردن نصب و راه اندازی phpMyAdmin و تلاش برای حملات مخرب را دشوارتر می کند.
با نصب phpMyAdmin ، پیوندی نمادین ایجاد کرده ایم که به / usr / share / phpmyadmin اشاره دارد، جایی که فایل های برنامه واقعی قرار دارند. برای تغییر URL رابط phpMyAdmin ، این پیوند نمادین را تغییر نام خواهیم داد.
ابتدا ، اجازه دهید به دیرکتوری اصلی سند Nginx برویم و لیست فایل هایی که در آن قرار دارد را فهرست کنیم تا درک بهتری از تغییراتی که ایجاد خواهیم کرد داشته باشیم:
⦁ $ cd /var/www/html/

⦁ $ ls -l
خروجی زیر را دریافت خواهید کرد:
Output
total 8
-rw-r–r– 1 root root 612 Apr 8 13:30 index.nginx-debian.html
lrwxrwxrwx 1 root root 21 Apr 8 15:36 phpmyadmin -> /usr/share/phpmyadmin

خروجی نشان می دهد که ما یک لینک نمادین به نام phpmyadmin در این دیرکتوری داریم. می توانیم این نام پیوند را به هر آنچه دوست داریم تغییر دهیم. که به نوبه خود URL دسترسی phpMyAdmin را تغییر می دهد ، و می تواند به پنهان کردن نقطه انتهایی از دسترس رباتهای رمزگذاری شده برای جستجوی نام نقاط پایانی معمول کمک کند.
نامی را انتخاب کنید که هدف نقطه پایانی را مبهم کند. در این راهنما ، نقطه پایانی را /nothingtosee می نامیم ، اما شما باید یک نام جایگزین انتخاب کنید. برای انجام این کار ، پیوند را تغییر نام می دهیم:
⦁ $ sudo mv phpmyadmin nothingtosee

⦁ $ ls -l

پس از اجرای دستورات فوق ، این خروجی را دریافت خواهید کرد:
Output
total 8
-rw-r–r– 1 root root 612 Apr 8 13:30 index.nginx-debian.html
lrwxrwxrwx 1 root root 21 Apr 8 15:36 nothingtosee -> /usr/share/phpmyadmin

اکنون ، اگر به URL قدیمی بروید ، خطای 404 را دریافت خواهید کرد:
https://server_domain_or_IP/phpmyadmin

رابط phpMyAdmin شما اکنون با URL جدیدی که تازه پیکربندی کرده ایم در دسترس خواهد بود:
https://server_domain_or_IP/nothingtosee

با ایجاد موقعیت واقعی phpMyAdmin در سرور ، رابط کاربری آن را در برابر اسکن خودکار و حملات دستی محافظت می کنید.
مرحله 3 – غیرفعال کردن ورود به عنوان ریشه
در MySQL و همچنین در سیستم های معمول لینوکس ، حساب اصلی یک حساب کاربری ویژه با دسترسی نامحدود به سیستم است. علاوه بر اینکه یک حساب ممتاز است ، یک نام ورود به سیستم شناخته شده است ، و آن را به یک هدف آشکار برای حملات مخرب تبدیل می کند. برای به حداقل رساندن خطرات ، phpMyAdmin را به گونه ای پیکربندی می کنیم تا هرگونه تلاش برای ورود به سیستم از سوی کاربر ریشه را رد کنیم. به این ترتیب ، حتی اگر اعتبارات معتبری برای ریشه کاربر ارائه دهید ، باز هم یک خطای ” access denied ” دریافت خواهید کرد و مجاز به ورود به سیستم نخواهید بود.
از آنجا که ما برای پیکربندی و ذخیره تنظیمات phpMyAdmin از dbconfig-common استفاده کردیم ، پیکربندی پیش فرض در حال حاضر در بانک اطلاعاتی ذخیره می شود. برای تعریف تنظیمات سفارشی باید یک فایل config.inc.php جدید ایجاد کنیم.
حتی اگر فایلهای PHP برای phpMyAdmin در داخل / usr / share / phpmyadmin قرار داشته باشند ، برنامه از فایلهای پیکربندی مستقر در / etc / phpmyadmin استفاده می کند. یک فایل تنظیمات سفارشی جدید را در داخل /etc/phpmyadmin/conf.d ایجاد خواهیم کرد و نام آن را pma_secure.php مینامیم:
⦁ $ sudo nano /etc/phpmyadmin/conf.d/pma_secure.php

فایل پیکربندی زیر شامل تنظیمات لازم برای غیرفعال کردن ورودهای بدون رمز (AllowNoPassword روی false تنظیم شده است) و ورود ریشه به سیستم است (AllowRoot روی false تنظیم شده است):
/etc/phpmyadmin/conf.d/pma_secure.php
<?php

# PhpMyAdmin Settings
# This should be set to a random string of at least 32 chars
$cfg[‘blowfish_secret’] = ‘3!#32@3sa(+=_4?),5XP_:U%%8\34sdfSdg43yH#{o’;

$i=0;
$i++;

$cfg[‘Servers’][$i][‘auth_type’] = ‘cookie’;
$cfg[‘Servers’][$i][‘AllowNoPassword’] = false;
$cfg[‘Servers’][$i][‘AllowRoot’] = false;

?>

پس از ویرایش فایل ، با فشار دادن CTRL + X سپس y ، تغییرات را تأیید کنید و ENTER را بزنید. تغییرات بطور خودکار اعمال می شوند. اگر اکنون صفحه ورود را مجدد لود کنید و سعی کنید به عنوان root وارد شوید ، یک خطای Access Denied دریافت خواهید کرد:

اکنون ورود به سیستم به عنوان ریشه در نصب phpMyAdmin شما ممنوع است. این اقدامات امنیتی باعث می شود جلوی اسکریپت های مخرب در تلاش برای حدس زدن رمزعبور پایگاه داده اصلی روی سرور شما گرفته شود. علاوه بر این ، استفاده از حسابهای MySQL با امتیازات کمتر را برای دسترسی به رابط وب phpMyAdmin اعمال می کند ، که به خودی خود یک روش مهم امنیتی است.
مرحله 4 – ایجاد یک دروازه احراز هویت
پنهان کردن نصب phpMyAdmin در یک مکان غیرمعمول ممکن است برخی از ربات های خودکار را که در حال اسکن شبکه هستند ، گمراه کند ، اما در برابر حملات هدفمند بی فایده است. برای محافظت بهتر از یک برنامه وب با دسترسی محدود ، به طور کلی متوقف کردن مهاجمان قبل از اینکه حتی بتوانند به برنامه دسترسی پیدا کنند، مفیدتر است. به این ترتیب ، آنها نمی توانند از سوء استفاده های عمومی و حملات مخرب برای حدس زدن اعتبارات دسترسی استفاده کنند.
در مورد خاص phpMyAdmin ، محفوظ نگه داشتن رابط ورود به سیستم حتی مهمتر نیز هست. با در دسترس نگه داشتن آن به صورت جهانی ، یک بستر آماده برای مهاجمین ارائه می دهید تا اعتبارات بانک اطلاعاتی شما را حدس بزنند.
افزودن یک لایه اضافی تأیید اعتبار به نصب phpMyAdmin شما را قادر می سازد امنیت را افزایش دهید. کاربران باید قبل از دیدن صفحه ورود به سایت phpMyAdmin از اعلان تأیید هویت HTTP عبور کنند. اکثر سرور های وب ، از جمله Nginx ، این قابلیت را به صورت بومی ارائه می دهند.
برای انجام این کار ، ابتدا باید یک فایل رمز عبور برای ذخیره اعتبارات تأیید ایجاد کنیم. Nginx مستلزم رمزگذاری پسوردها با استفاده از تابع crypt () است. مجموعه OpenSSL ، که باید از قبل روی سرور شما نصب باشد ، این قابلیت را دارد.
برای ایجاد پسورد رمزگذاری شده ، این دستور را تایپ کنید:
⦁ $ openssl passwd

از شما خواسته می شود رمز عبوری را که می خواهید استفاده کنید وارد کنید و آن را تأیید نمایید. سپس این ابزار نسخه رمزگذاری شده رمزعبور را نمایش می دهد که چیزی شبیه به این خواهد بود:
Output
O5az.RSPzd.HE
این عبارت را کپی کنید ، زیرا لازم است که آن را در فایل تأیید اعتبار مورد استفاده قرار دهید.
اکنون ، یک فایل تأیید اعتبار ایجاد کنید. ما این فایل را pma_pass می نامیم و آن را در دیرکتوری تنظیمات Nginx قرار می دهیم:
⦁ $ sudo nano /etc/nginx/pma_pass

در این فایل ، نام کاربری مورد نظر خود را مشخص می کنید و به دنبال آن یک کولون (:) و سپس نسخه رمزگذاری شده پسورد را که از برنامه Openwl passwd دریافت کرده اید ، قرار دهید.
ما میخواهیم نام کاربر خود را Sammy قرار دهیم ، اما شما باید نام کاربری دیگری را انتخاب کنید. فایل باید به صورت زیر باشد:
/etc/nginx/pma_pass
sammy:O5az.RSPzd.HE
پس از انجام این کار ، فایل را ذخیره کنید و ببندید.
اکنون ما آماده اصلاح فایل پیکربندی Nginx هستیم. برای این راهنما ، از فایل پیکربندی واقع در /etc/nginx/sites-available/example.com استفاده خواهیم کرد. شما باید از فایل پیکربندی مربوط به Nginx برای مکان وب استفاده کنید که phpMyAdmin در حال حاضر میزبان آن است. این فایل را در ویرایشگر متن خود باز کنید تا کار را شروع کنید:
⦁ $ sudo nano /etc/nginx/sites-available/example.com

بلوک سرور و بخش location / را در آن قرار دهید. برای مطابقت با مسیر فعلی phpMyAdmin در سرور ، باید یک بخش location جدید در این بلوک ایجاد کنیم. در این راهنما ، مکان phpMyAdmin نسبت به ریشه وب /nothingtosee است:
/etc/nginx/sites-available/default
server {
. . .

location / {
try_files $uri $uri/ =404;
}

location /nothingtosee {
# Settings for phpMyAdmin will go here
}

. . .
}

در این بلوک ، باید دو دستورالعمل مختلف را تنظیم کنیم: auth_basic ، که پیامی را که در اعلان تأیید نمایش داده می شود معرفی میکند، و auth_basic_user_file ، که به فایلی که ایجاد کردیم ، اشاره می کند. فایل پیکربندی شما پس از اتمام اینگونه به نظر می رسد:
/etc/nginx/sites-available/default
server {
. . .

location /nothingtosee {
auth_basic “Admin Login”;
auth_basic_user_file /etc/nginx/pma_pass;
}

. . .
}

سپس ، فایل را ذخیره کنید و ببندید. برای بررسی صحت فایل پیکربندی ، می توانید این دستور را اجرا کنید:
⦁ $ sudo nginx -t

خروجی زیر پیش بینی می شود:
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

برای فعال کردن دروازه احراز هویت جدید ، باید سرور وب را مجدد لود کنید:
⦁ $ sudo systemctl reload nginx

حال اگر از URL phpMyAdmin در مرورگر وب خود بازدید می کنید ، نام کاربری و رمز عبوری که به فایل pma_pass اضافه کرده اید ، از شما خواسته میشود:
https://server_domain_or_IP/nothingtosee

هنگامی که اعتبارات خود را وارد کردید ، به صفحه استاندارد ورود به سیستم phpMyAdmin منتقل می شوید.
توجه: اگر ریفرش صفحه کار نمی کند ، ممکن است مجبور شوید حافظه نهان خود را پاک کنید یا اگر قبلاً از phpMyAdmin استفاده کرده اید ، از یک مرورگر دیگر استفاده کنید.
این دروازه علاوه بر فراهم کردن یک لایه امنیتی بیشتر ، به حفظ فایل های MySQL در برابر تلاش برای تأیید اعتبارات Spammy کمک می کند.
مرحله 5 – تنظیم دسترسی از طریق تونل های رمزگذاری شده (اختیاری)
برای افزایش امنیت ، میتوان نصب phpMyAdmin را فقط برای هاست های مجاز قفل نکرد. می توانید هاست های مجاز را در فایل تنظیمات Nginx خود لیست کنید تا هرگونه درخواست از آدرس IP که در لیست موجود نیست ، رد شود.
حتی اگر این ویژگی در برخی موارد استفاده کافی باشد ، همیشه بهترین راه حل طولانی مدتی نیست ، عمدتا به این دلیل که اکثر افراد از آدرس های IP ایستا به اینترنت دسترسی ندارند. به محض دریافت یک آدرس IP جدید از Internet provider خود ، نمی توانید به رابط phpMyAdmin دسترسی پیدا کنید تا زمانی که فایل پیکربندی Nginx را با آدرس IP جدید خود به روز کنید.
برای یک راه حل طولانی مدت قوی تر ، می توانید از کنترل دسترسی مبتنی بر IP استفاده کنید تا تنظیماتی را ایجاد کنید که در آن کاربران فقط در صورت دسترسی به یک آدرس IP مجاز یا محلی از طریق تونل سازی SSH به رابط phpMyAdmin شما دسترسی داشته باشند. در بخش های زیر خواهیم دید که چگونه این کار را انجام دهیم.
ترکیب کنترل دسترسی مبتنی بر IP با تونل SSH امنیت را به شدت افزایش می دهد زیرا دسترسی از طریق اینترنت عمومی (به جز IP های مجاز) را کاملاً مسدود می کند و علاوه بر این کانال ایمن بین کاربر و سروراز طریق تونل های رمزگذاری شده فراهم میکند.
تنظیم کنترل دسترسی مبتنی بر IP در Nginx
در Nginx ، كنترل دسترسی مبتنی بر IP را می توان در بلوك location مربوطه یك سایت معین ، با استفاده از بخشنامه های allow و deny تعریف كرد. به عنوان مثال ، اگر فقط می خواهیم درخواست هایی را از یک هاست معین دریافت کنیم ، باید دو خط زیر را در این قسمت ، داخل بلوک location مربوطه برای سایت قرار دهیم که می خواهیم از آن محافظت کنیم:
allow hostname_or_IP;
deny all;

شما می توانید هر تعداد هاست که می خواهید اجازه دهید ، فقط باید یک خط allow برای هر هاست / IP مجاز در داخل بلوک location مربوطه برای سایتی که از آن محافظت می کنید درج کنید. دستورالعملها به همان ترتیبی که ذکر شده اند ارزیابی می شوند ، تا زمانی که تطابق پیدا شود یا درخواست به دلیل deny all رد شود.
اکنون Nginx را پیکربندی خواهیم کرد تا فقط به درخواستهایی که از localhost یا آدرس IP فعلی شما آمده اند اجازه ورود دهیم. ابتدا ، باید آدرس IP فعلی عمومی را که دستگاه محلی شما برای اتصال به اینترنت استفاده می کند ، بدانید. روش های مختلفی برای به دست آوردن این اطلاعات وجود دارد. برای سادگی ، می خواهیم از خدمات ارائه شده توسط ipinfo.io استفاده کنیم. می توانید URL https://ipinfo.io/ip را در مرورگر خود باز کنید ، یا دستور زیر را از دستگاه محلی خود اجرا کنید:
⦁ $ curl https://ipinfo.io/ip

باید یک آدرس IP ساده به عنوان خروجی دریافت کنید ، مانند این:
Output
203.0.113.111

این آدرس IP عمومی فعلی شما است. ما بلوک موقعیت مکانی phpMyAdmin را پیکربندی خواهیم کرد تا فقط به درخواستهایی که از آن IP می آیند ، علاوه بر localhost ، اجازه دهیم. باید بار دیگر پیکربندی phpMyAdmin را در داخل /etc/nginx/sites-available/example.com ویرایش کنیم.
فایل پیکربندی Nginx را با استفاده از ویرایشگر خط فرمان مورد نظر خود باز کنید:
⦁ $ sudo nano /etc/nginx/sites-available/example.com

از آنجا که از قبل یک قانون دسترسی در پیکربندی فعلی خود داریم ، باید آن را با کنترل دسترسی مبتنی بر IP ترکیب کنیم و از دستور satisfy all استفاده نماییم. به این ترتیب ، می توانیم تأیید هویت فعلی HTTP را برای افزایش امنیت سریع انجام دهیم.
به این ترتیب پیکربندی phpMyAdmin Nginx شما پس از انجام ویرایش اینگونه به نظر می رسد:
/etc/nginx/sites-available/example.com
server {
. . .

location /nothingtosee {
satisfy all; #requires both conditions

allow 203.0.113.111; #allow your IP
allow 127.0.0.1; #allow localhost via SSH tunnels
deny all; #deny all other sources

auth_basic “Admin Login”;
auth_basic_user_file /etc/nginx/pma_pass;
}

. . .
}

به یاد داشته باشید که nothingtosee را با مسیر واقعی جایی که phpMyAdmin در آن قرار دارد ، و آدرس IP هایلایت شده را با آدرس IP عمومی فعلی خود جایگزین کنید.
هنگام کار ، فایل را ذخیره کنید و ببندید. برای بررسی صحت فایل پیکربندی ، می توانید این دستور را اجرا کنید:
⦁ $ sudo nginx -t

خروجی زیر پیش بینی می شود:
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

اکنون سرور وب را مجدد لود کنید تا تغییرات اعمال شوند:
⦁ $ sudo systemctl reload nginx

از آنجا که آدرس IP شما صریحاً به عنوان هاست مجاز ذکر شده است ، دسترسی شما نباید مختل شود. هر کس دیگری که سعی در دسترسی به نصب phpMyAdmin داشته باشد، یک خطای 403 (ممنوعه) دریافت میکند:
https://server_domain_or_IP/nothingtosee

در بخش بعدی ، نحوه استفاده از تونل SSH برای دسترسی به سرور وب را از طریق درخواست های محلی خواهیم دید. به این ترتیب ، شما حتی می توانید آدرس IP خود را تغییر دهید و به رابط phpMyAdmin دسترسی پیدا کنید.
دسترسی به phpMyAdmin از طریق یک تونل رمزگذاری شده
تونل زنی SSH به عنوان روشی جهت هدایت ترافیک شبکه از طریق کانال های رمزگذاری شده کار می کند. با اجرای یک دستور ssh مشابه آنچه برای ورود به سرور استفاده می کنید ، می توانید یک “تونل” ایمن بین دستگاه محلی و آن سرور ایجاد کنید. همه ترافیک هایی که وارد یک پورت محلی خاص میشوند، می توانند از طریق تونل رمزگذاری شده هدایت شوند و قبل از دسترسی به اینترنت ، از سرور راه دور به عنوان یک پروکسی استفاده کنند. مشابه چیزی است که هنگام استفاده از VPN (شبکه خصوصی مجازی) اتفاق می افتد ، با این حال تنظیم تونل SSH بسیار ساده تر است.
ما از تونل سازی SSH استفاده خواهیم کرد تا درخواستهای خود را به سرور وب از راه دور که phpMyAdmin را اجرا می کند ، پروکسی کنیم. با ایجاد یک تونل بین دستگاه محلی و سرور که phpMyAdmin در آن نصب شده است ، می توانید درخواست های محلی را به سرور وب از راه دور هدایت کنید ، و مهمتر از همه ، ترافیک رمزگذاری می شود و درخواست ها به Nginx می رسند انگار که از localhost می آیند. به این ترتیب ، مهم نیست که از چه آدرس IP به آن وصل شوید ، می توانید به طور ایمن به رابط phpMyAdmin دسترسی پیدا کنید.
از آنجا که ترافیک بین دستگاه محلی شما و سرور وب از راه دور رمزگذاری می شود ، این گزینه جایگزین مناسبی برای موقعیت هایی است که نمی توانید گواهی SSL / TLS را در سرور وبی نصب کنید که دارای phpMyAdmin است.
از دستگاه محلی خود ، این دستور را هر زمان که نیاز به دسترسی به phpMyAdmin داشتید، اجرا کنید:
بگذارید هر بخش از دستور را بررسی کنیم:
⦁ ssh user@server_domain_or_IP -L 8000:localhost:80 -L 8443:localhost:443 -N

⦁ user: کاربر SSH برای اتصال به سرور ی که phpMyAdmin در آن کار می کند
⦁ hostname_or_IP: هاست SSH که phpMyAdmin در آن اجرا می شود
⦁ -L 8000: localhost: 80 مسیر HTTP را در پورت 8000 تغییر مسیر می دهد
⦁ -L 8443: localhost: 443 مسیر ترافیک HTTPS در پورت 8443 را تغییر میدهد
⦁ -N: دستورات از راه دور را اجرا نمی کند
توجه: این دستور تا زمانی که با CTRL + C قطع نشود ، ترمینال را مسدود می کند ، در این صورت اتصال SSH پایان می یابد و تغییر مسیر بسته را متوقف می کند. اگر ترجیح می دهید این دستور را در حالت پس زمینه اجرا کنید ، می توانید از گزینه –f SSH استفاده کنید.

اکنون به مرورگر خود بروید و server_domain_or_IP را با localhost:PORT جایگزین کنید، جایی که PORT برای HTTP ، 8000 و برای HTTPS، 8443 است:
http://localhost:8000/nothingtosee
https://localhost:443/nothingtosee

توجه: اگر از طریق https به phpMyAdmin دسترسی دارید ، ممکن است یک پیام هشدار دریافت کنید که امنیت گواهی SSL را سؤال می کند. این اتفاق به این دلیل است که نام دامنه ای که شما در آن استفاده می کنید (localhost) با آدرس ثبت شده در گواهی نامه (دامنه ای که phpMyAdmin در واقع در آن ارائه می شود) مطابقت ندارد. در این صورت ادامه کار بی خطر خواهد بود.

اکنون همه درخواست های localhost: 8000 (HTTP) و localhost: 8443 (HTTPS) از طریق یک تونل امن به برنامه راه دور phpMyAdmin خود هدایت می شوند. نه تنها با غیرفعال کردن دسترسی عمومی به phpMyAdmin ، امنیت را افزایش داده اید ، بلکه با استفاده از یک تونل رمزگذاری شده برای ارسال و دریافت داده ، از تمام ترافیک بین رایانه محلی و سرور از راه دور نیز محافظت می کنید.
اگر می خواهید استفاده از تونل زنی SSH را برای هرکسی که می خواهد به رابط phpMyAdmin شما (از جمله خودتان) دسترسی داشته باشد ، اعمال کنید ، می توانید با حذف سایر IPهای مجاز دیگر از فایل پیکربندی Nginx این کار را انجام دهید و 127.0.0.1 را به عنوان تنها هاست مجاز برای دسترسی به آن لوکیشن در نظر بگیرید. با توجه به اینکه هیچ کس قادر به درخواست مستقیم به phpMyAdmin نیست ، می توانید تأیید هویت HTTP را برای ساده سازی ستاپ خود حذف کنید. فایل پیکربندی شما در چنین سناریویی این گونه خواهد بود:
/etc/nginx/sites-available/example.com
server {
. . .

location /nothingtosee {
allow 127.0.0.1; #allow localhost only
deny all; #deny all other sources
}

. . .
}

هنگامی که پیکربندی Nginx را با sudo systemctl reload nginx مجدد لود کنید ، نصب phpMyAdmin شما قفل می شود و کاربران برای دسترسی به رابط phpMyAdmin از طریق درخواست های هدایت شده ، باید از تونل های SSH استفاده کنند.
نتیجه
در این آموزش ، ما شاهد نحوه نصب phpMyAdmin در Ubuntu 18.04 در حال اجرای Nginx به عنوان سرور وب بودیم. همچنین روشهای پیشرفته ای را برای تأمین امنیت نصب phpMyAdmin در اوبونتو ، مانند غیرفعال کردن ورود کاربر ریشه به سیستم ، ایجاد یک لایه بیشتر تأیید اعتبار ، و استفاده از تونل SSH برای دسترسی به نصب phpMyAdmin فقط از طریق درخواست های محلی را پوشش داده ایم.
پس از اتمام این آموزش ، باید بتوانید پایگاه داده MySQL خود را از یک رابط وب ایمن مدیریت کنید. این رابط کاربری بیشتر عملکردهای موجود از طریق خط فرمان MySQL را در معرض دید شما قرار می دهد. می توانید پایگاه های داده و شماتیک را بررسی کنید ، پرس و جوها را اجرا کنید و مجموعه ها و ساختارهای جدید داده ایجاد کنید.

 

 

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

پارامترهای پیش فرض در جاوا اسکریپت  –  اجرای چندین نسخه PHP بر روی یک سرور Debian 10

نحوه راه اندازی یک پروژه React با برنامه Reactنصب و ایمن سازی phpMyAdmin در اوبونتو 18

پیکربندی یک تایید اعتبار مجاز(CA) در CentOS 8  –  تنظیم برنامه Node.js برای تولید در CentOS 7

نصب MariaDB در اوبونتو 18.04  –  ایمن کردن Apache با Let’s Encrypt در Debian 10

نحوه نصب Node.js در CentOS 8  –  بازنویسی URL را با mod_rewrite برای Apache در Debian 10

راه اندازی فایروال با استفاده از firewalld در CentOS 8  –  نصب وب سرور Apache در Debian 10

اضافه کردن و حذف کاربران در CentOS 8 –  نصب Apache Tomcat 9 در Debian 10

نصب و استفاده از PostgreSQL در CentOS 8  –  راه اندازی سرور اولیه با Debian 10

نصب MariaDB در CentOS 8  –  چگونه با JSX عناصر واقعی ایجاد کنیم

نصب و پیکربندی VNC در Debian 10  –  استفاده از سرور از راه دور Docker

نصب و ایمن سازی Grafana در اوبونتو 18  –  نحوه نصب Git در CentOS 8

نصب Git در Debian 10 –  نصب و پیکربندی Zabbix برای ردیابی ایمن سرورهای

نحوه نصب Node.js در Debian 10  –  نصب وب سرور Apache در CentOS 7

نحوه نصب Webmin در Debian 10  –  نصب و پیکربندی Zabbix برای ردیابی ایمن سرور

نصب وردپرس با بانک اطلاعاتی در اوبونتو  – ساخت و استقرار سرور GraphQL با Node.js و MongoDB

نصب پایتون 3 و تنظیم نویسی محلی macOS  – نصب و ایمن سازی phpMyAdmin با Nginx در سرور

نصب Nagios 4 و نظارت بر سرور اوبونتو 18  –  نصب Python 3 و تنظیم یک محیط برنامه نویسی

نحوه نصب R بر روی Debian 10  –  راه اندازی سرور Prisma روی اوبونتو 18.04

نصب و پیکربندی Laravel با LEMP در اوبونتو 18  –  نصب و پیکربندی pgAdmin 4 در Server Mode

نصب Python 3 و تنظیم برنامه نویسی CentOS 8نصب Jitsi Meet در Ubuntu 18.04

 

 

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

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


https://vpsgol.net/product/vps-germany/

https://vpsgol.net/product/vps-usa/

https://vpsgol.net/product/vps-france/

https://vpsgol.net/product/vps-canada/

https://vpsgol.net/product/vps-poland/

https://vpsgol.net/product/vps-netherlands/

https://vpsgol.net/product/vps-england/