نحوه نصب و ایمن سازی phpMyAdmin روی لینوکس
در این پست می خواهیم با بررسی نحوه نصب و ایمن سازی phpMyAdmin روی لینوکس در خدمت شما کاربران عزیز باشیم. امیدواریم مقاله نحوه نصب و ایمن سازی phpMyAdmin روی لینوکس برای شما نیز مفید و کاربردی باشد. با ما همراه باشید.
سیستم های مدیریت پایگاه داده رابطه ای مثل MySQL و MariaDB برای قسمـت قابل توجهی از وب سایت ها و برنامه های کاربردی مورد نیاز می باشد. با این حال، همـه کاربران با مدیریت داده های خود از خط فرمان احساس آسانـی نمی کنند.
برای حل این مشکل، یک طرح به نام phpMyAdmin به منظور عرضه یک جایگزین در استـایل یک رابط مدیریت مبتنی بر وب ساخته شد. در این مقاله، ما چگونگی نصب و ایمن سازی تنظیمات phpMyAdmin را بر روی سرور لینوکس CentOS 7 و وب سرور nginx آموزش خواهیم داد. وب سرور nginx حاوی کارکرد مناسبی بوده و در رو به روی لود و ترافیک سنگین قدرت زیادتری نسبت به سایـر وب سرور ها دارد.
پیش نیازهای نصب و ایمن سازی phpMyAdmin روی لینوکس
برای اطمینان از دارا بودن یک پایگاه منسجم و مستحکم برای تهیه این سیستم ، شما می بایست راهنمای راه اندازی اولیه سرور را برای CentOS 7 اجرا نمایید . اینکار شما را به تهیه یک کاربر غیر روت با دسترسی sudo برای انجام دستورات اجرایی سوق خواهـد داد .
پیش نیاز دوم نصب LEMP (Linux ، Nginx، MariaDB، و PHP) بر روی لینوکس CentOS 7 می باشد. این پلت فرمی می باشد که ما برای رابط phpMyAdmin از آن بهره گیری خواهیم نمـود (MariaDB نرم افزار مدیریت دیتابیسی می باشد که ما نیت مدیریت آن را داریم ) . چنان چه LEMP بر روی سرور شما نصب نیست، برای نصب آن مقاله پایین را مطالعه نمایید :
https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-centos-7
وهله اول – نصب phpMyAdmin
با بهره گیری از پلت ساختـار LEMP خواهید توانست ، نصب نرم افزار phpMyAdmin را شـروع نمایید . متاسفانه، phpMyAdmin بطور پیش فرض در مخزن لینوکس CentOS 7 موجود نیست.
برای دریسقوط پکیج های مورد نیاز ، می بایست یک مخزن دیگر به سیستم خود اضافه نمایید . مخزن EPEL حاوی پکیج های فراوانـی ، از جمله پکیج phpMyAdmin می باشد.
دستور پایین را اجرا نمایید :
cd ~ wget http://download.fedoraproject.org/pub/epel/7/x86_64/epel-release-7-1.noarch.rpm
1 2 | cd ~ wget http://download.fedoraproject.org/pub/epel/7/x86_64/epel-release-7-1.noarch.rpm |
سپس خواهید توانست پکیجی که به آسانی سیستم شما را برای دسترسی به مخازن EPEL پیکربندی کرده ، نصب نمایید . پـس از آن، فایل پکیج را پاک نمایید ، چون دیگر به آن نیازی ن دارید :
sudo rpm -ivh epel-release*rm epel-release*
1 | sudo rpm -ivh epel-release*rm epel-release* |
مخزن EPEL پیکربندی شده می باشد و خواهید توانست پکیج phpMyAdmin را با بهره گیری از دستور yum نصب نمایید :
sudo yum install phpmyadmin
1 | sudo yum install phpmyadmin |
نصب و راه اندازی تکمیل می شود . برای پیدا کردن و عرضه خدمات درست وب سرور Nginx ، به فایل های phpMyAdmin تنها می بایست با بهره گیری از دستور پایین یک لینک نمادین از فایل های نصبی در مدرک Nginx موجود در دایرکتوری روت خود تهیه نمایید :
sudo ln -s /usr/share/phpMyAdmin /usr/share/nginx/html
1 | sudo ln -s /usr/share/phpMyAdmin /usr/share/nginx/html |
برای اطمینان از لود شدن ماژول های PHP نصب شده ، پردازنده PHP خود را با بهره گیری از دستور پایین ری استارت نمایید :
sudo systemctl restart php-fpm
1 | sudo systemctl restart php-fpm |
به منظور دسترسی به رابط کاربری برای ادامه وهله ها نصب ، این آدرس را در مرورگر خود تایپ نمایید :
http://server_domain_or_IP/phpMyAdmin
به جای server_domain_or_IP نام دامنه یا IP آدرس سرور خود را قرار دهید :
برای داخل به سیستم، از نام کاربری و رمز گذر یک کاربر معتبر MariaDB بهره گیری نمایید :
آموزش نصب و ایمن سازی phpMyAdmin روی لینوکس
وهله دوم – ایمن سازی phpMyAdmin
phpMyAdmin نصب شده بر روی سرور شما می بایست در این وهله بطور نکمیل قابل بهره گیری باشد. با این حال، با نصب یک رابط وب، سیستم MySQL خود را رو به سوی دنیا بیرون قرار داده اید.
یکـی از عـلت ها معروف یت phpMyAdmin در دسترس قرار دادن سایز بیشتری از اطلاعات می باشد. چنین سیستم هایی اغلب هدف یورش اتکر ها قرار میگیرند .
ما برای کم شدن شانس تهدید ، ۲ استراتژی آسان اجرا میکنیم .
- تغییر محل رابط کاربری از پوشه /phpMyAdmin به مکانی دیگر برای مواجهه با حملات اتوماتیک brute-force .
- ایجاد یک صفحه داخل ی تائید هویت در سطح وب سرور، پیش از صفحه login یا داخل به phpMyAdmin
تغییر محل دسترسی به برنامه :
در وهله پیش یک لینک نمادین از فایل های نصبی در مدرک Nginx موجود در دایرکتوری روت تهیه شد. برای تغییر URL رابط کاربری phpMyAdmin ، به آسانی لینک نمادین را rename نمایید . به مدرک nginx در پوشه روت وارد شوید:
cd /usr/share/nginx/html ls -l
1 2 | cd /usr/share/nginx/html ls -l |
-rw-r–r– 1 root root 537 Aug 5 08:15 50x.html -rw-r–r– 1 root root 612 Aug 5 08:15 index.html lrwxrwxrwx 1 root root 21 Aug 6 17:29 phpMyAdmin -> /usr/share/phpMyAdmin
1 2 3 | -rw-r–r– 1 root root 537 Aug 5 08:15 50x.html -rw-r–r– 1 root root 612 Aug 5 08:15 index.html lrwxrwxrwx 1 root root 21 Aug 6 17:29 phpMyAdmin -> /usr/share/phpMyAdmin |
همان گونه که می بینید، یک لینک نمادین به نام phpMyAdmin در این شاخه وجود دارد. خواهید توانست نام لینک را به دلخواه تغییر دهید .با این کار این نقطه دسترسی را در رو به روی حملات hard-coded پنهـان خواهید کرد.
نامی گزینش نمایید که هدف محل را معیـن نکند . در این آموزش نام جدید به /nothingtosee تغییر یسقوط ه می باشد. برای انجام این کار، با بهره گیری از دستور پایین اسم لینک را تغییر دهید :
sudo mv phpMyAdmin nothingtosee ls -l
1 2 | sudo mv phpMyAdmin nothingtosee ls -l |
total 8 -rw-r–r– 1 root root 537 Aug 5 08:15 50x.html -rw-r–r– 1 root root 612 Aug 5 08:15 index.html lrwxrwxrwx 1 root root 21 Aug 6 17:29 nothingtosee -> /usr/share/phpMyAdmin
1 2 3 4 | total 8 -rw-r–r– 1 root root 537 Aug 5 08:15 50x.html -rw-r–r– 1 root root 612 Aug 5 08:15 index.html lrwxrwxrwx 1 root root 21 Aug 6 17:29 nothingtosee -> /usr/share/phpMyAdmin |
حال چنان چه به محل قبلی phpMyAdmin خود وارد شوید با ارور ۴۰۴ روبرو خواهید شد.
http://server_domain_or_IP/phpMyAdmin
phpMyAdmin در محل جدید در دسترس خواهد بود :
http://server_domain_or_IP/nothingtosee
راه اندازی یک ورودی تائید هویت برای وب سرور:
ویژگی بعدی تهیه یک صفحه تائید هویت می باشد که کاربر پیش از وارد شدن به صفحه ورودی phpMyAdmin به آن منتقل می شود .
خوشبختانه، اکثر وب سرورها ، از جمله Nginx، این توانایی را بطور پیش فرض دارند. تنها می بایست در فایل کانفیگ Nginx تغییرات جزئی تهیه گـردد .
قبل از این کار، برای ذخیره شناسه های معتبر می بایست یک فایل password تهیه نمایید .در Nginx پسورد می بایست با بهره گیری از تابع crypt() رمزگذاری شود. گروه OpenSSL، که می بایست هم اکنون بر روی سرور شما نصب شده باشد، این توانایی را دارا می باشد.
برای تهیه یک پسورد رمزگذاری شده این دستور را تایپ نمایید :
برای تهیه یک پسورد، دستور پایین را تایپ نمایید :
openssl passwd
1 | openssl passwd |
به دلخواه خود پسوردی مشـخص نمایید . سپس این ابزار ورژن رمزگذاری شده پسورد شما را به شیوه چیزی شبیه به متن پایین نشان خواهـد داد :
O5az.RSPzd.HE
1 | O5az.RSPzd.HE |
این مقدار را رونوشـت نمایید و در فایل authentication که می بایست تهیه نمایید قرار دهید .
حال می بایست یک فایل authentication تهیه نمایید . در این آموزش نام pma_pass برای این فایل گزینش شده و در دایرکتوری Nginx قرار میگیرد.
sudo nano /etc/nginx/pma_pass
1 | sudo nano /etc/nginx/pma_pass |
در این فایل ابتدا می بایست نام کاربری مورد نظـر خود را وارد کرده و به دنبال آن ، پـس از علامت ( : ) پسورد رمزگذاری شده را وارد نمایید . برای مثال :
demo:O5az.RSPzd.HE
1 | demo:O5az.RSPzd.HE |
سپس ذخیره کرده و از فایل بیرون شوید.
حال می بایست در فایل کانفیگ nginx تغییراتی تهیه کنیم . فایل را با انجام دستور پایین باز نمایید :
sudo nano /etc/nginx/conf.d/default.conf
1 | sudo nano /etc/nginx/conf.d/default.conf |
در این فایل، می بایست یک قسمـت location تازه تهیه نمایید . که محل جدید رابط کاربری phpMyAdmin در آن معیـن گـردد . (nothingtosee )
یک قسمـت در بلوک سرور و بیرون از سایـر بلوک ها تهیه نمایید .
server { . . . location / { try_file $uri $uri/ =404; } location /nothingtosee { } . . . }
1 2 3 4 5 6 7 8 9 10 11 12 | server { . . . location / { try_file $uri $uri/ =404; } location /nothingtosee { } . . . } |
در این بلوک می بایست به منظور نمایش دادن پیغام تائید هویت به کاربران یک مقدار برای دستور auth_basic تعریف نمایید . نبایستی به کاربران نشان دهید که از چه چیز حفاظت مینمایید پس مناسـب تر می باشد به جزئیات اشاره ننمایید . برای مثال در این آموزش از ” Admin Login ” بهره گیری شده می باشد.
سپس می بایست با بهره گیری از دستور پایین auth_basic_user_file وب سرور را از تهیه فایل authentication باخبر کنیم . nginx اطلاعات وارد شده توسـط کاربران را با مقادیر وارد شده در فایل های معیـن مطابقت خواهـد داد .
server { . . . location / { try_file $uri $uri/ =404; } location /nothingtosee { auth_basic “Admin Login”; auth_basic_user_file /etc/nginx/pma_pass; } . . . }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | server { . . . location / { try_file $uri $uri/ =404; } location /nothingtosee { auth_basic “Admin Login”; auth_basic_user_file /etc/nginx/pma_pass; } . . . } |
بعد از انجام این تغییرات فایل را ذخیره کرده و بیرون شوید.
برای پیاده سازی این تغییرات می بایست وب سرور را ری استارت کنیم .
sudo systemctl restart nginx
1 | sudo systemctl restart nginx |
حال چنان چه آدرس تازه phpMyAdmin را در مرورگر خود وارد نمایید (بعد از پاک کردن کش و یا بهره گیری از یک مرورگر دیگر)، نام کاربری و پسوردی که در فایل pma_pass وارد کرده اید از شما خواسته می شود .
http://server_domain_or_IP/nothingtosee
بعد از وارد کردن اطلاعات کاربری فوق ، به صفحه ی login عادی phpMyAdmin وارد می شوید.
اکنون خواهید توانست دیتابیس های MySQL خود را از یک رابط وب امن مدیریت نمایید .
خب دوستان عزیز به پایان مقاله نحوه نصب و ایمن سازی phpMyAdmin روی لینوکس رسیدیم. از توجه و همراهی شما سپاسگزاریم . برای مشاهده اطلاعات بیشتر در مورد سرور اختصاصی کلیک کنید.