آموزش نصب و امن سازی phpmyAdmin در Ubuntu 18.0

۱۳ آذر ۱۳۹۹ مطالعه ۴ دقیقه

در حالی که بسیاری از کاربران نیازمند یک سیستم مدیریتی دیتابیس مثل MySQL هستند اما شاید کار کردن با سیستمی که تنها داری MySQL است در آنها احساس رضایت ایجاد نکند.

به همین دلیل phpMyAdmin ‌ساته شد تا کاربران از طریق یک رابط وب بتوانند با MySQL کار کنند. در اینجا قصد داریم آموزش نصب و امن سازی phpMyAdmin را توضیح دهیم تا بتوانید با خیال راحت از آن برای مدیریت دیتابیس های خود در یک سیستم Ubuntu 18.04 استفاده کنید.

پیش نیازها

قبل از شروع باید مراحل اولیه زیر را تکمیل کنید.
ابتدا اگر سرور شما با دستور sudo روت نشده و یا firewall با دستور ufw ساخته نشده باشد می توانید با استفاده از راهنمای تنظیمات اولیه سرور برای Ubuntu 18.04 آن را انجام دهید.

سپس باید برنامه LAMP (مخفف لینوکس، آپاچی، MySQL، و PHP ) را به طور کامل بر روی سرور خود نصب کرده باشید. در غیر این صورت می توانید با استفاده از راهنمای نصب LAMP در Ubuntu 18.04 این کار را انجام دهید.

در آخر، هنگام استفاده از نرم افزاری مثل phpMyAdmin باید نکات امنیتی مهمی را رعایت کنید که به شرح زیر است:

• برقراری ارتباط صرفا از طریق نصب MySQL
• مدیریت تاییدیه ها با استفاده مدارک MySQL
• اجرا و بازگردانی نتایج حاصله به SQL قراردادی

به دلایل بالا و همین طور گستردگی نرم افزار PHP که اغلب به آن حمله می شود، هرگز نباید phpMyAdmin را بر روی سیستم های HTTP اجرا کرد. اگر دامنه پیکربندی شده با SSL/TLS ندارید می توانید از راهنمای امنیت آپاچی در Ubuntu 18.04 استفاده کنید که در آن به ثبت کردن نام دامنه، ساخت رکورد DNS در سرور، و تنظیم کردن آپاچی مجازی می پردازد.

هنگامی که مراحل بالا را انجام دادید دیگر می توانید آموزش زیر را شروع کنید.

مرحله1: نصب phpMyAdmin

برای شروع، phpMyAdmin‌ را از مخزن پیش فرض Ubuntu نصب می کنیم.
برای این کار ابتدا پکیج index سرور خود را به روز رسانی کرده سپس با استفاده از دستور apt فایل ها را تقسیم بندی کرده و روی سیستم نصب کنید:


sudo apt update $



sudo apt install phpmyadmin php-mbstring php-gettext $


در اینجا چند سوال از شما پرسیده می شود تا پیکربندی به درستی انجام شود.

هشدار: هنگامی که پیامی ظاهر شود یعنی”آپاچی 2 “هایلایت شده ولی هنوز انتخاب نشده است. اگر کلید SPACE را نزنید، در حین فرایند نصب فایل های ضروری انتقال نخواهند یافت. پس برای انتخاب آپاچی اول کلید SPACE را زده سپس کلید TAB را بزنید و درآخر کلید ENTER را فشار دهید.

• برای انتخاب سرور، گزینه apache2 را بزنید.
• اگر از شما پرسید برای تنظیمات دیتابیس از دستور dbconfig-common استفاده کند یا خیر، گزینه Yes را انتخاب کنید.
• سپس از شما می خواهد یک رمز عبور برای phpMyAdmin‌ انتخاب کنید.

در این فرایند نصب، فایل های پیکربندی آپاچی به آدرس /etc/apache2/conf-enabled/ اضافه شده و به طور اتومانیک خوانده می شوند. تنها کاری که شما باید انجام دهید این است که دستور mbstring را به صورت زیر فعال کنید:


sudo phpenmod mbstring $


پس از آن آپاچی را ری استارت کرده تا تغییرات صورت گرفته اعمال شوند:


sudo systemctl restart apache2 $


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

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

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

دسترسی به رمزعبور برای حساب کاربری روت شده MySQL

