CLAC-8-راه-اندازی-PhpMyAdmin-بر-روی-سرور-Ubuntu-18.04-1-min

چگونگی راه‌اندازی phpMyAdmin بر روی Ubuntu 18.04

مقدمه

استفاده از کارکردهای یک سیستم مدیریت پایگاه داده مانند MySQL برای بسیاری از افراد ضروری است، با این وجود تعامل با این سیستم از طریق MySQL prompt چندان راحت نیست. برای رفع این مشکل phpMyAdmin ایجاد گردید تا به کاربران امکان دهد تا به راحتی از طریق یک رابط تحت وب با MySQL ارتباط برقرار کنند. این ابزار متن باز که از سال 1998 مورد استفاده قرار گرفته است، قابلیت دارد تا نه تنها MySQL، بلکه MariaDB را نیز از طریق آن کنترل نمود. در ادامه راه‌اندازی phpMyAdmin بر روی Ubuntu 18.04 شرح داده شده است تا از طریق آن بتوانید به صورت امن به مدیریت پایگاه داده خود بپردازید. برای آموزش ایجاد دیتابیس MySQL با خط فرمان مقاله موجود در سایت کلادینو را مطالعه کنید. همچنین با توجه به اینکه نسخه 20.04 اوبونتو عرضه شده است، آموزش راه‌اندازی اولیه سرور با اوبونتو 20.04 در سایت کلادینو ارائه شده است در صورت تمایل این آموزش را دنبال کنید.

پیش نیازهای phpMyAdmin

برای شروع، ابتدا باید نیازمندی‌های مورد نیاز برای استفاده از سیستم را در نظر داشته باشید.

اولا، فرض بر وجود یه کاربر non-root با سطح دسترسیsudo  بر روی سرور به گونه‌ای است که فایروال آن با ufw تنظیم شده است. همچنین فرض شده است که LAMP (Linux, Apache, MySQL, and PHP) به طور کامل بر روی سرور نصب گردیده است. در نهایت ملاحظات امنیتی مهمی در استفاده از نرم‌افزارهایی مثل phpMyAdmin وجود دارد زیرا این نرم‌افزار:
– به طور مستقیم با نصب MySQL در ارتباط است.
– احراز هویت را از طریق استفاده از اطلاعات MySQL صورت می‌دهد.
– گزارشات SQL را اجرا نموده و نتایج را باز می‌گرداند.

حتما مدنظر داشته باشید که با توجه به توانمندی‌های ایجاد شده از طریق این ابزار و با توجه به حملات بر روی نرم‌افزارهای تحت PHP، phpMyAdmin را نباید بر روی سیستم‌های از راه دور بر بستر ارتباط HTTP بدون در نظر گرفتن اقدامات مناسب استفاده نمود. اگر هیچ دامنه‌ای که با گواهی SSL/TLS تنظیم نشده وجود ندارد، می‌توانید از طریق ایمن‌سازی Apache بر روی Ubuntu 18.04 با رمزگذاری این کار را صورت دهید. این کار نیازمند ثبت یک دامنه، ایجاد اطلاعات DNS برای سرور و تنظیم یک هاست مجازی Apache است.

زمانی که تمامی مراحل بالا را انجام دادید، می‌توانید راه‌اندازی phpMyAdmin بر روی Ubuntu 18.04 را به وسیله قدم‌های زیر صورت دهید.

چگونهphpMyAdmin  را بر روی Ubuntu 18.04 نصب و پیکربندی کنیم؟

حال به صورت گام به گام مراحل را برای نصب و راه اندازی Ansible بر روی  Ubuntu 18.04 پیش خواهیم برد.

مرحله اول: نصب phpMyAdmin

برای شروع phpMyAdmin را از طریق repositoryهای پایه Ubuntu نصب می‌کنیم.

این کار از طریق بروزرسانی package index سرور و پس از آن استفاده از دستور apt برای دریافت و نصب فایل‌ها بر روی سیستم انجام می‌شود.

•	sudo apt update
•	sudo apt install phpmyadmin php-mbstring php-gettext

در این قسمت سوالاتی برای تنظیم درست نصب پرسیده می‌شود.

