mojtaba_br
Registered User
- تاریخ عضویت
- 15 نوامبر 2015
- نوشتهها
- 172
- لایکها
- 7
- سن
- 30
آموزش نصب و ایمن سازی phpMyAdmin روی لینوکس برای سرور مجازی
سیستم های مدیریت پایگاه داده رابطه ای مانند MySQL و MariaDB برای بخش قابل توجهی از وب سایت ها و برنامه های کاربردی مورد نیاز است. با این حال، تمام کاربران با مدیریت داده های خود از خط فرمان احساس راحتی نمی کنند.
برای حل این مشکل، یک پروژه به نام phpMyAdmin به منظور ارائه یک جایگزین در قالب یک رابط مدیریت مبتنی بر وب ساخته شد. در این مقاله، ما چگونگی نصب و ایمن سازی تنظیمات phpMyAdmin را بر روی سرور مجازی لینوکس CentOS 7 و وب سرور nginx
آموزش خواهیم داد. وب سرور nginx دارای عملکرد مناسبی بوده و در مقابل لود و ترافیک سنگین قدرت بیشتری نسبت به سایر وب سرور ها دارد.
پیش نیاز دوم نصب LEMP (Linux ، Nginx، MariaDB، و PHP) بر روی لینوکس CentOS 7 می باشد. این پلت فرمی است که ما برای رابط phpMyAdmin از آن استفاده خواهیم کرد (MariaDB نرم افزار مدیریت دیتابیسی است که ما قصد مدیریت آن را داریم ) . اگر LEMP بر روی سرور شما نصب نیست، برای نصب آن مقاله زیر را مطالعه کنید :
https://www.digitalocean.com/commun...-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
سپس می توانید پکیجی که به سادگی سیستم شما را برای دسترسی به مخازن EPEL پیکربندی کرده ، نصب کنید . پس از آن، فایل پکیج را حذف کنید، چون دیگر به آن نیازی نخواهید داشت :
sudo rpm -ivh epel-release*rm epel-release*
مخزن EPEL پیکربندی شده است و می توانید پکیج phpMyAdmin را با استفاده از دستور yum نصب کنید:
sudo yum install phpmyadmin
نصب و راه اندازی تکمیل خواهد شد. برای پیدا کردن و ارائه خدمات درست وب سرور Nginx ، به فایل های phpMyAdmin فقط باید با استفاده از دستور زیر یک لینک نمادین از فایل های نصبی در سند Nginx موجود در دایرکتوری روت خود ایجاد کنید :
sudo ln -s /usr/share/phpMyAdmin /usr/share/nginx/html
برای اطمینان از لود شدن ماژول های PHP نصب شده ، پردازنده PHP خود را با استفاده از دستور زیر ری استارت کنید:
sudo systemctl restart php-fpm
به منظور دسترسی به رابط کاربری برای ادامه مراحل نصب ، این آدرس را در مرورگر خود تایپ کنید :
http://server_domain_or_IP/phpMyAdmin
به جای server_domain_or_IP نام دامنه یا IP آدرس سرور خود را قرار دهید .
برای ورود به سیستم، از نام کاربری و رمز عبور یک کاربر معتبر MariaDB استفاده کنی.
مرحله دوم – ایمن سازی phpMyAdmin
phpMyAdmin نصب شده بر روی سرور شما باید در این مرحله به طور کامل قابل استفاده باشد. با این حال، با نصب یک رابط وب، سیستم MySQL خود را رو به سوی جهان خارج قرار داده اید.
یکی از دلایل محبوبیت phpMyAdmin در دسترس قرار دادن حجم زیادی از اطلاعات است . چنین سیستم هایی معمولا هدف حمله اتکر ها قرار میگیرند .
ما برای کاهش احتمال خطر، ۲ استراتژی ساده اجرا میکنیم .
1- تغییر مکان رابط کاربری از پوشه /phpMyAdmin به محلی دیگر برای مقابله با حملات خودکار brute-force .
2- ایجاد یک صفحه ورودی تائید هویت در سطح وب سرور، قبل از صفحه login یا ورود به phpMyAdmin
تغییر مکان دسترسی به برنامه :
در مرحله قبل یک لینک نمادین از فایل های نصبی در سند Nginx موجود در دایرکتوری روت ایجاد شد. برای تغییر URL رابط کاربری phpMyAdmin ، به سادگی لینک نمادین را rename کنید. به سند nginx در پوشه روت وارد شوید:
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
همانطور که می بینید، یک لینک نمادین به نام phpMyAdmin در این شاخه وجود دارد. می توانید نام لینک را به دلخواه تغییر دهید .با این کار این نقطه دسترسی را در مقابل حملات hard-coded پنهان خواهید کرد.
نامی انتخاب کنید که هدف مکان را مشخص نکند . در این آموزش نام جدید به /nothingtosee تغییر یافته است . برای انجام این کار، با استفاده از دستور زیر نام لینک را تغییر دهید :
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
حال اگر به مکان قبلی phpMyAdmin خود وارد شوید با ارور ۴۰۴ روبرو خواهید شد.
phpMyAdmin در مکان جدید در دسترس خواهد بود :
http://server_domain_or_IP/nothingtosee
راه اندازی یک ورودی تائید هویت برای وب سرور:
ویژگی بعدی ایجاد یک صفحه تائید هویت است که کاربر قبل از وارد شدن به صفحه ورودی phpMyAdmin به آن منتقل میشود.
خوشبختانه، اکثر وب سرورها ، از جمله Nginx، این قابلیت را به طور پیش فرض دارند. فقط باید در فایل کانفیگ Nginx تغییرات جزئی ایجاد شود .
قبل از این کار، برای ذخیره شناسه های معتبر باید یک فایل password ایجاد کنید .در Nginx پسورد باید با استفاده از تابع crypt() رمزگذاری شود. مجموعه OpenSSL، که باید در حال حاضر بر روی سرور شما نصب شده باشد، این قابلیت را دارا است .
برای ایجاد یک پسورد رمزگذاری شده این دستور را تایپ کنید :
برای ایجاد یک پسورد، دستور زیر را تایپ کنید:
openssl passwd
به دلخواه خود پسوردی تعیین کنید . سپس این ابزار نسخه رمزگذاری شده پسورد شما را به صورت چیزی شبیه به متن زیر نشان خواهد داد :
O5az.RSPzd.HE
این مقدار را کپی کنید و در فایل authentication که باید ایجاد کنید قرار دهید .
حال باید یک فایل authentication ایجاد کنید. در این آموزش نام pma_pass برای این فایل انتخاب شده و در دایرکتوری Nginx قرار میگیرد.
sudo nano /etc/nginx/pma_pass
در این فایل ابتدا باید نام کاربری مورد نظر خود را وارد کرده و به دنبال آن ، بعد از علامت ( : ) پسورد رمزگذاری شده را وارد کنید . برای مثال :
demo:O5az.RSPzd.HE
سپس ذخیره کرده و از فایل خارج شوید.
حال باید در فایل کانفیگ nginx تغییراتی ایجاد کنیم . فایل را با اجرای دستور زیر باز کنید :
sudo nano /etc/nginx/conf.d/default.conf
در این فایل، باید یک بخش location جدید ایجاد کنید . که مکان جدید رابط کاربری phpMyAdmin در آن مشخص شود . (nothingtosee )
یک بخش در بلوک سرور و خارج از سایر بلوک ها ایجاد کنید .
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;
}
. . .
}
پس از انجام این تغییرات فایل را ذخیره کرده و خارج شوید.
برای پیاده سازی این تغییرات باید وب سرور را ری استارت کنیم .
sudo systemctl restart nginx
حال اگر آدرس جدید phpMyAdmin را در مرورگر خود وارد کنید (پس از پاک کردن کش و یا استفاده از یک مرورگر دیگر)، نام کاربری و پسوردی که در فایل pma_pass وارد کرده اید از شما خواسته میشود .
http://server_domain_or_IP/nothingtosee
پس از وارد کردن اطلاعات کاربری فوق ، به صفحه ی login عادی phpMyAdmin وارد می شوید.
اکنون می توانید دیتابیس های MySQL خود را از یک رابط وب امن مدیریت کنید.
سیستم های مدیریت پایگاه داده رابطه ای مانند MySQL و MariaDB برای بخش قابل توجهی از وب سایت ها و برنامه های کاربردی مورد نیاز است. با این حال، تمام کاربران با مدیریت داده های خود از خط فرمان احساس راحتی نمی کنند.
برای حل این مشکل، یک پروژه به نام phpMyAdmin به منظور ارائه یک جایگزین در قالب یک رابط مدیریت مبتنی بر وب ساخته شد. در این مقاله، ما چگونگی نصب و ایمن سازی تنظیمات phpMyAdmin را بر روی سرور مجازی لینوکس CentOS 7 و وب سرور nginx
آموزش خواهیم داد. وب سرور nginx دارای عملکرد مناسبی بوده و در مقابل لود و ترافیک سنگین قدرت بیشتری نسبت به سایر وب سرور ها دارد.
پیش نیاز دوم نصب LEMP (Linux ، Nginx، MariaDB، و PHP) بر روی لینوکس CentOS 7 می باشد. این پلت فرمی است که ما برای رابط phpMyAdmin از آن استفاده خواهیم کرد (MariaDB نرم افزار مدیریت دیتابیسی است که ما قصد مدیریت آن را داریم ) . اگر LEMP بر روی سرور شما نصب نیست، برای نصب آن مقاله زیر را مطالعه کنید :
https://www.digitalocean.com/commun...-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
سپس می توانید پکیجی که به سادگی سیستم شما را برای دسترسی به مخازن EPEL پیکربندی کرده ، نصب کنید . پس از آن، فایل پکیج را حذف کنید، چون دیگر به آن نیازی نخواهید داشت :
sudo rpm -ivh epel-release*rm epel-release*
مخزن EPEL پیکربندی شده است و می توانید پکیج phpMyAdmin را با استفاده از دستور yum نصب کنید:
sudo yum install phpmyadmin
نصب و راه اندازی تکمیل خواهد شد. برای پیدا کردن و ارائه خدمات درست وب سرور Nginx ، به فایل های phpMyAdmin فقط باید با استفاده از دستور زیر یک لینک نمادین از فایل های نصبی در سند Nginx موجود در دایرکتوری روت خود ایجاد کنید :
sudo ln -s /usr/share/phpMyAdmin /usr/share/nginx/html
برای اطمینان از لود شدن ماژول های PHP نصب شده ، پردازنده PHP خود را با استفاده از دستور زیر ری استارت کنید:
sudo systemctl restart php-fpm
به منظور دسترسی به رابط کاربری برای ادامه مراحل نصب ، این آدرس را در مرورگر خود تایپ کنید :
http://server_domain_or_IP/phpMyAdmin
به جای server_domain_or_IP نام دامنه یا IP آدرس سرور خود را قرار دهید .
برای ورود به سیستم، از نام کاربری و رمز عبور یک کاربر معتبر MariaDB استفاده کنی.
مرحله دوم – ایمن سازی phpMyAdmin
phpMyAdmin نصب شده بر روی سرور شما باید در این مرحله به طور کامل قابل استفاده باشد. با این حال، با نصب یک رابط وب، سیستم MySQL خود را رو به سوی جهان خارج قرار داده اید.
یکی از دلایل محبوبیت phpMyAdmin در دسترس قرار دادن حجم زیادی از اطلاعات است . چنین سیستم هایی معمولا هدف حمله اتکر ها قرار میگیرند .
ما برای کاهش احتمال خطر، ۲ استراتژی ساده اجرا میکنیم .
1- تغییر مکان رابط کاربری از پوشه /phpMyAdmin به محلی دیگر برای مقابله با حملات خودکار brute-force .
2- ایجاد یک صفحه ورودی تائید هویت در سطح وب سرور، قبل از صفحه login یا ورود به phpMyAdmin
تغییر مکان دسترسی به برنامه :
در مرحله قبل یک لینک نمادین از فایل های نصبی در سند Nginx موجود در دایرکتوری روت ایجاد شد. برای تغییر URL رابط کاربری phpMyAdmin ، به سادگی لینک نمادین را rename کنید. به سند nginx در پوشه روت وارد شوید:
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
همانطور که می بینید، یک لینک نمادین به نام phpMyAdmin در این شاخه وجود دارد. می توانید نام لینک را به دلخواه تغییر دهید .با این کار این نقطه دسترسی را در مقابل حملات hard-coded پنهان خواهید کرد.
نامی انتخاب کنید که هدف مکان را مشخص نکند . در این آموزش نام جدید به /nothingtosee تغییر یافته است . برای انجام این کار، با استفاده از دستور زیر نام لینک را تغییر دهید :
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
حال اگر به مکان قبلی phpMyAdmin خود وارد شوید با ارور ۴۰۴ روبرو خواهید شد.
phpMyAdmin در مکان جدید در دسترس خواهد بود :
http://server_domain_or_IP/nothingtosee
راه اندازی یک ورودی تائید هویت برای وب سرور:
ویژگی بعدی ایجاد یک صفحه تائید هویت است که کاربر قبل از وارد شدن به صفحه ورودی phpMyAdmin به آن منتقل میشود.
خوشبختانه، اکثر وب سرورها ، از جمله Nginx، این قابلیت را به طور پیش فرض دارند. فقط باید در فایل کانفیگ Nginx تغییرات جزئی ایجاد شود .
قبل از این کار، برای ذخیره شناسه های معتبر باید یک فایل password ایجاد کنید .در Nginx پسورد باید با استفاده از تابع crypt() رمزگذاری شود. مجموعه OpenSSL، که باید در حال حاضر بر روی سرور شما نصب شده باشد، این قابلیت را دارا است .
برای ایجاد یک پسورد رمزگذاری شده این دستور را تایپ کنید :
برای ایجاد یک پسورد، دستور زیر را تایپ کنید:
openssl passwd
به دلخواه خود پسوردی تعیین کنید . سپس این ابزار نسخه رمزگذاری شده پسورد شما را به صورت چیزی شبیه به متن زیر نشان خواهد داد :
O5az.RSPzd.HE
این مقدار را کپی کنید و در فایل authentication که باید ایجاد کنید قرار دهید .
حال باید یک فایل authentication ایجاد کنید. در این آموزش نام pma_pass برای این فایل انتخاب شده و در دایرکتوری Nginx قرار میگیرد.
sudo nano /etc/nginx/pma_pass
در این فایل ابتدا باید نام کاربری مورد نظر خود را وارد کرده و به دنبال آن ، بعد از علامت ( : ) پسورد رمزگذاری شده را وارد کنید . برای مثال :
demo:O5az.RSPzd.HE
سپس ذخیره کرده و از فایل خارج شوید.
حال باید در فایل کانفیگ nginx تغییراتی ایجاد کنیم . فایل را با اجرای دستور زیر باز کنید :
sudo nano /etc/nginx/conf.d/default.conf
در این فایل، باید یک بخش location جدید ایجاد کنید . که مکان جدید رابط کاربری phpMyAdmin در آن مشخص شود . (nothingtosee )
یک بخش در بلوک سرور و خارج از سایر بلوک ها ایجاد کنید .
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;
}
. . .
}
پس از انجام این تغییرات فایل را ذخیره کرده و خارج شوید.
برای پیاده سازی این تغییرات باید وب سرور را ری استارت کنیم .
sudo systemctl restart nginx
حال اگر آدرس جدید phpMyAdmin را در مرورگر خود وارد کنید (پس از پاک کردن کش و یا استفاده از یک مرورگر دیگر)، نام کاربری و پسوردی که در فایل pma_pass وارد کرده اید از شما خواسته میشود .
http://server_domain_or_IP/nothingtosee
پس از وارد کردن اطلاعات کاربری فوق ، به صفحه ی login عادی phpMyAdmin وارد می شوید.
اکنون می توانید دیتابیس های MySQL خود را از یک رابط وب امن مدیریت کنید.