امنسازی MySQL؛ کاربر، دسترسی و لاگ
دیتابیس باز یکی از رایجترین دلایل نفوذ است؛ با چند تنظیم ساده سطح امنیت را بالا ببرید.
آخرین بهروزرسانی: ۲۸ مهر ۱۴۰۵ · زمان مطالعه: حدود 3 دقیقه · سطح: کاربردی
- امنسازی MySQL؛ کاربر، دسترسی و لاگ
- دسترسی شبکه دیتابیس را محدود کنید
- نسخه و پچها را بهروز نگه دارید
چرا این موضوع مهم است؟
موضوع Database یکی از پایههای نگهداری سرور است. رعایت آن باعث پایداری بیشتر، کاهش ریسک امنیتی و صرفهجویی در زمان پشتیبانی میشود.
قبل از شروع، از پیکربندی فعلی و دادههای مهم نسخه پشتیبان بگیرید تا در صورت نیاز بتوانید به وضعیت قبل برگردید.
پیشنیازها
- دسترسی SSH با کاربر root یا کاربر دارای sudo
- Ubuntu 22.04/24.04 یا Debian 12 (سازگاری با توزیعهای مشابه)
- نسخه پشتیبان از فایلها و دیتابیسهای مهم
- اطلاعات اتصال و بکاپ دیتابیس MySQL
راهنمای گامبهگام
گام 1 — دسترسی شبکه دیتابیس را محدود کنید
دسترسی شبکه دیتابیس را محدود کنید. این کار را در بازه کمترافیک انجام دهید و در صورت نیاز کاربران را از قبل مطلع کنید.
گام 2 — کاربران ناشناس و دیتابیس test را حذف کنید
کاربران ناشناس و دیتابیس test را حذف کنید. این مرحله را با دقت انجام دهید و خروجی دستور را بررسی کنید تا از اعمال درست تغییرات مطمئن شوید.
گام 3 — برای هر برنامه کاربر جدا بسازید
برای هر برنامه کاربر جدا بسازید. پس از اجرا، وضعیت سرویس و لاگها را کنترل کنید؛ تغییر بدون بررسی میتواند خطای پنهان ایجاد کند.
گام 4 — مجوزها را حداقلی تعیین کنید
مجوزها را حداقلی تعیین کنید. اگر روی چند سرور کار میکنید، این مورد را یکبار روی محیط تست اجرا و سپس روی تولید اعمال کنید.
گام 5 — لاگ کوئریهای کند و خطا را فعال کنید
لاگ کوئریهای کند و خطا را فعال کنید. مقدارهای نمونه را با اطلاعات واقعی سرور خود جایگزین کنید و از اجرای دستور با مقادیر پیشفرض پرهیز کنید.
گام 6 — نسخه و پچها را بهروز نگه دارید
نسخه و پچها را بهروز نگه دارید. برای اطمینان، نتیجه را از یک مسیر دوم (مرورگر، کلاینت یا ابزار مانیتورینگ) هم بررسی کنید.
نمونه دستورها
SELECT user, host FROM mysql.user;
DROP USER ''@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE ON app.* TO 'app_user'@'localhost';نکات امنیتی و بهینهسازی
- تغییرات را مستند کنید تا در آینده یا هنگام تحویل به تیم دیگر قابل پیگیری باشد.
- رمزها و کلیدها را در فایلهای محافظتشده نگه دارید و هرگز در کد یا مخزن عمومی قرار ندهید.
- لاگها را پایش کنید تا رفتار غیرعادی زودتر شناسایی شود.
خطاهای رایج و راهحل
- اگر مطمئن نیستید، تغییر را در محیط تست تکرار کنید و لاگ کامل را برای پشتیبانی بفرستید.
- اگر تغییرات اعمال نشد، کش مرورگر/برنامه و نیاز به reload یا restart را بررسی کنید.
- اگر مطمئن نیستید، تغییر را در محیط تست تکرار کنید و لاگ کامل را برای پشتیبانی بفرستید.
سؤالات متداول
آیا کاربر root برای WHMCS لازم است؟
خیر؛ WHMCS با کاربر اختصاصی و مجوز محدود کار میکند.
چطور تلاشهای ورود ناموفق را ببینم؟
در لاگ MySQL و با fail2ban یا مانیتورینگ لاگها.
میلاد سرور پلنهای اقتصادی سرور مجازی ایران و سرور مجازی آلمان را با آیپی اختصاصی و قیمت شفاف ارائه میکند. برای مقایسه همه کشورها فهرست کامل سرورهای بینالملل را ببینید.
جمعبندی
این آموزش را یکبار روی محیط تست تمرین کنید تا در تولید با اطمینان بیشتری اجرا شود.