توجه داشته باشید که در زمان پدیدار شدن prompt، “apache2” های‌لایت شده ولی انتخاب نگردیده است. در نتیجه اگر دکمه SPACE برای انتخاب Apache کلیک نشود، فایل‌های مورد نیاز در طی نصب انتقال داده نخواهد شد. بر روی دکمه SPACE، TAB و سپس ENTER کلیک نمایید تا Apache انتخاب شود. ادامه روند به صورت زیر است:
– برای انتخاب سرور، apache2  را انتخاب نمایید.
– زمانی که در مورد استفاده یا عدم استفاده از dbconfig-common برای نصب پایگاه داده سوال پرسیده شد، گزینه Yes را انتخاب نمایید.
– در ادامه از شما خواسته ‌می‌شود که رمز نرم‌افزار MySQL را برای phpMyAdmin انتخاب و تایید نمایید.

فرآیند نصب، فایل تنظیمات Apache را برای phpMyAdmin در مسیر زیر قرار می‌دهد تا به صورت اتوماتیک قابل خواندن باشد.

/etc/apache2/conf-enabled/

حال تنها کاری که لازم است انجام شود فعالسازی mbstring در افزونه PHP است که با دستور زیر قابل انجام است.

sudo phpenmod mbstring

پس از آن برای شناسایی تغییرات بایستی Apache را مجددا راه‌اندازی نمایید.

sudo systemctl restart apache2

 تا این مرحله phpMyAdmin نصب شده و تنظیمات آن صورت پذیرفته است. با این وجود قبل از ورود و تعامل با پایگاه‌های داده MySQL خود، بایستی از امکان دسترسی کاربران MySQL به برنامه اطمینان حاصل نمایید.

مرحله 2: تنظیم سطح دسترسی و مجوزهای کاربران

زمانی که شما phpMyAdmin را بر روی سرور خود نصب نموده‌اید، کاربری به نام phpmyadmin به طور خودکار ایجاد می‌گردد که فرآیندهای مشخصی از برنامه را صورت می‌دهد. ترجیح بر این است که به جای ورود به عنوان این کاربر، که رمز ادمین را برای آن در طی فرآیند نصب در نظر گرفته‌اید، با  کاربر root برای MySQL یا کاربر دیگری که برای مدیریت پایگاه داده از طریق رابط phpMyAdmin در نظر گرفته شده است وارد شوید. اقدامات لازم در این مرحله از راه‌اندازی phpMyAdmin بر روی Ubuntu 18.04 در ادامه آورده شده است.

تنظیم رمز دسترسی برای اکانت Root در MySQL

در سیستم‌های Ubuntuای که MySQL 5.7 و نسخه‌های بالاتر بر روی آن نصب است، تنظیمات به گونه‌ای است که کاربر root برای MySQL بجای استفاده از رمز، از افزونه auth_socket استفاده می‌کند. این کار در بسیاری از موارد امکان امنیت و کاربرد بیشتر را فراهم می‌کند، اما در زمان نیاز به ارائه دسترسی به این کاربر برای برنامه‌های خارجی مانند phpMyAdmin، شرایط را پیچیده می‌نماید.

جهت ورود به phpMyAdmin  به عنوان کاربر root برای MySQL، تغییر نحوه احراز هویت از auth_socket به mysql_native_password ، در صورتی که تاکنون انجام نشده، مورد نیاز است. برای این کار تنها کافی است MySQL prompt را در ترمینال خود باز کرده و دستور زیر را وارد نمایید:

sudo mysql

سپس بررسی کنید که هر یک از اکانتهای کاربران MySQL از چه روش احراز هویتی استفاده می‌نماید.

SELECT user,authentication_string,plugin,host FROM mysql.user;
user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost |
| phpmyadmin       | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)

در این مثال می‌توان مشاهده کرد که کاربر root از افزونه auth_socket برای احراز هویت استفاده می‌کند. برای تنظیم این که کاربر root به وسیله رمز احراز هویت نماید، دستور ALTER USER زیر را اجرا نمایید. توجه داشته باشید که به جای کلمه password از یک رمز قوی و پیچیده استفاده نمایید.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

سپس دستور FLUSH PRIVILEGES را اجرا نمایید. این دستور به سرور اعلام می‌کند که جدول مجوزها را به روز نموده و تغییرات را اعلام کند.

