#آموزش تغییر URL پیش فرض phpMyAdmin
به دلیل محبوبیت phpMyAdmin و مقدار زیادی از داده ها ممکن است دسترسی به آن را فراهم کند، تاسیسات مانند این اهداف رایج برای حملات هستند.
در این بخش، ما “سخت”، یا قفل کردن، نصب ما با تغییر URL رابط از /phpmyadmin به چیزی غیر استاندارد برای متوقف کردن برخی از تلاش های خودکار ربات انجام میدهیم
در مرحله اولیه، یک لینک نمادین از دایرکتوری phpMyAdmin به Root سند ما ایجاد کردیم تا وب سرور Nginx ما بتواند فایل های phpMyAdmin ما را پیدا کند.
برای تغییر URL برای phpMyAdmin ما، این لینک نمادین را تغییر نام دهید.
اول، بیایید به دایرکتوری Root اسناد Nginx برویم تا خوبی بتوانیم تغییر ایجاد کنیم :
cd /var/www/html/ ls -l
خروجی زیر را مشاهده خواهید کرد :
total 4 -rw-r--r-- 1 root root 612 Apr 10 16:40 index.nginx-debian.html lrwxrwxrwx 1 root root 21 Apr 10 17:06 phpmyadmin -> /usr/share/phpmyadmin
خروجی نشان می دهد که ما یک لینک نمادین به نام phpmyadmin در این پوشه داریم. ما می توانیم این نام لینک را به هر آنچه دوست داریم تغییر دهیم. این امر به نوبه خود باعث تغییر URL دسترسی phpMyAdmin می شود که می تواند نقطه پایان را از ربات های سخت افزاری برای جستجوی نامهای پایه ی مشترک (مانند “phpmyadmin”) محو کند.
نامی را انتخاب کنید که اهداف نقطه انتهایی را مختل می کند. در این راهنمای ما نمره /nothingtoseeرا می خواهیم، اما باید یک نام جایگزین را انتخاب کنید. برای انجام این کار، فقط لینک را تغییر می دهیم:
sudo mv phpmyadmin nothingtosee ls -l
پس از اجرای دستورات خروجی زیر را مشاهده میکنید:
total 4 -rw-r--r-- 1 root root 612 Apr 10 16:40 index.nginx-debian.html lrwxrwxrwx 1 root root 21 Apr 10 17:06 nothingtosee -> /usr/share/phpmyadmin
در حال حاضر، اگر شما به URL قدیمی بروید، یک خطای 404 دریافت خواهید کرد:
http://server_domain_or_IP/phpmyadmin
اکنون رابط کاربری phpMyAdmin شما در URL جدیدی که فقط پیکربندی شده است در دسترس خواهد بود:
http://server_domain_or_IP/nothingtosee
اکنون ما می توانیم با نصب یک دروازه تایید هویت، ورود به phpMyAdmin را سخت تر کنیم.
#راه اندازی یک دروازه تأیید Nginx
ویژگی بعدی که ما تنظیم خواهیم کرد یک صفحه ی تایید حویت میباشد که کاربر قبل از ورود به phpMyAdmin باید اطلاعات را وارد کند
اکثر سرورهای وب، از جمله Nginx، این قابلیت را بومی می کنند. ما فقط باید پرونده پیکربندی Nginx خود را با جزئیات تغییر دهیم.
قبل از این که ما این کار را انجام دهیم، یک فایل رمز عبور ایجاد خواهیم کرد که اطلاعات تایید هویت را ذخیره می کند. Nginx نیاز به رمزگذاری رمز عبور را با استفاده از تابع ()crypt رمزگذاری می کند. مجموعه OpenSSL که قبلا باید بر روی سرور شما نصب شود شامل این قابلیت است.
برای ایجاد رمز عبور دستورات زیر را وارد کنید:
openssl passwd
از شما خواسته خواهد شد تا رمز عبور را که میخواهید استفاده کنید وارد کنید و تأیید کنید. این ابزار یک نسخه رمزنگاری رمز عبور را نمایش می دهد که به نظر می رسد چیزی شبیه به این است
خروجی:
O5az.RSPzd.HE
این مقدار را کپی کنید، زیرا شما باید آن را در فایل تایید هویت ایجاد کنید.
اکنون یک فایل تأیید را ایجاد کنید. ما این پرونده pam_pass را می خوانیم و آن را در دایرکتوری پیکربندی Nginx قرار می دهیم:
sudo nano /etc/nginx/pma_pass
در این پرونده، نام کاربری که میخواهید از آن استفاده کنید را مشخص میکنید و به دنبال آن یک کولون (:) و سپس نسخه رمزگذاری شدهی رمزگذاری شده از ابزار openssl passwd را وارد کنید
ما قصد داریم نام sammy را انتخاب کنیم ، اما شما باید یک نام کاربری دیگر انتخاب کنید. فایل باید مانند این باشد:
sammy:O5az.RSPzd.HE
پس از پایان کار فایل را ذخیره و سپس خارج شوید
اکنون ما آماده تغییر فایل پیکربندی Nginx هستیم. برای شروع، آن را در ویرایشگر متن خود باز کنید:
sudo nano /etc/nginx/sites-available/default
در این فایل، ما باید یک بخش مکان جدید اضافه کنیم. این محل ما را برای رابط کاربری phpMyAdmin ما انتخاب می کند (ما در این راهنمای انتخاب /nothingtosee).
این بخش را درون بلوک SERVER ایجاد کنید، اما در خارج از هر بلوک دیگر.ما بلوک location جدید خود را در زیر / بلوک در مثال ما قرار داده ایم:
server { . . . location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } location /nothingtosee { } . . . }
در داخل این بلوک، ما باید یک متغیر به نام auth_basic را به یک پیام تایید هویت تنظیم کنیم که سریعا به کاربران نمایش داده می شود. جزئیات خاصی را ارائه نمی دهیم. ما فقط از «Admin Login» در مثال پایین استفاده میکنیم.
سپس ما نیاز به اضافه کردن یک متغیر به نام auth_basic_user_file برای اشاره به وب سرور ما به فایل تایید هویت که ما فقط ایجاد کردیم. Nginx از کاربر برای جزئیات تایید هویت درخواست می کند و بررسی می کند که مقادیر ورودی مطابق آنچه که در فایل مشخص شده مطابقت دارد.
اطلاعاتتون رو میتونید به شکل زیر وارد کنید
server { . . . location / { try_files $uri $uri/ =404; } location /nothingtosee { auth_basic "Admin Login"; auth_basic_user_file /etc/nginx/pma_pass; } . . . }
ذخیره کنید و سپس خارج شوید
برای فعال کردن صفحه ی تایید هویت جدید شما باید وب سرور را راه اندازی مجدد کنید:
sudo service nginx restart
در حال حاضر، اگر از URL phpMyAdmin در مرورگر وب خود بازدید می کنید (در صورتی که صفحه تازه سازی نشود کار نمی کند، ممکن است مجبور شوید حافظه کش خود را پاک کنید یا اگر از قبل از phpMyAdmin استفاده کرده اید از یک مرورگر دیگر استفاده کنید)، نام کاربری و رمز عبور که به فایل pma_pass اضافه کرده اید ارسال می شود:
http://server_domain_or_IP/nothingtosee
پس از ورود به حساب کاربری خود، به صفحه ورود به سیستم استاندارد phpMyAdmin منتقل می شوید.
علاوه بر ارائه یک لایه اضافی امنیتی، این دروازه کمک خواهد کرد که ورودی خروجی خود را پاک از تلاش های تایید هویت اسپم کنید.