تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

نحوه نصب و ایمن سازی phpMyAdmin در سرور مجازی اوبونتو Ubuntu


۲۰ بهمن ۱۴۰۳

مقدمه

در حالی که بسیاری از کاربران به قابلیت‌های یک سیستم مدیریت پایگاه داده (Database Management System – DBMS) مانند MySQL نیاز دارند، ممکن است احساس راحتی نکنند که فقط از طریق پرامپت‌نویسی MySQL با سیستم تعامل داشته باشند.

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

پیش نیازها

برای تکمیل این راهنما، شما به موارد زیر نیاز خواهید داشت:

  • یک سرور مجازی Ubuntu که دارای یک کاربر غیر root با دسترسی sudo باشد و firewall آن با ufw پیکربندی شده باشد. برای انجام این کار، می‌توانید راهنمای تنظیم اولیه سرور در Ubuntu را دنبال کنید.
  • یک LAMP Stack (Linux, Apache, MySQL, PHP) که روی سرور Ubuntu شما نصب شده باشد.

علاوه بر این، هنگام استفاده از نرم‌افزاری مانند phpMyAdmin، توجه به مسائل امنیتی ضروری است، زیرا:

  • مستقیماً با MySQL ارتباط برقرار می‌کند.
  • فرآیند احراز هویت را با استفاده از مشخصات کاربری MySQL انجام می‌دهد.
  • کوئری‌های SQL دلخواه را اجرا کرده و نتایج را بازمی‌گرداند.

به همین دلایل و همچنین به دلیل اینکه phpMyAdmin یک برنامه PHP پرکاربرد است که معمولاً هدف حملات امنیتی قرار می‌گیرد، هرگز نباید آن را روی سیستم‌های ریموت، بدون استفاده از اتصال امن HTTPS اجرا کنید.

در ادامه، بخوانید:

  • مرحله اول: نحوه نصب phpMyAdmin بر روی سرور مجازی
  • مرحله دوم: نحوه تنظیم احرازهویت کاربر و دسترسی‌های آن در phpMyAdmin
  • مرحله سوم: نحوه ایمن‌سازی phpMyAdmin

مرحله اول: نحوه نصب phpMyAdmin بر روی سرور مجازی

شما می‌توانید با استفاده از APT، بسته phpMyAdmin را از repositoryهای پیش‌فرض Ubuntu نصب کنید. به‌عنوان یک کاربر غیر root با دسترسی sudo، ابتدا فهرست بسته‌های سرور مجازی خود را به‌روزرسانی کنید (در صورتی که اخیراً این کار را انجام نداده‌اید):

sudo apt update

سپس می‌توانید پکیج phpMyAdmin را نصب کنید. علاوه بر این پکیج، مستندات رسمی توصیه می‌کنند که چندین افزونه PHP را نیز روی سرور خود نصب کنید تا برخی از قابلیت‌های phpMyAdmin فعال شده و عملکرد آن بهبود یابد:

  • php-mbstring: یک ماژول برای مدیریت رشته‌های غیر ASCII و تبدیل آن‌ها به رمزگذاری‌های مختلف
  • php-zip: افزونه‌ای که از آپلود فایل‌های ZIP در phpMyAdmin پشتیبانی می‌کند.
  • php-gd: امکان پشتیبانی از کتابخانه گرافیکی GD را فراهم می‌کند.
  • php-json: پشتیبانی از JSON را در PHP فراهم می‌کند.
  • php-curl: امکان برقراری ارتباط PHP با سرورهای مختلف از طریق پروتکل‌های مختلف را فراهم می‌کند.

برای نصب این پکیج phpMyAdmin و افزونه‌های معرفی شده، دستور زیر را اجرا کنید:

sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl

