در حالي كه بسياري از كاربران به عملكرد سيستم مديريت ديتابيس مانند MySQL احتياج دارند ، ممكن است از تعامل با سيستم فقط از طريق MySQL احساس راحتي نداشته باشند.
phpMyAdmin به گونه اي ايجاد شده است كه كاربران بتوانند از طريق يك رابط وب با MySQL در تعامل باشند. در اين راهنما ، ما در مورد نحوه نصب و ايمن سازي phpMyAdmin بحث خواهيم كرد تا بتوانيد با اطمينان از آن استفاده كنيد تا پايگاه هاي داده خود را بر روي سيستم Ubuntu 20.04 مديريت كنيد.
پيش نيازها
براي تكميل اين راهنما ، به موارد زير نياز داريد:
• سرور مجازي Ubuntu 20.04. اين سرور مجازي بايد داراي يك كاربر غير ريشه با امتيازات ادمين و فايروال تنظيم شده با ufw باشد. براي تنظيم اين برنامه ، راهنماي تنظيم اوليه سرور مجازي براي اوبونتو 20.04 را دنبال كنيد.
• يك پشته LAMP (Linux ، Apache ، MySQL و PHP) كه روي سرور مجازي Ubuntu 20.04 شما نصب شده باشد. اگر اين كار هنوز انجام نشده است ، مي توانيد در مورد نصب پشته LAMP در اوبونتو 20.04 اين راهنما را دنبال كنيد.
علاوه بر اين ، هنگام استفاده از نرم افزارهايي مانند phpMyAdmin ملاحظات امنيتي مهمي وجود دارد ، زيرا:
• به طور مستقيم با نصب MySQL شما ارتباط برقرار ميكند
• احراز هويت را با استفاده از اعتبارات MySQL انجام مي دهد
• نتايج را براي پرس و جوهاي SQL دلخواه اجرا مي كند و برميگرداند
به همين دلايل ، و از آنجا كه يك برنامه PHP با استقرار گسترده است كه غالباً مورد حمله قرار مي گيرد ، هرگز نبايد phpMyAdmin را روي سيستم هاي از راه دور از طريق اتصال HTTP ساده اجرا كنيد.
اگر دامنه موجود را با گواهي SSL / TLS پيكربندي نكرده ايد ، مي توانيد اين راهنما را در زمينه ايمن سازي Apache با Let’s encrypt در Ubuntu 20.04 دنبال كنيد. با اين كار شما نياز به ثبت دامنه ، ايجاد ركوردهاي DNS براي سرور مجازي خود و تنظيم يك هاست مجازي Apache داريد.
مرحله 1 – نصب phpMyAdmin
مي توانيد از APT براي نصب phpMyAdmin از مخازن پيش فرض اوبونتو استفاده كنيد.
به عنوان كاربر sudo غير ريشه شما ، ايندكس بسته سرور مجازي خود را به روز كنيد:
⦁ $ sudo apt update
⦁
پس از آن مي توانيد بسته phpmyadmin را نصب كنيد. در كنار اين بسته ، مستندات رسمي همچنين به شما توصيه مي كنند كه چند پسوند PHP را روي سرور مجازي خود نصب كنيد تا قابليت هاي خاص و عملكرد آن را بهبود بخشيد.
اگر آموزش پيش نياز LAMP stack را دنبال كرده باشيد ، چندين مورد از اين ماژول ها به همراه بسته php نصب شده اند. با اين حال ، توصيه مي شود كه اين بسته ها را نيز نصب كنيد:
⦁ php-mbstring: ماژولي براي مديريت رشته هاي غير ASCII و تبديل رشته ها به رمزگذاري هاي مختلف
⦁ php-zip: اين افزونه از آپلود فايلهاي zip در phpMyAdmin پشتيباني مي كند
⦁ php-gd: پشتيباني از كتابخانه GD Graphics را فعال مي كند
⦁ php-json: پشتيباني از PHP را براي سريال سازي JSON فراهم مي كند
⦁ php-curl: به PHP اجازه مي دهد تا با انواع مختلفي از سرور مجازي ها با استفاده از پروتكل هاي مختلف ارتباط برقرار كند
براي نصب اين بسته ها روي سيستم خود دستور زير را اجرا كنيد. لطفاً توجه داشته باشيد كه مراحل نصب نياز دارد انتخاب هايي را براي پيكربندي صحيح phpMyAdmin انجام دهيد. مختصر اين انتخاب ها را بررسي ميكنيم:
⦁ $ sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl
⦁
در اينجا گزينه هايي كه بايد هنگام درخواست از شما براي پيكربندي صحيح نصب خود انتخاب كنيد، آمد اند:
• براي انتخاب سرور مجازي ، apache2 را انتخاب كنيد
هشدار: هنگامي كه اعلان ظاهر مي شود ، “apache2” هايلايت مي شود ، اما انتخاب نشده است. اگر براي انتخاب Apache ، SPACE نزنيد ، نصب كننده هنگام نصب ، فايلهاي لازم را جابجا نمي كند. براي انتخاب Apache ، كليد SPACE ، TAB و سپس ENTER را بزنيد.
• وقتي از شما سؤال شد كه آيا از dbconfig-Common براي راهاندازي پايگاه داده استفاده كنيد ، yes را انتخاب كنيد
• سپس از شما خواسته مي شود رمزعبور برنامه MySQL را براي phpMyAdmin انتخاب و تأييد كنيد
توجه: به فرض اينكه MySQL را با پيروي از مرحله 2 آموزش پيش نياز پشته LAMP نصب كرده ايد ، ممكن است تصميم گرفته باشيد كه افزونه Validate Password را فعال كنيد. همانند اين مقاله ، هنگام تلاش براي تنظيم گذرواژه براي كاربر phpmyadmin ، فعال كردن اين مؤلفه خطايي را ايجاد مي كند:
براي برطرف كردن اين گزينه گزينه abort را انتخاب كنيد تا مراحل نصب متوقف شود. سپس اعلان MySQL را باز كنيد:
⦁ $ sudo mysql
⦁
يا اگر احراز هويت رمز عبور را براي كاربر ريشه MySQL فعال كرده ايد ، اين دستور را اجرا كرده و در صورت درخواست ، رمزعبور خود را وارد كنيد:
⦁ $ mysql -u root -p
⦁
از اعلان ، دستور زير را براي غيرفعال كردن مؤلفه Validate Password اجرا كنيد. توجه داشته باشيد كه اين كار در واقع آن را حذف نمي كند ، بلكه فقط لود مؤلفه در سرور مجازي MySQL را متوقف ميكند:
⦁ Mysql> UNINSTALL COMPONENT “file://component_validate_password”;
⦁
پس از آن ، مي توانيد كلاينت MySQL را ببنديد:
⦁ Mysql> exit
⦁
سپس مجدداً بسته phpmyadmin را نصب كنيد و مطابق آنچه انتظار مي رود كار خواهد كرد:
⦁ $ sudo apt install phpmyadmin
⦁
پس از نصب phpMyAdmin ، مي توانيد يك بار ديگر MySQL را با sudo mysql يا mysql -u root -p باز كنيد و سپس دستور زير را اجرا كنيد تا مجدداً Validate Password را فعال كنيد:
⦁ Mysql> INSTALL COMPONENT “file://component_validate_password”;
⦁
فرآيند نصب فايل پيكربندي phpMyAdmin Apache را به ديركتوري / etc / apache2 / conf-enabled / اضافه مي كند ، جايي كه به طور خودكار خوانده مي شود. براي به پايان رساندن پيكربندي Apache و PHP براي كار با phpMyAdmin ، تنها كار باقيمانده در اين بخش از آموزش اين است كه بطور صريح افزونه mbstring PHP را فعال كنيد ، كه مي توانيد با تايپ كردن اين دستور اين كار را انجام دهيد:
⦁ $ sudo phpenmod mbstring
⦁
پس از آن ، Apache را مجدداً راه اندازي كنيد تا تغييرات شما به رسميت شناخته شود:
⦁ $ sudo systemctl restart apache2
⦁
اكنون phpMyAdmin براي كار با Apache نصب و تنظيم شده است. با اين حال قبل از اينكه بتوانيد وارد شويد و تعامل خود را با پايگاه داده هاي MySQL شروع كنيد ، بايد اطمينان حاصل كنيد كه كاربران MySQL از امتيازات لازم براي تعامل با برنامه برخوردار هستند.
مرحله 2 – تنظيم تأييد اعتبار و امتيازات كاربر
وقتي phpMyAdmin را بر روي سرور مجازي خود نصب كرديد ، به طور خودكار كاربر پايگاه داده اي به نام phpmyadmin ايجاد كرد كه فرآيندهاي پايه خاصي را براي اين برنامه انجام مي دهد. به جاي اينكه به عنوان اين كاربر با گذرواژه اداري كه در حين نصب تنظيم كرده ايد وارد شويد ، توصيه مي شود كه به عنوان كاربر ريشه MySQL يا به عنوان كاربر اختصاصي براي مديريت پايگاه داده از طريق رابط phpMyAdmin وارد شويد.
پيكربندي دسترسي رمز ورود براي حساب ريشه MySQL
در سيستم هاي اوبونتو كه MySQL 5.7 (و نسخه هاي بعدي) را اجرا مي كنند ، تأييد اعتبار كاربر ريشه MySQL بصورت پيش فرض با استفاده از افزونه auth_socket و نه با گذرواژه تنظيم شده است. اين امر امكان امنيت و قابليت استفاده بيشتر را در بسياري از موارد فراهم مي كند ، اما همچنين مي تواند مواردي را پيچيده تر كند كه شما نياز به دسترسي به يك برنامه خارجي – مانند phpMyAdmin – براي دسترسي به كاربر داريد.
براي ورود به سيستم phpMyAdmin به عنوان كاربر ريشه MySQL ، بايد روش احراز هويت آن را از auth_socket به شخصي كه از رمز عبور استفاده مي كند ، تغيير دهيد ، اگر قبلاً اين كار را نكرده ايد. براي اين كار ، اعلان MySQL را از پايانه خود باز كنيد:
⦁ $ sudo mysql
⦁
سپس ، با دستور زير بررسي كنيد كه هر يك از حسابهاي كاربري MySQL از كدام روش تأييد اعتبار استفاده ميكنند:
⦁ Mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
⦁
Output
+——————+——————————————-+———————–+———–+
| user | authentication_string | plugin | host |
+——————+——————————————-+———————–+———–+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | caching_sha2_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | caching_sha2_password | localhost |
+——————+——————————————-+———————–+———–+
5 rows in set (0.00 sec)
در اين مثال ، مي بينيد كه كاربر اصلي با استفاده از افزونه auth_socket ، در واقع تأييد اعتبار مي كند. براي پيكربندي حساب اصلي براي تأييد اعتبار با يك رمز عبور ، دستور ALTER USER زير را اجرا كنيد. حتما گذرواژه را به رمز عبور قوي تغيير دهيد:
⦁ Mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH caching_sha2_password BY ‘password’;
⦁
توجه: جمله قبلي ALTER USER كاربر ريشه MySQL را براي تأييد اعتبار با افزونه caching_sha2_password تنظيم مي كند. طبق اسناد رسمي MySQL ، caching_sha2_password افزونه تأييد هويت MySQL است ، زيرا رمزگذاري پسورد ايمن تري نسبت به نسخه قديمي ارائه ميدهد ، اما هنوز به طور گسترده استفاده مي شود ، mysql_native_password.
با اين حال ، برخي از نسخه هاي PHP قابل اعتماد با caching_sha2_password كار نمي كنند. PHP گزارش داده است كه اين مشكل در PHP 7.4 رفع شده است ، اما اگر در هنگام تلاش براي ورود به سايت phpMyAdmin بعدا با خطايي روبرو شديد ، ميتوانيد به جاي آن ،root را براي تأييد اعتبار خود تنظيم كنيد.
⦁ Mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;
⦁
سپس روش تأييد اعتبار استفاده شده توسط هريك از كاربران خود را دوباره بررسي كنيد تا تأييد كنيد كه root ديگر با استفاده از افزونه auth_socket تاييد اعتبار نميكند:
⦁ Mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
⦁
Output
+——————+——————————————-+———————–+———–+
| user | authentication_string | plugin | host |
+——————+——————————————-+———————–+———–+
| root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | caching_sha2_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | caching_sha2_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | caching_sha2_password | localhost |
+——————+——————————————-+———————–+———–+
5 rows in set (0.00 sec)
مي توانيد از اين خروجي مشاهده كنيد كه كاربر اصلي با استفاده از يك رمز عبور تأييد اعتبار مي كند. اكنون مي توانيد
به عنوان كاربر اصلي خود با گذرواژه اي كه در اينجا براي آن تنظيم كرده ايد وارد رابط phpMyAdmin شويد.
پيكربندي دسترسي رمز ورود براي يك كاربر اختصاصي MySQL
از طرف ديگر ، برخي ممكن است عقيده داشته باشند كه اتصال به phpMyAdmin با يك كاربر اختصاصي ، بيشتر با گردش كار آن ها تناسب دارد. براي انجام اين كار ، يكبار ديگر پوسته MySQL را باز كنيد:
⦁ $ sudo mysql
⦁
اگر احراز هويت رمز عبور را براي كاربر اصلي خود فعال كرده ايد ، همانطور كه در قسمت قبل توضيح داده شد ، لازم است دستور زير را اجرا كنيد و در صورت درخواست ، رمز ورود خود را وارد كنيد:
⦁ $ mysql -u root -p
⦁
از آنجا ، يك كاربر جديد ايجاد كرده و يك رمزعبور قوي به آن بدهيد:
⦁ Mysql> CREATE USER ‘sammy’@’localhost’ IDENTIFIED WITH caching_sha2_password BY ‘password’;
⦁
توجه: باز هم بسته به نوع نسخه PHP كه نصب كرده ايد ، ممكن است بخواهيد كاربر جديد خود را به جاي caching_sha2_password ، با mysql_native_password تأييد هويت كنيد:
⦁ Mysql> ALTER USER ‘sammy’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;
⦁
سپس به كاربر جديد خود امتيازات مناسب اعطا كنيد. به عنوان مثال ، شما مي توانيد امتيازات كاربر را به تمام جداول موجود در ديتابيس و همچنين قدرت اضافه كردن ، تغيير و حذف امتيازهاي كاربر با اين دستور اعطا كنيد:
⦁ Mysql> GRANT ALL PRIVILEGES ON *.* TO ‘sammy’@’localhost’ WITH GRANT OPTION;
⦁
پس از آن ، از پوسته MySQL خارج شويد:
⦁ Mysql> exit
⦁
اكنون مي توانيد با مراجعه به نام دامنه سرور مجازي يا آدرس IP عمومي و به دنبال آن / phpmyadmin به رابط وب دسترسي پيدا كنيد:
https://your_domain_or_IP/phpmyadmin
به عنوان روت يا با نام كاربري و رمزعبور جديدي كه پيكربندي كرده ايد ، وارد رابط شويد.
وقتي وارد سيستم مي شويد ، رابط كاربري را مشاهده خواهيد كرد كه چيزي شبيه به اين خواهد بود:
اكنون كه مي توانيد به phpMyAdmin متصل شده و با آنها ارتباط برقرار كنيد ، تمام كارهايي كه انجام شده است ، تضمين امنيت سيستم شما براي محافظت از آن در برابر مهاجمان است.
مرحله 3 – ايمن سازي نمونه phpMyAdmin
phpMyAdmin به دليل فراگير بودن آن ، يك هدف محبوب براي مهاجمين است و براي جلوگيري از دسترسي غيرمجاز بايد مراقبت بيشتري كنيد. يكي از ساده ترين راه هاي انجام اين كار ، قرار دادن يك دروازه در جلوي كل برنامه با استفاده از ويژگي هاي تأييد اعتبار داخلي .htaccessدر Apache است.
براي انجام اين كار ، ابتدا بايد فايل .htaccessرا كه با ويرايش فايل پيكربندي Apache نصب phpMyAdmin لغو شده را فعال كنيد.
از ويرايشگر متن دلخواه خود براي ويرايش فايل phpmyadmin.conf كه در ديركتوري تنظيمات Apache شما قرار گرفته است ، استفاده كنيد. در اينجا ، ما از nano استفاده خواهيم كرد:
⦁ $ sudo nano /etc/apache2/conf-available/phpmyadmin.conf
⦁
يك دستورالعمل AllowOverride All را در بخش
/etc/apache2/conf-available/phpmyadmin.conf
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
. . .
وقتي اين خط را اضافه كرديد ، فايل را ذخيره كنيد و ببنديد. اگر از nano براي ويرايش فايل استفاده كرده ايد ، اين كار را با فشار دادن CTRL + X ، Y و سپس enter انجام دهيد.
براي اجراي تغييراتي كه ايجاد كرده ايد ، Apache را مجدداً راه اندازي كنيد:
⦁ $ sudo systemctl restart apache2
⦁
اكنون كه استفاده از .htaccess را براي برنامه خود فعال كرده ايد ، بايد يك مورد از آن را ايجاد كنيد تا در واقع برخي از اقدامات امنيتي را پياده سازي كنيد. براي موفقيت در اين امر ، فايل بايد در ديركتوري برنامه كاربردي ايجاد شود. با تايپ كردن اين دستور مي توانيد فايل لازم را ايجاد كرده و در ويرايشگر متن خود با امتيازات اصلي باز كنيد:
⦁ $ 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
⦁
از شما خواسته مي شود يك رمز عبور را براي كاربر مورد نظر خود انتخاب و تأييد كنيد. پس از آن ، فايل با رمز عبور hashed كه وارد كرده ايد ايجاد مي شود.
از شما خواسته مي شود يك رمز عبور براي كاربر مورد نظر خود انتخاب و تأييد كنيد. پس از آن ، فايل با رمز عبور hashed كه وارد كرده ايد ايجاد مي شود.
⦁ $ sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser
⦁
اگر مي خواهيد يك كاربر اضافي وارد كنيد ، بايد بدون پرچم -c اين كار را انجام دهيد ، مانند اين:
https://domain_name_or_IP/phpmyadmin
پس از وارد كردن شناسه Apache ، براي وارد كردن اعتبار MySQL به صفحه تأييد صحت phpMyAdmin منتقل مي شويد. اين تنظيم، لايه امنيتي بيشتري را اضافه مي كند ، كه از آنجايي كه phpMyAdmin قبلا آسيب پذير بود ، مطلوب خواهد بود.
نتيجه
اكنون بايد phpMyAdmin را در سرور مجازي Ubuntu 20.04 خود تنظيم و آماده استفاده كرده باشيد. با استفاده از اين رابط ، مي توانيد به راحتي پايگاه داده ، كاربران ، جداول و غيره ايجاد كرده و عمليات معمول مانند حذف و اصلاح ساختارها و داده ها را انجام دهيد.
برچسبها:Apache, LAMP stack, MySQL, phpMyAdmin