نصب و ايمن سازي phpMyAdmin با Nginx در سرور
در حالي كه بسياري از كاربران به عملكرد سيستم ديتابيس مانند MySQL نياز دارند ، تعامل با سيستم صرفاً از طريق سرويس دهنده خط فرمان MySQL نياز به آشنايي با زبان SQL دارد ، بنابراين ممكن است براي بعضي ها رابط ارجح نباشد.
phpMyAdmin به گونه اي ايجاد شده است كه كاربران بتوانند از طريق يك رابط وب بصري با MySQL در تعامل باشند كه در كنار يك محيط توسعه PHP اجرا شود. در اين راهنما ، در مورد نحوه نصب phpMyAdmin روي سرور Nginx و نحوه پيكربندي سرور براي افزايش امنيت بحث خواهيم كرد.
توجه: در هنگام استفاده از نرم افزاري مانند phpMyAdmin ملاحظات امنيتي مهمي وجود دارد ، از آنجا كه بر روي سرور پايگاه داده اجرا مي شود ، با اعتبارات پايگاه داده در ارتباط است ، و كاربر را قادر مي سازد تا به راحتي پرس و جوهاي SQL دلخواه را در پايگاه داده شما اجرا كند. از آنجا كه phpMyAdmin يك برنامه PHP با استقرار گسترده است ، اغلب مورد حمله قرار مي گيرد. در اين آموزش برخي اقدامات امنيتي كه مي توانيد انجام دهيد را مرور خواهيم كرد تا بتوانيد تصميماتي آگاهانه بگيريد.
پيش نيازها
قبل از شروع اين راهنما ، به موارد زير نياز خواهيد داشت:
• سرور Ubuntu 18.04 كه داراي يك پشته LEMP (Linux ، Nginx ، MySQL و PHP) و ايمن شده با ufw باشد ، همانطور كه در راهنماي تنظيم اوليه سرور براي اوبونتو 18.04 شرح داده شده است. اگر هنوز سرور خود را تنظيم نكرده ايد ، مي توانيد راهنماي نصب پشته LEMP در اوبونتو 18.04 را دنبال كنيد.
• دسترسي به اين سرور به عنوان يك كاربر غير ريشه با امتيازات sudo.
از آنجا كه phpMyAdmin احراز هويت را با استفاده از اعتبار MySQL انجام مي دهد ، توصيه مي شود يك SSL / TLS نصب كنيد تا بتوانيد ترافيك رمزگذاري شده بين سرور و كلاينت را فعال كنيد. اگر دامنه موجود كه با گواهي معتبر پيكربندي شده باشد نداريد ، مي توانيد اين راهنما را در مورد ايمن سازي Nginx با let’s Encrypt در Ubuntu 18.04 دنبال كنيد.
هشدار: اگر گواهي SSL / TLS را روي سرور نصب نكرده ايد و همچنان مايل به ادامه كار هستيد ، لطفاً دسترسي از طريق تونل هاي SSH را همانطور كه در مرحله 5 اين راهنما توضيح داده شده است ، در نظر بگيريد.
هنگامي كه اين پيش نيازها را انجام داديد ، مي توانيد با ادامه اين راهنما پيش برويد.
مرحله 1 – نصب phpMyAdmin
اولين كاري كه بايد انجام دهيم نصب phpMyAdmin روي سرور LEMP است. ما مي خواهيم از مخازن پيش فرض اوبونتو براي رسيدن به اين هدف استفاده كنيم.
بياييد با به روزرساني فهرست بسته سرور با دستور زير شروع كنيم:
⦁ $ sudo apt update
⦁
اكنون مي توانيد phpMyAdmin را با اين دستور نصب كنيد:
⦁ $ sudo apt install phpmyadmin
⦁
در طي مراحل نصب ، از شما خواسته مي شود تا وب سرور (Apache يا Lighthttp) را براي پيكربندي انتخاب كنيد. از آنجا كه ما از Nginx به عنوان وب سرور استفاده مي كنيم ، نبايد اينجا انتخابي انجام دهيم. براي رفتن به مرحله بعدي ، tab را فشار داده و سپس OK را بزنيد.
در مرحله بعد ، از شما خواسته مي شود كه براي پيكربندي پايگاه داده برنامه از dbconfig-common استفاده شود يا خير. yes را انتخاب كنيد. اين كار پايگاه داده داخلي و كاربر admin را براي phpMyAdmin تنظيم مي كند. از شما خواسته مي شود رمز جديد را براي كاربر phpmyadmin MySQL تعريف كنيد. همچنين مي توانيد آن را خالي بگذاريد و به phpMyAdmin اجازه دهيد بطور تصادفي يك رمز عبور ايجاد كند.
اكنون نصب تمام مي شود. براي اينكه سرور وب Nginx به درستي فايلهاي phpMyAdmin را پيدا و ارائه كند ، بايد يك لينك نمادين از فايلهاي نصب به ديركتوري اصلي سند Nginx بسازيم:
⦁ $ sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
⦁
نصب phpMyAdmin شما اكنون عملياتي است. براي دسترسي به رابط ، به نام دامنه يا آدرس IP عمومي سرور خود كه پس از آن / phpmyadmin در مرورگر وب وجود دارد ، برويد:
https://server_domain_or_IP/phpmyadmin
همانطور كه قبلاً نيز گفته شد ، phpMyAdmin با استفاده از اعتبار MySQL ، احراز هويت را كنترل مي كند ، به اين معني كه شما بايد از همان نام كاربري و رمز عبوري كه معمولاً براي اتصال به بانك اطلاعاتي از طريق كنسول يا از طريق API استفاده مي كنيد ، استفاده نماييد. اگر در ايجاد كاربران MySQL به كمك نياز داريد ، اين راهنما را در مورد نحوه مديريت بانك اطلاعاتي SQL بررسي كنيد.
توجه: ورود به سيستم phpMyAdmin به عنوان كاربر ريشه MySQL توصيه نمي شود زيرا خطرات امنيتي قابل توجهي را به همراه دارد. در مرحله بعدي اين راهنما نحوه غيرفعال كردن ورود به سيستم ريشه را مشاهده خواهيم كرد.
نصب phpMyAdmin شما بايد در اين مرحله كاملاً عملي باشد. اما ، با نصب يك رابط وب ، سرور پايگاه داده MySQL خود را در معرض دنياي خارج قرار مي دهيم. به دليل محبوبيت phpMyAdmin و مقادير زيادي از داده هايي كه ممكن است به آنها دسترسي پيدا كند ، نصب هاي اين چنيني ، اهداف متداول براي حملات هستند. در بخش هاي بعدي اين راهنما ، چند روش مختلف را مشاهده خواهيم كرد كه با استفاده از آن مي توانيم نصب phpMyAdmin را ايمن تر كنيم.
مرحله 2 – تغيير موقعيت پيش فرض phpMyAdmin
يكي از اساسي ترين راه هاي محافظت از نصب phpMyAdmin ، دشوار نمودن دسترسي به آن است. رباتها مسيرهاي متداول مانند phpmyadmin ، pma ، admin ، mysql و مواردي از اين دست را اسكن مي كنند. تغيير آدرس URL رابط از / phpmyadmin به چيزي غير استاندارد ، اسكريپت هاي خودكار را براي پيدا كردن نصب و راه اندازي phpMyAdmin و تلاش براي حملات مخرب را دشوارتر مي كند.
با نصب phpMyAdmin ، پيوندي نمادين ايجاد كرده ايم كه به / usr / share / phpmyadmin اشاره دارد، جايي كه فايل هاي برنامه واقعي قرار دارند. براي تغيير URL رابط phpMyAdmin ، اين پيوند نمادين را تغيير نام خواهيم داد.
ابتدا ، اجازه دهيد به ديركتوري اصلي سند Nginx برويم و ليست فايل هايي كه در آن قرار دارد را فهرست كنيم تا درك بهتري از تغييراتي كه ايجاد خواهيم كرد داشته باشيم:
⦁ $ cd /var/www/html/
⦁
⦁ $ ls -l
خروجي زير را دريافت خواهيد كرد:
Output
total 8
-rw-r–r– 1 root root 612 Apr 8 13:30 index.nginx-debian.html
lrwxrwxrwx 1 root root 21 Apr 8 15:36 phpmyadmin -> /usr/share/phpmyadmin
خروجي نشان مي دهد كه ما يك لينك نمادين به نام phpmyadmin در اين ديركتوري داريم. مي توانيم اين نام پيوند را به هر آنچه دوست داريم تغيير دهيم. كه به نوبه خود URL دسترسي phpMyAdmin را تغيير مي دهد ، و مي تواند به پنهان كردن نقطه انتهايي از دسترس رباتهاي رمزگذاري شده براي جستجوي نام نقاط پاياني معمول كمك كند.
نامي را انتخاب كنيد كه هدف نقطه پاياني را مبهم كند. در اين راهنما ، نقطه پاياني را /nothingtosee مي ناميم ، اما شما بايد يك نام جايگزين انتخاب كنيد. براي انجام اين كار ، پيوند را تغيير نام مي دهيم:
⦁ $ sudo mv phpmyadmin nothingtosee
⦁
⦁ $ ls -l
پس از اجراي دستورات فوق ، اين خروجي را دريافت خواهيد كرد:
Output
total 8
-rw-r–r– 1 root root 612 Apr 8 13:30 index.nginx-debian.html
lrwxrwxrwx 1 root root 21 Apr 8 15:36 nothingtosee -> /usr/share/phpmyadmin
اكنون ، اگر به URL قديمي برويد ، خطاي 404 را دريافت خواهيد كرد:
https://server_domain_or_IP/phpmyadmin
رابط phpMyAdmin شما اكنون با URL جديدي كه تازه پيكربندي كرده ايم در دسترس خواهد بود:
https://server_domain_or_IP/nothingtosee
با ايجاد موقعيت واقعي phpMyAdmin در سرور ، رابط كاربري آن را در برابر اسكن خودكار و حملات دستي محافظت مي كنيد.
مرحله 3 – غيرفعال كردن ورود به عنوان ريشه
در MySQL و همچنين در سيستم هاي معمول لينوكس ، حساب اصلي يك حساب كاربري ويژه با دسترسي نامحدود به سيستم است. علاوه بر اينكه يك حساب ممتاز است ، يك نام ورود به سيستم شناخته شده است ، و آن را به يك هدف آشكار براي حملات مخرب تبديل مي كند. براي به حداقل رساندن خطرات ، phpMyAdmin را به گونه اي پيكربندي مي كنيم تا هرگونه تلاش براي ورود به سيستم از سوي كاربر ريشه را رد كنيم. به اين ترتيب ، حتي اگر اعتبارات معتبري براي ريشه كاربر ارائه دهيد ، باز هم يك خطاي ” access denied ” دريافت خواهيد كرد و مجاز به ورود به سيستم نخواهيد بود.
از آنجا كه ما براي پيكربندي و ذخيره تنظيمات phpMyAdmin از dbconfig-common استفاده كرديم ، پيكربندي پيش فرض در حال حاضر در بانك اطلاعاتي ذخيره مي شود. براي تعريف تنظيمات سفارشي بايد يك فايل config.inc.php جديد ايجاد كنيم.
حتي اگر فايلهاي PHP براي phpMyAdmin در داخل / usr / share / phpmyadmin قرار داشته باشند ، برنامه از فايلهاي پيكربندي مستقر در / etc / phpmyadmin استفاده مي كند. يك فايل تنظيمات سفارشي جديد را در داخل /etc/phpmyadmin/conf.d ايجاد خواهيم كرد و نام آن را pma_secure.php ميناميم:
⦁ $ sudo nano /etc/phpmyadmin/conf.d/pma_secure.php
⦁
فايل پيكربندي زير شامل تنظيمات لازم براي غيرفعال كردن ورودهاي بدون رمز (AllowNoPassword روي false تنظيم شده است) و ورود ريشه به سيستم است (AllowRoot روي false تنظيم شده است):
/etc/phpmyadmin/conf.d/pma_secure.php
# PhpMyAdmin Settings
# This should be set to a random string of at least 32 chars
$cfg[‘blowfish_secret’] = ‘3!#32@3sa(+=_4?),5XP_:U%%834sdfSdg43yH#{o’;
$i=0;
$i++;
$cfg[‘Servers’][$i][‘auth_type’] = ‘cookie’;
$cfg[‘Servers’][$i][‘AllowNoPassword’] = false;
$cfg[‘Servers’][$i][‘AllowRoot’] = false;
?>
پس از ويرايش فايل ، با فشار دادن CTRL + X سپس y ، تغييرات را تأييد كنيد و ENTER را بزنيد. تغييرات بطور خودكار اعمال مي شوند. اگر اكنون صفحه ورود را مجدد لود كنيد و سعي كنيد به عنوان root وارد شويد ، يك خطاي Access Denied دريافت خواهيد كرد:
اكنون ورود به سيستم به عنوان ريشه در نصب phpMyAdmin شما ممنوع است. اين اقدامات امنيتي باعث مي شود جلوي اسكريپت هاي مخرب در تلاش براي حدس زدن رمزعبور پايگاه داده اصلي روي سرور شما گرفته شود. علاوه بر اين ، استفاده از حسابهاي MySQL با امتيازات كمتر را براي دسترسي به رابط وب phpMyAdmin اعمال مي كند ، كه به خودي خود يك روش مهم امنيتي است.
مرحله 4 – ايجاد يك دروازه احراز هويت
پنهان كردن نصب phpMyAdmin در يك مكان غيرمعمول ممكن است برخي از ربات هاي خودكار را كه در حال اسكن شبكه هستند ، گمراه كند ، اما در برابر حملات هدفمند بي فايده است. براي محافظت بهتر از يك برنامه وب با دسترسي محدود ، به طور كلي متوقف كردن مهاجمان قبل از اينكه حتي بتوانند به برنامه دسترسي پيدا كنند، مفيدتر است. به اين ترتيب ، آنها نمي توانند از سوء استفاده هاي عمومي و حملات مخرب براي حدس زدن اعتبارات دسترسي استفاده كنند.
در مورد خاص phpMyAdmin ، محفوظ نگه داشتن رابط ورود به سيستم حتي مهمتر نيز هست. با در دسترس نگه داشتن آن به صورت جهاني ، يك بستر آماده براي مهاجمين ارائه مي دهيد تا اعتبارات بانك اطلاعاتي شما را حدس بزنند.
افزودن يك لايه اضافي تأييد اعتبار به نصب phpMyAdmin شما را قادر مي سازد امنيت را افزايش دهيد. كاربران بايد قبل از ديدن صفحه ورود به سايت phpMyAdmin از اعلان تأييد هويت HTTP عبور كنند. اكثر سرور هاي وب ، از جمله Nginx ، اين قابليت را به صورت بومي ارائه مي دهند.
براي انجام اين كار ، ابتدا بايد يك فايل رمز عبور براي ذخيره اعتبارات تأييد ايجاد كنيم. Nginx مستلزم رمزگذاري پسوردها با استفاده از تابع crypt () است. مجموعه OpenSSL ، كه بايد از قبل روي سرور شما نصب باشد ، اين قابليت را دارد.
براي ايجاد پسورد رمزگذاري شده ، اين دستور را تايپ كنيد:
⦁ $ openssl passwd
⦁
از شما خواسته مي شود رمز عبوري را كه مي خواهيد استفاده كنيد وارد كنيد و آن را تأييد نماييد. سپس اين ابزار نسخه رمزگذاري شده رمزعبور را نمايش مي دهد كه چيزي شبيه به اين خواهد بود:
Output
O5az.RSPzd.HE
اين عبارت را كپي كنيد ، زيرا لازم است كه آن را در فايل تأييد اعتبار مورد استفاده قرار دهيد.
اكنون ، يك فايل تأييد اعتبار ايجاد كنيد. ما اين فايل را pma_pass مي ناميم و آن را در ديركتوري تنظيمات Nginx قرار مي دهيم:
⦁ $ sudo nano /etc/nginx/pma_pass
⦁
در اين فايل ، نام كاربري مورد نظر خود را مشخص مي كنيد و به دنبال آن يك كولون (:) و سپس نسخه رمزگذاري شده پسورد را كه از برنامه Openwl passwd دريافت كرده ايد ، قرار دهيد.
ما ميخواهيم نام كاربر خود را Sammy قرار دهيم ، اما شما بايد نام كاربري ديگري را انتخاب كنيد. فايل بايد به صورت زير باشد:
/etc/nginx/pma_pass
sammy:O5az.RSPzd.HE
پس از انجام اين كار ، فايل را ذخيره كنيد و ببنديد.
اكنون ما آماده اصلاح فايل پيكربندي Nginx هستيم. براي اين راهنما ، از فايل پيكربندي واقع در /etc/nginx/sites-available/example.com استفاده خواهيم كرد. شما بايد از فايل پيكربندي مربوط به Nginx براي مكان وب استفاده كنيد كه phpMyAdmin در حال حاضر ميزبان آن است. اين فايل را در ويرايشگر متن خود باز كنيد تا كار را شروع كنيد:
⦁ $ sudo nano /etc/nginx/sites-available/example.com
⦁
بلوك سرور و بخش location / را در آن قرار دهيد. براي مطابقت با مسير فعلي phpMyAdmin در سرور ، بايد يك بخش location جديد در اين بلوك ايجاد كنيم. در اين راهنما ، مكان phpMyAdmin نسبت به ريشه وب /nothingtosee است:
/etc/nginx/sites-available/default
server {
. . .
location / {
try_files $uri $uri/ =404;
}
location /nothingtosee {
# Settings for phpMyAdmin will go here
}
. . .
}
در اين بلوك ، بايد دو دستورالعمل مختلف را تنظيم كنيم: auth_basic ، كه پيامي را كه در اعلان تأييد نمايش داده مي شود معرفي ميكند، و auth_basic_user_file ، كه به فايلي كه ايجاد كرديم ، اشاره مي كند. فايل پيكربندي شما پس از اتمام اينگونه به نظر مي رسد:
/etc/nginx/sites-available/default
server {
. . .
location /nothingtosee {
auth_basic “Admin Login”;
auth_basic_user_file /etc/nginx/pma_pass;
}
. . .
}
سپس ، فايل را ذخيره كنيد و ببنديد. براي بررسي صحت فايل پيكربندي ، مي توانيد اين دستور را اجرا كنيد:
⦁ $ sudo nginx -t
⦁
خروجي زير پيش بيني مي شود:
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
براي فعال كردن دروازه احراز هويت جديد ، بايد سرور وب را مجدد لود كنيد:
⦁ $ sudo systemctl reload nginx
⦁
حال اگر از URL phpMyAdmin در مرورگر وب خود بازديد مي كنيد ، نام كاربري و رمز عبوري كه به فايل pma_pass اضافه كرده ايد ، از شما خواسته ميشود:
https://server_domain_or_IP/nothingtosee
هنگامي كه اعتبارات خود را وارد كرديد ، به صفحه استاندارد ورود به سيستم phpMyAdmin منتقل مي شويد.
توجه: اگر ريفرش صفحه كار نمي كند ، ممكن است مجبور شويد حافظه نهان خود را پاك كنيد يا اگر قبلاً از phpMyAdmin استفاده كرده ايد ، از يك مرورگر ديگر استفاده كنيد.
اين دروازه علاوه بر فراهم كردن يك لايه امنيتي بيشتر ، به حفظ فايل هاي MySQL در برابر تلاش براي تأييد اعتبارات Spammy كمك مي كند.
مرحله 5 – تنظيم دسترسي از طريق تونل هاي رمزگذاري شده (اختياري)
براي افزايش امنيت ، ميتوان نصب phpMyAdmin را فقط براي هاست هاي مجاز قفل نكرد. مي توانيد هاست هاي مجاز را در فايل تنظيمات Nginx خود ليست كنيد تا هرگونه درخواست از آدرس IP كه در ليست موجود نيست ، رد شود.
حتي اگر اين ويژگي در برخي موارد استفاده كافي باشد ، هميشه بهترين راه حل طولاني مدتي نيست ، عمدتا به اين دليل كه اكثر افراد از آدرس هاي IP ايستا به اينترنت دسترسي ندارند. به محض دريافت يك آدرس IP جديد از Internet provider خود ، نمي توانيد به رابط phpMyAdmin دسترسي پيدا كنيد تا زماني كه فايل پيكربندي Nginx را با آدرس IP جديد خود به روز كنيد.
براي يك راه حل طولاني مدت قوي تر ، مي توانيد از كنترل دسترسي مبتني بر IP استفاده كنيد تا تنظيماتي را ايجاد كنيد كه در آن كاربران فقط در صورت دسترسي به يك آدرس IP مجاز يا محلي از طريق تونل سازي SSH به رابط phpMyAdmin شما دسترسي داشته باشند. در بخش هاي زير خواهيم ديد كه چگونه اين كار را انجام دهيم.
تركيب كنترل دسترسي مبتني بر IP با تونل SSH امنيت را به شدت افزايش مي دهد زيرا دسترسي از طريق اينترنت عمومي (به جز IP هاي مجاز) را كاملاً مسدود مي كند و علاوه بر اين كانال ايمن بين كاربر و سروراز طريق تونل هاي رمزگذاري شده فراهم ميكند.
تنظيم كنترل دسترسي مبتني بر IP در Nginx
در Nginx ، كنترل دسترسي مبتني بر IP را مي توان در بلوك location مربوطه يك سايت معين ، با استفاده از بخشنامه هاي allow و deny تعريف كرد. به عنوان مثال ، اگر فقط مي خواهيم درخواست هايي را از يك هاست معين دريافت كنيم ، بايد دو خط زير را در اين قسمت ، داخل بلوك location مربوطه براي سايت قرار دهيم كه مي خواهيم از آن محافظت كنيم:
allow hostname_or_IP;
deny all;
شما مي توانيد هر تعداد هاست كه مي خواهيد اجازه دهيد ، فقط بايد يك خط allow براي هر هاست / IP مجاز در داخل بلوك location مربوطه براي سايتي كه از آن محافظت مي كنيد درج كنيد. دستورالعملها به همان ترتيبي كه ذكر شده اند ارزيابي مي شوند ، تا زماني كه تطابق پيدا شود يا درخواست به دليل deny all رد شود.
اكنون Nginx را پيكربندي خواهيم كرد تا فقط به درخواستهايي كه از localhost يا آدرس IP فعلي شما آمده اند اجازه ورود دهيم. ابتدا ، بايد آدرس IP فعلي عمومي را كه دستگاه محلي شما براي اتصال به اينترنت استفاده مي كند ، بدانيد. روش هاي مختلفي براي به دست آوردن اين اطلاعات وجود دارد. براي سادگي ، مي خواهيم از خدمات ارائه شده توسط ipinfo.io استفاده كنيم. مي توانيد URL https://ipinfo.io/ip را در مرورگر خود باز كنيد ، يا دستور زير را از دستگاه محلي خود اجرا كنيد:
⦁ $ curl https://ipinfo.io/ip
⦁
بايد يك آدرس IP ساده به عنوان خروجي دريافت كنيد ، مانند اين:
Output
203.0.113.111
اين آدرس IP عمومي فعلي شما است. ما بلوك موقعيت مكاني phpMyAdmin را پيكربندي خواهيم كرد تا فقط به درخواستهايي كه از آن IP مي آيند ، علاوه بر localhost ، اجازه دهيم. بايد بار ديگر پيكربندي phpMyAdmin را در داخل /etc/nginx/sites-available/example.com ويرايش كنيم.
فايل پيكربندي Nginx را با استفاده از ويرايشگر خط فرمان مورد نظر خود باز كنيد:
⦁ $ sudo nano /etc/nginx/sites-available/example.com
⦁
از آنجا كه از قبل يك قانون دسترسي در پيكربندي فعلي خود داريم ، بايد آن را با كنترل دسترسي مبتني بر IP تركيب كنيم و از دستور satisfy all استفاده نماييم. به اين ترتيب ، مي توانيم تأييد هويت فعلي HTTP را براي افزايش امنيت سريع انجام دهيم.
به اين ترتيب پيكربندي phpMyAdmin Nginx شما پس از انجام ويرايش اينگونه به نظر مي رسد:
/etc/nginx/sites-available/example.com
server {
. . .
location /nothingtosee {
satisfy all; #requires both conditions
allow 203.0.113.111; #allow your IP
allow 127.0.0.1; #allow localhost via SSH tunnels
deny all; #deny all other sources
auth_basic “Admin Login”;
auth_basic_user_file /etc/nginx/pma_pass;
}
. . .
}
به ياد داشته باشيد كه nothingtosee را با مسير واقعي جايي كه phpMyAdmin در آن قرار دارد ، و آدرس IP هايلايت شده را با آدرس IP عمومي فعلي خود جايگزين كنيد.
هنگام كار ، فايل را ذخيره كنيد و ببنديد. براي بررسي صحت فايل پيكربندي ، مي توانيد اين دستور را اجرا كنيد:
⦁ $ sudo nginx -t
⦁
خروجي زير پيش بيني مي شود:
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
اكنون سرور وب را مجدد لود كنيد تا تغييرات اعمال شوند:
⦁ $ sudo systemctl reload nginx
⦁
از آنجا كه آدرس IP شما صريحاً به عنوان هاست مجاز ذكر شده است ، دسترسي شما نبايد مختل شود. هر كس ديگري كه سعي در دسترسي به نصب phpMyAdmin داشته باشد، يك خطاي 403 (ممنوعه) دريافت ميكند:
https://server_domain_or_IP/nothingtosee
در بخش بعدي ، نحوه استفاده از تونل SSH براي دسترسي به سرور وب را از طريق درخواست هاي محلي خواهيم ديد. به اين ترتيب ، شما حتي مي توانيد آدرس IP خود را تغيير دهيد و به رابط phpMyAdmin دسترسي پيدا كنيد.
دسترسي به phpMyAdmin از طريق يك تونل رمزگذاري شده
تونل زني SSH به عنوان روشي جهت هدايت ترافيك شبكه از طريق كانال هاي رمزگذاري شده كار مي كند. با اجراي يك دستور ssh مشابه آنچه براي ورود به سرور استفاده مي كنيد ، مي توانيد يك “تونل” ايمن بين دستگاه محلي و آن سرور ايجاد كنيد. همه ترافيك هايي كه وارد يك پورت محلي خاص ميشوند، مي توانند از طريق تونل رمزگذاري شده هدايت شوند و قبل از دسترسي به اينترنت ، از سرور راه دور به عنوان يك پروكسي استفاده كنند. مشابه چيزي است كه هنگام استفاده از VPN (شبكه خصوصي مجازي) اتفاق مي افتد ، با اين حال تنظيم تونل SSH بسيار ساده تر است.
ما از تونل سازي SSH استفاده خواهيم كرد تا درخواستهاي خود را به سرور وب از راه دور كه phpMyAdmin را اجرا مي كند ، پروكسي كنيم. با ايجاد يك تونل بين دستگاه محلي و سرور كه phpMyAdmin در آن نصب شده است ، مي توانيد درخواست هاي محلي را به سرور وب از راه دور هدايت كنيد ، و مهمتر از همه ، ترافيك رمزگذاري مي شود و درخواست ها به Nginx مي رسند انگار كه از localhost مي آيند. به اين ترتيب ، مهم نيست كه از چه آدرس IP به آن وصل شويد ، مي توانيد به طور ايمن به رابط phpMyAdmin دسترسي پيدا كنيد.
از آنجا كه ترافيك بين دستگاه محلي شما و سرور وب از راه دور رمزگذاري مي شود ، اين گزينه جايگزين مناسبي براي موقعيت هايي است كه نمي توانيد گواهي SSL / TLS را در سرور وبي نصب كنيد كه داراي phpMyAdmin است.
از دستگاه محلي خود ، اين دستور را هر زمان كه نياز به دسترسي به phpMyAdmin داشتيد، اجرا كنيد:
بگذاريد هر بخش از دستور را بررسي كنيم:
⦁ ssh user@server_domain_or_IP -L 8000:localhost:80 -L 8443:localhost:443 -N
⦁
⦁ user: كاربر SSH براي اتصال به سرور ي كه phpMyAdmin در آن كار مي كند
⦁ hostname_or_IP: هاست SSH كه phpMyAdmin در آن اجرا مي شود
⦁ -L 8000: localhost: 80 مسير HTTP را در پورت 8000 تغيير مسير مي دهد
⦁ -L 8443: localhost: 443 مسير ترافيك HTTPS در پورت 8443 را تغيير ميدهد
⦁ -N: دستورات از راه دور را اجرا نمي كند
توجه: اين دستور تا زماني كه با CTRL + C قطع نشود ، ترمينال را مسدود مي كند ، در اين صورت اتصال SSH پايان مي يابد و تغيير مسير بسته را متوقف مي كند. اگر ترجيح مي دهيد اين دستور را در حالت پس زمينه اجرا كنيد ، مي توانيد از گزينه –f SSH استفاده كنيد.
اكنون به مرورگر خود برويد و server_domain_or_IP را با localhost:PORT جايگزين كنيد، جايي كه PORT براي HTTP ، 8000 و براي HTTPS، 8443 است:
http://localhost:8000/nothingtosee
https://localhost:443/nothingtosee
توجه: اگر از طريق https به phpMyAdmin دسترسي داريد ، ممكن است يك پيام هشدار دريافت كنيد كه امنيت گواهي SSL را سؤال مي كند. اين اتفاق به اين دليل است كه نام دامنه اي كه شما در آن استفاده مي كنيد (localhost) با آدرس ثبت شده در گواهي نامه (دامنه اي كه phpMyAdmin در واقع در آن ارائه مي شود) مطابقت ندارد. در اين صورت ادامه كار بي خطر خواهد بود.
اكنون همه درخواست هاي localhost: 8000 (HTTP) و localhost: 8443 (HTTPS) از طريق يك تونل امن به برنامه راه دور phpMyAdmin خود هدايت مي شوند. نه تنها با غيرفعال كردن دسترسي عمومي به phpMyAdmin ، امنيت را افزايش داده ايد ، بلكه با استفاده از يك تونل رمزگذاري شده براي ارسال و دريافت داده ، از تمام ترافيك بين رايانه محلي و سرور از راه دور نيز محافظت مي كنيد.
اگر مي خواهيد استفاده از تونل زني SSH را براي هركسي كه مي خواهد به رابط phpMyAdmin شما (از جمله خودتان) دسترسي داشته باشد ، اعمال كنيد ، مي توانيد با حذف ساير IPهاي مجاز ديگر از فايل پيكربندي Nginx اين كار را انجام دهيد و 127.0.0.1 را به عنوان تنها هاست مجاز براي دسترسي به آن لوكيشن در نظر بگيريد. با توجه به اينكه هيچ كس قادر به درخواست مستقيم به phpMyAdmin نيست ، مي توانيد تأييد هويت HTTP را براي ساده سازي ستاپ خود حذف كنيد. فايل پيكربندي شما در چنين سناريويي اين گونه خواهد بود:
/etc/nginx/sites-available/example.com
server {
. . .
location /nothingtosee {
allow 127.0.0.1; #allow localhost only
deny all; #deny all other sources
}
. . .
}
هنگامي كه پيكربندي Nginx را با sudo systemctl reload nginx مجدد لود كنيد ، نصب phpMyAdmin شما قفل مي شود و كاربران براي دسترسي به رابط phpMyAdmin از طريق درخواست هاي هدايت شده ، بايد از تونل هاي SSH استفاده كنند.
نتيجه
در اين آموزش ، ما شاهد نحوه نصب phpMyAdmin در Ubuntu 18.04 در حال اجراي Nginx به عنوان سرور وب بوديم. همچنين روشهاي پيشرفته اي را براي تأمين امنيت نصب phpMyAdmin در اوبونتو ، مانند غيرفعال كردن ورود كاربر ريشه به سيستم ، ايجاد يك لايه بيشتر تأييد اعتبار ، و استفاده از تونل SSH براي دسترسي به نصب phpMyAdmin فقط از طريق درخواست هاي محلي را پوشش داده ايم.
پس از اتمام اين آموزش ، بايد بتوانيد پايگاه داده MySQL خود را از يك رابط وب ايمن مديريت كنيد. اين رابط كاربري بيشتر عملكردهاي موجود از طريق خط فرمان MySQL را در معرض ديد شما قرار مي دهد. مي توانيد پايگاه هاي داده و شماتيك را بررسي كنيد ، پرس و جوها را اجرا كنيد و مجموعه ها و ساختارهاي جديد داده ايجاد كنيد.
از اين لينك ها زير مي توانيد آمورش هاي بيشتري براي لينوكس پيدا كنيد :
پارامترهاي پيش فرض در جاوا اسكريپت – اجراي چندين نسخه PHP بر روي يك سرور Debian 10
نحوه راه اندازي يك پروژه React با برنامه React – نصب و ايمن سازي phpMyAdmin در اوبونتو 18
پيكربندي يك تاييد اعتبار مجاز(CA) در CentOS 8 – تنظيم برنامه Node.js براي توليد در CentOS 7
نصب MariaDB در اوبونتو 18.04 – ايمن كردن Apache با Let’s Encrypt در Debian 10
نحوه نصب Node.js در CentOS 8 – بازنويسي URL را با mod_rewrite براي Apache در Debian 10
راه اندازي فايروال با استفاده از firewalld در CentOS 8 – نصب وب سرور Apache در Debian 10
اضافه كردن و حذف كاربران در CentOS 8 – نصب Apache Tomcat 9 در Debian 10
نصب و استفاده از PostgreSQL در CentOS 8 – راه اندازي سرور اوليه با Debian 10
نصب MariaDB در CentOS 8 – چگونه با JSX عناصر واقعي ايجاد كنيم
نصب و پيكربندي VNC در Debian 10 – استفاده از سرور از راه دور Docker
نصب و ايمن سازي Grafana در اوبونتو 18 – نحوه نصب Git در CentOS 8
نصب Git در Debian 10 – نصب و پيكربندي Zabbix براي رديابي ايمن سرورهاي
نحوه نصب Node.js در Debian 10 – نصب وب سرور Apache در CentOS 7
نحوه نصب Webmin در Debian 10 – نصب و پيكربندي Zabbix براي رديابي ايمن سرور
نصب وردپرس با بانك اطلاعاتي در اوبونتو – ساخت و استقرار سرور GraphQL با Node.js و MongoDB
نصب پايتون 3 و تنظيم نويسي محلي maغير مجاز مي باشد – نصب و ايمن سازي phpMyAdmin با Nginx در سرور
نصب Nagios 4 و نظارت بر سرور اوبونتو 18 – نصب Python 3 و تنظيم يك محيط برنامه نويسي
نحوه نصب R بر روي Debian 10 – راه اندازي سرور Prisma روي اوبونتو 18.04
نصب و پيكربندي Laravel با LEMP در اوبونتو 18 – نصب و پيكربندي pgAdmin 4 در Server Mode
نصب Python 3 و تنظيم برنامه نويسي CentOS 8 – نصب Jitsi Meet در Ubuntu 18.04
كلمات كليدي خريد سرور
خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريكا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريكا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي كانادا – خريد vps آمريكا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريكا – خريد سرور مجازي ارزان هلند – vps – خريد vps هلند – خريد سرور مجازي آمريكا – خريد vps فرانسه – تست vps – سرور مجازي تست – سرور مجازي ويندوز – ارزانترين vps – خريد وي پي اس – vps ارزان –
برچسبها:Lighthttp, Nginx, phpMyAdmin, pma, SSH
برچسب: ،
ادامه مطلب