در سیستم های Ubuntu که 5.7MySQL (یا ورژن های بالاتر) اجرا شده است، کاربر روت شده به جای رمزعبور با استفاده از پلاگین پیش فرض auth_socket تایید می شود. این کار باعث امنیت بیشتر و کارایی بهتر می شود اما زمانی که باید به کاربر مجوز دسترسی به یک برنامه خارجی مثل phpMyAdmin داده شود باعث بروز مشکل خواهد شد.

زمانی که به عنوان کاربر روت شده MySQL، وارد phpMyadmin می شوید باید شیوه تایید را از حالت auth_socket به حالت mysql_native_password تغییر دهید. برای انجام این کار MySQL را از قسمت ترمینال باز کنید:


sudo mysql $


سپس با استفاده از دستور زیر چک کنید روش تایید حساب کاربری شما به چه صورت است:


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



Output
+——————+——————————————-+———————–+———–+
| 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)


در مثال بالا دیدید که کاربر روت شده با استفاده از پلاگین auth_socket تایید شد. برای تایید حساب کاربری روت شده با استفاده از رمزعبور، دستور ALTER USER زیر را اجرا کنید. عبارت password را با یک رمزعبور قوی تغییر دهید:


ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;


سپس دستور FLUSH PRIVILEGES را اجرا کنید که یعنی سرور جدول ها را مجددا بارگذاری کرده و تغییرات جدید را اعمال می کند:


FLUSH PRIVILEGES;


روش های تایید هر کدام از کاربران خود را با استفاده از پلاگین auth_socket دوباره بررسی کنید:


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



Output
+——————+——————————————-+———————–+———–+
| 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)


در این مثال دیدید که کاربر روت شده با استفاده از یک رمزعبور تایید شد. اکنون می توانید به عنوان یک کاربر روت شده با استفاده از رمزعبوری که ساختید به phpMyAdmin خود وارد شوید.

دسترسی به رمزعبور برای کاربر اختصاصی MySQL

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


sudo mysql $ 


توجه: اگر رمزعبور شما فعال است (همان طور که در قسمت قبل توضیح دادیم)، باید با یک دستور دیگر وارد MySQL شوید. با دستور زیر کلاینت شما با امتیازات کاربر معمولی اجرا شده و فقط امتیازات administrator را به دست خواهید آورد:


mysql -u root -p


سپس یک حساب کاربری جدید بسازید و رمزعبور قوی برای آن انتخاب کنید:


CREATE USER ‘sammy’@’localhost’ IDENTIFIED BY ‘password’;


حالا برای کاربر جدید خود امتیازاتی لحاظ کنید. برای مثال می توانید قدرت اضافه کردن، تغییر دادن و حذف کردن تمام جدول های داخل دیتابیس را به آن اختصاص دهید. برای این کار از دستور زیر استفاده کنید:


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


سپس با این دستور از محیط MySQL خارج شوید:


exit


اکنون شما می توانید با مشاهده اسم دامنه سرور و یا IP آدرس عمومی خود به رابط وب دسترسی یابید. به این صورت:


http://your_domain_or_IP/phpmyadmin


با روش روت و یا با استفاده از نام کاربری و رمزعبور جدیدی که ساختید وارد رابط شوید.

هنگام ورود، رابطی شبیه به تصویر زیر خواهید دید:

اکنون می توانید به phpMyAdmin متصل شده و با آن کارکنید. تمام عملیات گفته شده به منظور محکم تر شدن سیستم امنیتی شما بوده تا در مقابل حمله ها در امان باشید.

مرحله 3: ایمن سازی رابط phpMyAdmin

phpMyAmin به دلیل دسترسی بالایی که دارد بسیار مورد حمله قرار می گیرد در نتیجه باید برای جلوگیری از دسترسی های غیر مجاز بیشتر از آن مراقبت کرد. ساده ترین راه این است که با استفاده از دستور .htaccess آپاچی یک دروازه در سراسر اپلیکیشن ایجاد کنیم.

برای این کار ابتدا باید با ویرایش کردن فایل پیکربندی آپاچی، استفاده از دستور .htaccess را فعال کنید.

لینک فایل هایی که در پیکربندی آپاچی قرار دارند را به صورت زیر ویرایش کنید:


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


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


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


سپس فایل را ذخیره کرده و ببندید.

برای اعمال تغییرات، آپاچی را ری استارت کنید:


sudo systemctl restart apache2 $


