در حالی که بسیاری از کاربران به عملکرد سیستم دیتابیس مانند 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;

 

 

 

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

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