FLUSH PRIVILEGES;

در این مرحله مجددا روش احراز هویت را برای کاربران بررسی می‌کنیم تا اطمینان داشته باشیم که کاربر root  دیگر از افزونه auth_socket  استفاده نمی‌کند.

SELECT user,authentication_string,plugin,host FROM mysql.user;
user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost |
| phpmyadmin       | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)

می‌توان دید که نحوه احراز هویت کاربر root از طریق رمز شده و شما می‌توانید با رمز تعیین شده به رابط phpMyAdmin وارد شوید.

تنظیم رمز دسترسی برای کاربر MySQL مشخص

به عنوان یک راه‌حل، برخی اتصال به phpMyAdmin از طریق یک کاربر مشخص را مناسب‌تر می‌دانند. بدین منظور مجدداMySQL shell  را باز کرده و دستور زیر را وارد نمایید:

sudo mysql

توجه داشته باشید که در صورتی که احراز هویت به وسیله رمز مطابق دستورالعمل قسمت قبل فعال شده، دستور دیگری برای دسترسی به MySQL shell مورد نیاز است.  دستور زیر MySQL client را با دسترسی‌های پایه اجرا نموده و شما تنها به وسیله احراز هویت به مجوزهای ادمین دست پیدا می‌نمایید.

mysql -u root -p

در این مرحله یک کاربر جدید ایجاد نموده و یک رمز قوی و پیچیده برای آن در نظر بگیرید.

CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

حال به کاربر جدید مجوزهای لازم را اعطا کنید. به عنوان مثال شما می‌توانید دسترسی به تمام جداول پایگاه داده را در کنار مجوز اضافه نمودن، تغییر دادن و حذف دسترسی کاربران را از طریق دستور زیر اعطا کنید.

GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

پس از آن از MySQL shell خارج شوید.

Exit

حال شما می‌توانید به رابط تحت وب از طریق نام دامنه سرور خود یا آدرس IP آن که عبارت /phpmyadmin در ادامه آن آمده است دسترسی یابید.

https://your_domain_or_IP/phpmyadmin
صفحه دسترسی به رابط تحت وب phpmyadmin که می‌توان از طریق سرور خود یا آدرس IP دسترسی پیدا کرد

حال با استفاده از root یا کاربر جدید که ساخته‌اید وارد رابط شده و رابط کاربری را که شبیه عکس زیر است مشاهده می‌کنید:

صفحه ای که بعد از وارد کردن IP وارد صفحه کاربری phpmyadmin می‌شویم

حال که امکان ارتباط و تعامل با بهphpMyAdmin  فراهم شده، تنها مورد باقیمانده مستحکم کردن امنیت سیستم در مقابل حملات است.

مرحله 3: ایمن کردن phpMyAdmin

با توجه به استفاده وسیع از phpMyAdmin، این برنامه هدف محبوبی برای مهاجمین است که در نتیجه باید مراقبت بیشتری را برای جلوگیری از دسترسی غیرمجاز صورت دهید. از راحتترین راه‌های انجام این کار قرار دادن یک gateway در برابر تمام برنامه با استفاده از احراز هویت از پیش قرار داده شده htaccess و توابع مربوطه آن در Apache است.

برای این کار ابتدا بایستی تنظیمات فایل Apache را برای فعالسازی استفاده از فایل htaccess تغییر دهید.

برای این کار فایل لینک شده قرار گرفته درون دایرکتوری تنظیمات Apache را مطابق زیر اصلاح می‌نمایید:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

حال دستورالعمل AllowOverride All را در قسمت <Directory /usr/share/phpmyadmin> فایل تنظیمات مطابق زیر تغییر می‌دهید:

/etc/apache2/conf-available/phpmyadmin.conf
<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride All
    . . .

زمانی که شما این خط را اضافه کردید، فایل ذخیره کرده و سپس آن را ببندید.

اکنون برای اعمال تغییرات Apache را مجددا راه‌اندازی نمایید.

sudo systemctl restart apache2

حال که htaccess برای برنامه فعال گردیده است بایستی به پیاد‌سازی اقدامات امنیتی بپردازید.