اکنون که دستور .htaccess را فعال کردید باید ابزاری برای امنیت آن بسازید.

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


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


در اینجا باید برای کاربری که ساختید یک رمزعبور انتخاب کرده و آن را تایید کنید. سپس فایلی با رمز عبور غیر قابل دیدن ( hashed password )ساخته خواهد شد.

اگر می خواهید کاربر دیگری اضافه کنید باید بدون وارد کردن –c این کار را انجام دهید. به این صورت:


sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser $


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


https://domain_name_or_IP/phpmyadmin


پس از وارد نمودن مجوز آپاچی، به صفحه دائمی phpMyAdmin می روید. این setup یک بخش دیگری در ایمن سازی اضافه کرده که در زمان گذشته وقتی phpMyAdmin مورد آسیب قرار می گرفت بسیار از آن استقبال شد.

جمع بندی

اکنون باید phpMyAdmin خود را پیکربندی کرده و از آن در سرور Ubuntu 18.04 استفاده کنید. با استفاده از این رابط به راحتی می توانید دیتابیس، کاربر، جدول و… ساخته و کارهای معمولی مثل پاک کردن و تغییر دادن اطلاعات و ساختارهار را انجام دهید.


داغ‌ترین مطالب روز

بهترین DNS برای گیم

بهترین DNS برای گیم

DNS یکی از مهم ترین مواردی است که سبب می شود تا تجربه شما از بازی کردن بهبود یافته و اتصال شما به سرورها پایداری و ثبات پیدا کند. اما پیدا کردن دی ان اس خوب برای بازی ها آنلاین به خصوص بازی هایی نظیر Valorant، Call of Duty و … همواره چالش محسوب شده […]

۱۶ خرداد ۱۴۰۱ ۷

سرور ابری

سرور ابری

سرور ابری و یا سرویس ابری از اصطلاحاتی هستند که امروزه به آن زیاد بر می خوریم. اما شاید تا کنون درک درستی در خصوص خدمات مبتنی بر ابر و سرور ابری (سرور رایانش ابری) نداشته باشیم. انتخاب خدمات مرکز داده مناسب ، می تواند تاثیر به سزایی در هزینه های یک کسب و کار […]

۲ تیر ۱۳۹۹ ۵

آموزش دانلود از اینترنت

آموزش دانلود از اینترنت

دانلود کردن بخش جدایی ناپذیر این روزهای زندگی شده است. هر روز حجم عظیمی از اطلاعات دانلود و آپلود شده و به زندگی مجازی جان می بخشد. اما نحوه دانلود اصولی و حرفه ای از اینترنت به چه صورت است؟ چطور دانلود کنیم که از سالم بودن فایل اطمینان بالایی داشته باشیم؟ در این مقاله […]

۱۱ بهمن ۱۴۰۰ ۳

آموزش رفع مشکل وصل نشدن اینترنت در ویندوز 7

آموزش رفع مشکل وصل نشدن اینترنت در ویندوز 7

اینترنت یکی از مهم ترین عناصر زندگی در عصر امروز است. اما اگر نتوانیم با ویندوز به اینترنت وصل شویم چه؟ مشکل وصل نشدن اینترنت در ویندوز 7 چیست؟ در این مقاله به آموزش رفع مشکل وصل نشدن اینترنت در ویندوز 7 می پردازیم تا با بررسی راه حل های آن بتوانید به صورت اصولی […]

۲۸ اردیبهشت ۱۴۰۱ ۳

سرور مجازی مناسب کسب‌وکار کوچک

سرور مجازی مناسب کسب‌وکار کوچک

امروزه در دنیای مدرن و پیشرفته‌ای زندگی می‌کنیم که پتانسیل‌های کسب‌وکارها بدون معرفی در فضای مجازی، دست‌نخورده و اتلاف شده باقی می‌مانند و امکان شکست آن‌ها افزایش می‌یابد. بنابراین، طراحی و استفاده از یک وب سایت می‌تواند به گسترش این کسب‌وکارهای کوچک کمک کند و آن را به سرعت توسعه دهد. این وب سایت به […]

۳۰ شهریور ۱۴۰۰ ۲

دیدگاه‌ها

comment symbol

برای این مقاله ۰ دیدگاه نوشته شده است. دیدگاه شما چیست؟

شما نیز، دیدگاه خود را از طریق دکمه زیر به اشتراک بگذارید.

نوشتن دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *