افزایش امنیت MySQL با 11 روش کاربردی و اصولی
افزایش امنیت MySQL چگونه انجام میشود؟ اصلا MySQL چیست؟ در مجموعه منابع متن باز تقریبا هیچ فناوری به اندازه MySQL RDBMS از محبوبیت برخوردار نیست. در همین راستا هکرها نیز از راههای متنوعی استفاده میکنند تا بتوانند به اطلاعات شما در MySQL دست یابند. در این مقاله به منظور افزایش امنیت دادهها و اطلاعات شما و جلوگیری از سواستفاده کاربران غیر مجاز، میخواهیم شما را با بهترین روشهای افزایش امنیت MySQL آشنا کنیم؛ با ما همراه باشید.
MySQL چیست؟
پیش از اینکه به سراغ موضوع اصلی مقاله برویم و به این سوال پاسخ دهیم که بهترین راههای افزایش امنیت MySQL چیستند، باید بدانیم که اصلا MySQL چه معنا و مفهومی دارد.
به طور کلی، mysql یکی از محبوبترین و پر استفادهترین سیستمهای مدیریت دیتابیس است که به صورت ترکیبی با زبان PHP نیز مورد استفاده قرار میگیرد. MySQL یک سیستم مدیریت پایگاه داده است که به صورت منبع باز و با مدل کلاینت – سرور خدمات ارائه میدهد. یکی از مهمترین نکات در مورد MySQL این است که قابلیت اجرایی در تمامی سیستم عاملها مانند لینوکس، یونیکس و ویندوز را دارد.
دیتابیس چیست؟
در قسمتهای قبلی از دیتابیس نام بردیم؛ میدانید این عبارت چه معنایی دارد؟ به طور کلی، به مجموعه ای از اطلاعات که دارای ساختار منظمی باشند، بانک اطلاعاتی، پایگاه داده یا دیتابیس گفته میشود. پایگاه داده یا دیتابیسها در یک قالب قابل خواندن و دسترسی برای رایانهها و دستگاهها ذخیره میشوند. کاربرد دیتابیسها گسترده و عمومی است. این عبارت در لغت به معنای پایگاه داده و در تعریف اصلی به مجموعه سازمان یافتهای از اطلاعات گفته میشود.
استفاده از Secure MySQL Installer
بسته mysql-server با ابزار از پیش پیکربندی شدهای به نام mysql_secure_installation به شما امکان میدهد تا سرور MySQL خود را از یک نقطه شروع امن راهاندازی کنید. این کار با حذف کاربران ناشناس و قبول امکان تعیین خط مشی قدرت رمز عبور انجام میشود. ابزار mysql_secure_installation که از آن نام بردیم، یک پوسته اسکریپت موجود در سیستمهای یونیکس است که به شما امکان میدهد تا نصب MySQL را با استفاده از روشهای زیر به ایمنترین شکل ممکن انجام دهید؛
- تنظیم یک رمز عبور ایمن برای حسابهای ریشه
- حذف اکانتهای روت قابل دسترسی در خارج از میزبان محلی
- حذف حساب کاربران ناشناس
- حذف دیتابیس و پایگاه داده تست
فرآیند امنیتی را با اجرای این ابزار بلافاصله پس از نصب mysql-server شروع کنید.
- برای فراخوانی ابزار میتوانید از دستور زیر استفاده کنید:
$ sudo mysql_secure_installation
- پس از اینکه راهاندازی MySQL آغاز شد، ابزار از شما میپرسد که آیا تمایل دارید که افزونه اعتبارسنجی رمز عبور را که برای آزمایش رمزهای عبور و بهبود امنیت استفاده میشود، فعال کنید یا خیر. پیشنهاد میکنیم که حتما از این قابلیت استفاده کنید.
- پس از فعال کردن افزونه رمز عبور، خط مشی اعتبارسنجی رمز عبور خود را بر اساس میزان قدرت رمزهای عبور مورد نظر مشخص کنید.
- در مرحله بعدی باید کاربران ناشناس را به طور کامل حذف کنید. این مورد از اهمیت بالایی برخوردار است زیرا مهاجمان عموما از کاربران ناشناس برای دسترسی به سرور پایگاه داده استفاده کنند.
- غیرفعالسازی ورود به سیستم ریشه را از راه دور
- حذف پایگاه داده آزمایشی ایجاد شده در مراحل نصب سرور mysql؛ این دیتابیس برای اهداف آزمایشی ساخته شده و اهمیت چندانی ندارد.
- دانلود مجدد جداول امتیازات؛ این کار برای اطمینان از اعمال شدن تمامی تغییرات انجام میشود.
تغییر کاربر root برای افزایش امنیت MySQL
به صورت پیش فرض، سرور MySQL با یک حساب کاربری superuser/admin از پیش تعریف شده ارائه میشود که میتواند به تمامی امتیازان و عملکردهای دیتابیس و کاربران آن دسترسی داشته باشد. به همین دلیل، قفل کردن و ایمن کردن حساب ریشه از اهمیت بسیار بالایی برخوردار است. دلیل این اهمیت چیست؟ در اکثریت موارد، هکرها حساب ریشه را به دلیل دسترسی کاملی که به دیتابیس دارد، در سرور MySQL، هدف قرار میدهند.
زیرا مهاجمان معمولاً حساب ریشه را در سرور MySQL هدف قرار میدهند، زیرا این پتانسیل را دارد که دسترسی کامل به پایگاههای داده و کاربران پایگاه داده را فراهم کند. برای ایمن سازی کاربر root، اولین گام این است که نام کاربری را از root به نامی غیرقابل پیشبینی تغییر دهید. همچنین پیشنهاد میکنیم که رمز عبور حساب root خود را به شکل مرتب تغییر دهید.
ورود به سرور MySQL
برای دستیابی به مورد گفته شده باید وارد سرور MySQL شوید؛ برای این کار میتوانید از دستور زیر استفاده کنید:
sudo mysql -u root
تغییر نام کاربری حساب “root”
با اجرای دستور زیر میتوانید نام کاربری حساب “root” خود را تغییر دهید:
rename user ‘root’@’localhost' to ‘<new-username’@’localhost’;
تغییر رمز عبور حساب ریشه برای افزایش امنیت MySQL
در این مرحله از کار باید رمز عبور حساب ریشه خود را ایمن کنید. اگر افزونه تأیید رمز عبور را در طول فرآیند نصب ایمن فعال کردهاید، باید رمز عبوری انتخاب کنید که از نظر قدرت، مطابق با الزامات خطمشی باشد. برای این کار از این خط استفاده کنید:
ALTER USER ‘example_username’@’localhost’ IDENTIFIED BY ‘<new-password>’;
در مرحله بعدی پیشنهاد ميکنیم تا جدول امتیازات را مجددا بارگذاری کنید تا مطمئن شوید که تمامی دستورات ذخیره شده و با دستور زیر فعال میشوند.
flush privileges;
برای اینکه اطمینان حاصل کنید که آیا نام کاربری و رمز عبور root تغییر کرده است یا خیر، باید کوئری زیر را اجرا کنید:
use mysql; select user,host,authentication_string from mysql.user;
بخش زیر، کاربر ذخیره شده در دیتابیس mysql را نمایش میدهد؛ در نتیجه باید تغییرات ایجاد شده را منعکس کند.
+------------------+-----------+-------------------------------------------+ | user | host | authentication_string | +------------------+-----------+-------------------------------------------+ | example_user | localhost | *A2550B00C6DF81DACE33551E8293462F6CAE33DA | | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | debian-sys-maint | localhost | *241DC5A20F017D55EE82E46E7996784ED4A5CD8A | +------------------+-----------+-------------------------------------------+ 4 rows in set (0.00 sec)
بهترین راهها برای افزایش امنیت MySQL
حال در ادامه 11 مورد از بهترین روشهای افزایش امنیت MySQL را با هم بررسی میکنیم؛ با ما همراه باشید.
1. drop کردن پایگاه داده تست
در ابتدای کار، دیتابیس آزمایشی نصب شده توسط بسته MySQL Server به عنوان یک بخش اصلی فرآیند mysql_install_db برای تمامی کاربران میتواند در دسترس قرار بگیرد. در نتیجه بهترین راه برای دسترسی هکرهاست. پیشنهاد میکنیم در همان مراحل ابتدایی بلافاصله پس از نصب، آن را حذف کنید.
2. حذف کردن تمامی حسابهای ناشناس
به یاد داشته باشید که MySQL به طور پیش فرض، چندین کاربر ناشناس ایجاد میکند که اصولا هیچ کدام از آنها هیچ کاربردی ندارند. بنابراین، بهترین کار این است که در اولین قدم، این حسابها را حذف کنید تا امکان دسترسی کاربران غیر مجاز را به صفر برسانید.
3. اهمیت تغییر نگاشت پیش فرض پورت در افزایش امنیت MySQL
نکتهای که نیاز است به خاطر داشته باشید این است که مای اس کیو ال به صورت پیش فرض بر روی پورت 3306 اجرا میشود. شما به عنوان یک مدیر اجرایی باید تمامی این پورتها را تغییر دهید تا تعیین شود سرویسهای حیاتی در کدام پورتها اجرا میشوند.
4. اصلاح دسترسی هاستها
اگر زیرساخت شما به عنوان یک سرور مستقل تنظیم شده باشد، MySQL باید به گونهای تنظیم شود که دسترسی به آن تنها از طریق میزبانهای مجاز امکان پذیر باشد. این کار را میتوان با ایجاد تغییرات مناسب در فایلهای hosts.deny و hosts.allow به راحتی انجام داد.
5. عدم اجرای MySQL با امتیازات سطح ریشه
به یاد داشته باشید که اجرا کردن MySQL باید با یک حساب کاربری خاص و تازه، همراه با مجوزهای لازم انجام شود؛ نه مستقیما توسط کاربر اصلی. این موضوع میتواند مزایای مهمی مانند موارد زیر را در پی داشته باشد:
- امکان دریافت حسابرسی
- امکان دریافت گزارش
- مانع از دسترسی مهاجمان با ربودن حساب کاربری root
6. حذف و غیرفعال سازی فایل MySQL History
در دیتابیس مای اسکیو ال فایلی وجود دارد با عنوان تاریخچه MySQL یا MySQL history که در قسمت mysql_history./~ قرار گرفته و در زمان نصب اجرا میشود. به یاد داشته باشید که حذف کامل این فایل از اهمیت بالایی برخوردار است. مهمترین دلیل این اتفاق، وجود اطلاعات مختلف مراحل نصب و راهاندازی است که در صورت در دسترس دیگران قرار گرفتن ميتواند مشکلات امنیتی متعددی را به وجود آورد.
7. افزایش امنیت MySQL با غیرفعال سازی ورود از راه دور
به یاد داشته باشید که اگر از دیتابیس MySQL تنها برای برنامههای محلی استفاده میکنید، باید امکان دسترسی به سرور را از راه دور غیرفعال کنید. برای اینکار میتوانید به راحتی و با باز کردن فایل /etc/my.cnf و افزودن یک ورودی شکه پرش در قسمت [mysqld] انجام دهید.
8. غیرفعال سازی SHOW Databases
این بخش نیز به منظور از بین رفتن دسترسی کاربران غیر، صورت میگیرد. در این قسمت، باید با استفاده از دستوری که در ادامه عنوان میکنیم، skip-show-database را به بخش [mysqld] اضافه کنید تا در نهایت فایل پیکربندی MySQL در etc/my.cnf، محدود یا حذف شود.
SHOW DATABASES
9. غیرفعال سازی دستور Use of LOAD DATA LOCAL INFILE
شما با اجرای دستور LOAD DATA LOCAL INFILE به کاربران امکان میدهید که فایلهای محلی شما را خوانده، به دیگر فایلهای روی سیستم دسترسی داشته باشند. در نتیجه این اتفاق هکرها میتوانند به راحتی با روشهای مختلفی مانند تزریق SQL به این اتفاقات دسترسی داشته باشند. بنابراین پیشنهاد میکنیم دستور فوق را به شکل زیر در بخش [mysqld] my.cnf غیرفعال کنید:
set-variable=local-infile=0
10. افزایش امنیت MySQL با انتخاب حساب کاربری ریشه مهم
بسیار قابل اهمیت است که حساب کاربری ریشه mysql را به نامی تغییر دهید که حدس زدن آن دشوار است. این موضوع به شکل قابل توجهی امنیت دادههای شما را افزایش میدهد؛ زیرا هکرها باید مدت زمان طولانی تلاش کنند تا در نهایت بتوانند نام کاربری شما را حدس بزنند.
11. تنظیم مجوزهای فایل
در این مرحله باید اطمینان حاصل کنید که my.cnf فقط روت قابل نوشتن باشد. همچنین باید مکان پیش فرض دادهها در /usr/local/mysql/data با مجوزهای مناسب ایمن سازی شده باشد.
سخن پایانی
امیدواریم که در این مقاله به درستی با راههای افزایش امنیت MySQL آشنا شده باشید که در نهایت بتوانید از امنیت دادهها و اطلاعاتتان محافظت کنید. اگر در مورد هر یک از مطالب گفته شده با سوالی مواجه شدید و یا موضوعی وجود داشت که تمایل داشتید در مورد آن بیشتر بدانید، با ما در قسمت کامنت به اشتراک بگذارید تا در سریعترین زمان ممکن پاسخگوی شما باشیم.
همچنین ما در اینستاگرام ابرآراز در مورد موضوعات جدید و جذاب دنیای تکنولوژی به زبانی ساده و شفاف صحت میکنیم. پیشنهاد میکنیم ما را در پیج اینستاگرام ابرآراز دنبال کنید.