برای موفقیت‌آمیز بودن این موضوع، فایل بایستی در دایرکتوری برنامه ایجاد گردد. شما می‌توانید بوسیله دستور زیر فایل مورد نیاز را ایجاد نموده و به وسیله یک اصلاح‌کننده متن و با مجوزهای root آن را باز کنید.

sudo nano /usr/share/phpmyadmin/.htaccess

در این فایل اطلاعات زیر را وارد نمایید:

/usr/share/phpmyadmin/.htaccess
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

برای درک بهتر موضوع در ادامه هر یک از خطوط فوق شرح داده شده است.

AuthType Basic:  این خط نوع احراز هویت مورد نظر را تعیین می‌نماید. در این مدل احراز هویت بر پایه رمز از طریق فایل رمز به اجرا در خواهد آمد.

AuthName: این خط یک پیام را برای پنجره پیغام احراز هویت تنظیم می‌نماید. این پیام بایستی به گونه‌ای باشد که افراد غیرمجاز به اطلاعات محافظت شده دست پیدا نکنند.

AuthUserFile: این قسمت محل فایل رمزی را که برای احراز هویت استفاده می‌شود تنظیم می‌نماید. این فایل بایستی خارج از دایرکتوری‌هایی که خدمت‌رسانی می‌شوند قرار گیرد.

Require valid-user: این قسمت مشخص می‌کند که تنها افراد مجاز امکان دسترسی به منابع را خواهند داشت و در واقع افراد غیر مجاز را از ورود باز می‌دارد.

 پس از انجام فعالیت‌ها فایل را ذخیره کرده و ببندید.

محلی که برای فایل رمز در نظر گرفته‌اید /etc/phpmyadmin/.htpasswd است. حال می‌توانید فایل را ساخته و کاربر اولیه‌ای را بااستفاده از htpasswd  به آن اختصاص دهید.

sudo htpasswd -c /etc/phpmyadmin/.htpasswd username

در این قسمت از شما خواسته خواهد شد که رمزی را برای کاربر ایجاد شده انتخاب و تایید نمایید. پس از آن فایل به وسیله رمز hash شده‌ای که وارد نموده‌اید ایجاد می‌گردد.

در صورتی که کاربران بیشتری می‌خواهید تنها نیاز است که دستور را بدون –c مطابق زیر وارد نمایید:

sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser

با این تنظیمات از این پس در هنگام دسترسی به زیردایرکتوری‌های phpMyAdmin اطلاعات اکانت شامل نام کاربری و رمز تنظیم شده از کاربر خواسته خواهد شد:

https://domain_name_or_IP/phpmyadmin

پس از وارد کردن احراز هویت Apache، کاربر به صفحه احراز اصلی phpMyAdmin هدایت خواهید شد تا مجوزهای MySQL را وارد نماید. این تنظیمات یک لایه امنیتی اضافی ایجاد می‌کند که با توجه به صدمات ناشی از آسیب‌پذیری phpMyAdmin در گذشته بسیار مطلوب است.

نتیجه‌گیری

حالا شما یک phpMyAdmin تنظیم شده و آماده استفاده را بر روی سرور Ubuntu 18.04 خود دارید. در این راهنما سعی گردید تا نحوه راه‌اندازی phpMyAdmin بر روی Ubuntu 18.04 به صورت مرحله به مرحله نمایش داده شود. با استفاده از این رابط شما می‌توانید به راحتی پایگاه‌داده، کاربران، جداول و سایر موارد مرتبط مدنظر خود را ایجاد کرده و فعالیت‌های معمول مثل حذف و تغییر ساختار و داده‌ها را انجام دهید. همچنین اگر مایل به اطلاعات بیشتر در رابطه با Ubuntu 18.04 هستید پیشنهاد گروه کلادینو مطالعه دو مقاله نصب و راه اندازی Ansible بر روی Ubuntu 18.04 و راه اندازی اولیه سرور با Ubuntu 18.04 است. همچنین برای ساخت سرور خود و استفاده از قابلیت‌های این ابزار می‌توانید از امکانات کلادینو بهره بوده و در کمتر از چند ثانیه تمامی نیازهای خود را برطرف نمایید.