در حین نصب، شما باید چندین گزینه را برای پیکربندی صحیح phpMyAdmin انتخاب کنید:

  • در قسمت انتخاب سرور وب، گزینه apache2 را انتخاب کنید (هنگام نمایش گزینه‌ها، apache2 بولد شده است اما انتخاب نشده است. برای انتخاب آن، ابتدا SPACE را فشار دهید، سپس TAB را بزنید و در نهایت ENTER را انتخاب کنید).
  • در قسمت استفاده از dbconfig-common برای پیکربندی پایگاه داده، گزینه Yes را انتخاب کنید.
  • در قسمت تنظیم رمز عبور برای phpMyAdmin در MySQL: شما باید یک رمز عبور برای کاربر phpmyadmin در MySQL تعیین کنید.

اگر هنگام نصب MySQL، افزونه Validate Password را فعال کرده باشید، ممکن است هنگام تنظیم رمز عبور برای کاربر phpMyAdmin با خطای زیر مواجه شوید:

برای رفع مشکل، گزینه abort را انتخاب کنید تا فرایند نصب متوقف شود. سپس پرامپت MySQL را باز کنید:

sudo mysql

یا اگر احراز هویت با رمز عبور را برای کاربر root در MySQL فعال کرده‌اید، دستور زیر را اجرا کرده و رمز عبور را وارد کنید:

mysql -u root -p

سپس دستور زیر را برای غیرفعال کردن Validate Password اجرا کنید (این کار باعث حذف کامل این افزونه نمی‌شود، بلکه فقط از بارگذاری آن جلوگیری می‌کند):

UNINSTALL COMPONENT "file://component_validate_password";

پس از آن، از MySQL خارج شوید:

exit

حالا، دوباره phpMyAdmin را اجرا کنید:

sudo apt install phpmyadmin

پس از نصب، می‌توانید دوباره پرامپت MySQL را باز کنید و افزونه Validate Password را مجدداً فعال کنید:

INSTALL COMPONENT "file://component_validate_password";

فرایند نصب phpMyAdmin، فایل پیکربندی آن برای Apache را، در مسیر زیر اضافه می‌کند:

/etc/apache2/conf-enabled/

با انجام این کار، فایل پیکربندی به صورت خودکار، توسط Apache خوانده خواهد شد. برای تکمیل پیکربندی Apache و PHP به‌منظور کار با phpMyAdmin، تنها کاری که باقی می‌ماند این است که ماژول mbstring را در PHP فعال کنید. برای این کار، دستور زیر را اجرا کنید:

sudo phpenmod mbstring

سپس برای اعمال تغییرات، Apache را مجدداً راه‌اندازی کنید:

sudo systemctl restart apache2

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

مرحله دوم: نحوه تنظیم احرازهویت کاربر و دسترسی‌های آن در phpMyAdmin

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

تنظیم احراز هویت مبتنی بر رمز عبور برای حساب کاربری root در MySQL

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

sudo mysql

روش احراز هویت کاربران MySQL را برررسی کنید:

SELECT user,authentication_string,plugin,host FROM mysql.user;

خروجی:

+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$I:jOry?]Sy<|qhQRj3fBRQ43i4UJxrpm.IaT6lOHkgveJjmeIjJrRe6         | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| phpmyadmin       | $A$005$?#{Z?`gN!c2az)}V-INCWXSuVdqB9zWteH1IkZfTe/rOLgVhSzEMM9R3G6K9    | caching_sha2_password | localhost |
| root             |                                                                        | auth_socket           | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
6 rows in set (0.00 sec)

طبق خروجی فوق، کاربر root از auth_socket برای احراز هویت استفاده می‌کند. اکنون، روش احراز هویت را به روش مبتنی بر رمز عبور تغییر دهید:

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'your_strong_password';
  • افزونه caching_sha2_password به دلیل رمزنگاری قوی‌تر، در نسخه‌های جدید MySQL توصیه می‌شود.
  • اگر بعداً هنگام ورود به phpMyAdmin با مشکل مواجه شدید، می‌توانید از روش mysql_native_password استفاده کنید:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

تغییرات را مجدداً بررسی کنید:

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

اکنون، کاربر root از رمز عبور برای احراز هویت استفاده می‌کند و می‌توانید با آن وارد phpMyAdmin شوید.

ایجاد کاربر اختصاصی برای ورود به phpMyAdmin

اگر به‌جای استفاده از کاربر root ترجیح می‌دهید از یک کاربر اختصاصی برای ورود به phpMyAdmin استفاده کنید، در ابتدا، برای این کار، وارد محیط MySQL در ترمینال شوید:

sudo mysql

اگر احراز هویت مبتنی بر رمز عبور برای root فعال است، از دستور زیر استفاده کنید و رمز عبور خود را وارد کنید:

mysql -u root -p

در ادامه، با اجرای دستور زیر، یک کاربر جدید ایجاد، و یک رمز عبور قوی، تنظیم کنید:

CREATE USER 'username'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'your_secure_password';

اگر نسخه PHP سرور شما قدیمی است و با caching_sha2_password مشکل دارد، می‌توانید روش mysql_native_password را انتخاب کنید:

ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_secure_password';

اکنون، مجوزهای لازم را به کاربر جدید، اعطا کنید:

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

در نهایت، از محیط MySQL خارح شوید:

exit;

ورود به phpMyAdmin

اکنون می‌توانید از طریق مرورگر وارد phpMyAdmin شوید. برای این کار، آدرس زیر را در مرورگر خود وارد کنید:

https://your_domain_or_IP/phpmyadmin

باید صفحه زیر را مشاهده بفرمایید:

در صفحه ورود به phpMyAdmin، می‌توانید با کاربر root یا کاربر جدیدی که ایجاد کردید، وارد شوید. پس از ورود، صفحه رابط کاربری phpMyAdmin را مشاهده خواهید کرد:

مرحله سوم: نحوه ایمن‌سازی phpMyAdmin

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

از ویرایشگر متن مورد علاقه خود برای ویرایش فایل phpmyadmin.conf که در دایرکتوری پیکربندی Apache قرار دارد، استفاده کنید. در اینجا، از nano استفاده می‌کنیم:

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

در این فایل، دستور AllowOverride All را در بخش <Directory /usr/share/phpmyadmin> اضافه کنید:

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
    AllowOverride All
    . . .

پس از اضافه کردن این خط، فایل را ذخیره کرده و ببندید. اگر از nano استفاده می‌کنید، با فشردن CTRL + X، سپس Y و در نهایت ENTER این کار را انجام دهید. برای اعمال تغییرات، سرویس Apache را مجدداً راه‌اندازی کنید:

sudo systemctl restart apache2

اکنون که امکان استفاده از فایل .htaccess را فعال کرده‌اید، باید یک فایل .htaccess ایجاد کنید تا برخی از اقدامات امنیتی را اجرا کند. این فایل باید در دایرکتوری برنامه قرار گیرد. برای ایجاد این فایل و باز کردن آن با دسترسی root، دستور زیر را اجرا کنید:

sudo nano /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

پس از اجرای این دستور، از شما خواسته می‌شود که یک رمز عبور برای کاربر ایجاد کنید و آن را تأیید نمایید. سپس این فایل با رمز عبور هش‌شده ذخیره می‌شود. اگر بخواهید کاربران بیشتری اضافه کنید، باید این کار را بدون استفاده از -c انجام دهید:

sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser

در نهایت، برای اعمال تنظیمات، سرویس Apache را مجدداً راه‌اندازی کنید:

sudo systemctl restart apache2

اکنون، هنگامی که به مسیر phpMyAdmin در سرور خود دسترسی پیدا کنید، سیستم از شما درخواست نام کاربری و رمز عبور اضافی خواهد کرد:

https://domain_name_or_IP/phpmyadmin

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

نتیجه گیری

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

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