راهنمای امن فعال‌سازی دسترسی از راه دور MySQL در ۲۰۲۵
در این مقاله، روش‌های امن برای فعال‌سازی دسترسی راه دور به سرور MySQL و MariaDB ارائه شده است.

راهنمای امن فعال‌سازی دسترسی از راه دور MySQL در ۲۰۲۵

این مقاله به شما روش‌های امن و عملی برای فعال‌سازی دسترسی از راه دور به سرور MySQL و MariaDB در سال ۲۰۲۵ را آموزش می‌دهد. با رعایت نکات امنیتی و استفاده از VPN و SSH، می‌توانید به راحتی و با اعتماد به نفس به دیتابیس‌های خود دسترسی داشته باشید.
0 اشتراک گذاری
0
0
0
0

 

چطور می‌توان دسترسی از راه دور به MySQL/MariaDB را به‌طور امن فعال کرد؟

در این راهنمای به‌روز (۲۰۲۵) روش‌های عملی و امن برای فعال‌سازی دسترسی از راه دور به سرور MySQL و MariaDB را بررسی می‌کنیم. هدف ارائهٔ یک چک‌لیست عملی برای مدیران سایت، DevOps، تیم‌های دیتابیس و توسعه‌دهندگان است تا اجازهٔ دسترسی فقط به کاربران و اپلیکیشن‌های مجاز داده شود، بدون این‌که امنیت به‌خطر بیفتد.

 

مراحل کلی و اصول امنیتی

خلاصهٔ قدم‌ها:

  • طراحی معماری: هرگز دیتابیس را مستقیماً روی اینترنت عمومی قرار ندهید مگر ضرورت باشد.
  • استفاده از شبکهٔ خصوصی (VPC/VLAN)، VPN یا SSH tunneling.
  • محدود کردن دسترسی بر اساس آدرس‌های IP و ایجاد کاربرهای با حداقل امتیاز.
  • رمزنگاری TLS/SSL برای ترافیک دیتابیس و استفاده از احراز هویت قوی (*caching_sha2_password* / *X.509*).
  • فعال‌سازی لاگینگ و ریت لیمیت، استفاده از فایروال و سیستم‌های تشخیص نفوذ (IDS/IPS).
  • بررسی عملکرد و تأخیر (latency) و انتخاب لوکیشن دیتاسنتر مناسب بر اساس کاربرد.

 

چرا نباید MySQL را مستقیم روی اینترنت باز کرد؟

دیتابیس‌ها هدف جذابی برای نفوذگران هستند؛ شامل داده‌های حساس و اعتبارنامه‌ها. باز کردن پورت 3306 روی اینترنت بدون محدودسازی و رمزنگاری، ریسک‌های نشت داده، brute-force و حملات DDoS را افزایش می‌دهد.

 

گام‌به‌گام: پیکربندی MySQL برای دسترسی راه دور (دستورات عملی)

 

۱) ویرایش فایل تنظیمات

فایل‌های پیکربندی معمول:

  • MySQL (Debian/Ubuntu): /etc/mysql/mysql.conf.d/mysqld.cnf
  • MariaDB: /etc/mysql/mariadb.conf.d/50-server.cnf

به‌صورت پیش‌فرض ممکن است خط bind-address به 127.0.0.1 تنظیم شده باشد. برای پذیرش اتصال از یک IP خاص یا همهٔ آدرس‌ها:

توصیه‌شده: اجازه به IP مشخص:

bind-address = 192.0.2.10

غیرتوصیه‌شده مگر در شبکهٔ خصوصی:

bind-address = 0.0.0.0

پس از تغییر:

systemctl restart mysql

 

۲) ساخت کاربر امن با محدودیت‌ها

هرگز از کاربر root برای اتصال راه دور استفاده نکنید. نمونهٔ دستورات:

mysql -u root -p
CREATE USER 'appuser'@'203.0.113.45' IDENTIFIED WITH caching_sha2_password BY 'StrongP@ssw0rd!';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'appuser'@'203.0.113.45';
FLUSH PRIVILEGES;

نکات مهم:

  • استفاده از آدرس IP مشخص (‘203.0.113.45’) بجای ‘%’ بسیار امن‌تر است.
  • تعیین حداقل مجوزها (least privilege).
  • برای اتصال‌های از داخل شبکهٔ خصوصی از آدرس‌های خصوصی استفاده کنید (مثلاً 10.x.x.x).

 

۳) فعال‌سازی SSL/TLS برای MySQL

نمونهٔ سریع ساخت CA و گواهی‌ها با OpenSSL:

openssl genrsa 4096 -out ca-key.pem
openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca.pem -subj "/CN=MyDB-CA"

openssl genrsa 4096 -out server-key.pem
openssl req -new -key server-key.pem -out server-req.csr -subj "/CN=db.example.com"
openssl x509 -req -in server-req.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -days 3650

openssl genrsa 4096 -out client-key.pem
openssl req -new -key client-key.pem -out client-req.csr -subj "/CN=dbclient"
openssl x509 -req -in client-req.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -days 3650

قرار دادن گواهی‌ها در my.cnf:

[mysqld]
ssl-ca=/etc/mysql/ssl/ca.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem

پس از restart، امکان الزام کاربران به استفاده از گواهی‌ها:

ALTER USER 'appuser'@'203.0.113.45' REQUIRE X509;
-- یا فقط TLS بدون client cert:
ALTER USER 'appuser'@'203.0.113.45' REQUIRE SSL;

اتصال امن از کلاینت:

mysql -u appuser -p -h db.example.com --ssl-mode=REQUIRED --ssl-ca=ca.pem

 

۴) استفاده از SSH Tunnel

مناسب برای ادمین‌ها و دسترسی محدود زمانی که TLS در دسترس نیست. روی ماشین کلاینت:

ssh -fN -L 3306:127.0.0.1:3306 [email protected]

با این روش شما به پورت 3306 محلی متصل می‌شوید که به سرور دوردست تونل شده است.

 

۵) تنظیم فایروال

مثال با ufw (اجازه فقط به IP مشخص):

ufw allow from 203.0.113.45 to any port 3306 proto tcp

با firewalld:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.45" port protocol="tcp" port="3306" accept'
firewall-cmd --reload

بررسی پورت:

ss -tlnp | grep 3306
telnet db.example.com 3306

 

محافظت بیشتر — راهکارهای پیشرفته و توصیه‌شده (۲۰۲۵)

 

استفاده از شبکهٔ خصوصی، VPC و VPN

به‌جای باز کردن پورت دیتابیس روی اینترنت، از Private Network بین اپلیکیشن و دیتابیس استفاده کنید. اگر از سرویس ما استفاده می‌کنید، می‌توانید از شبکهٔ خصوصی و BGP/VRF برای اتصال ایمن بهره ببرید.

برای کاربران توزیع‌شده، VPN یا IPsec پیشنهاد می‌شود تا ترافیک دیتابیس فقط در کانال‌های رمزنگاری‌شده حرکت کند.

 

Bastion Host و Zero Trust

قرار دادن Bastion Host با احراز هویت دو مرحله‌ای (MFA) و لاگ کامل جلسات رویکرد امن‌تری نسبت به باز کردن مستقیم پورت‌هاست. الگوی Zero Trust بدین معنی است که هر اتصال باید احراز هویت شده و تنها به منابع مشخص اجازه داده شود.

 

احراز هویت و الگوریتم‌ها

  • MySQL 8: استفاده از caching_sha2_password بجای mysql_native_password امن‌تر است.
  • در موارد حساس، استفاده از X.509 client certificates توصیه می‌شود.
  • مدیریت پسوردها با Secret Manager یا Vault (مثل HashiCorp Vault, AWS Secrets Manager) بهتر از قرار دادن پسورد در فایل‌ها یا کد است.

 

محافظت در برابر حملات و محدودیت‌ها

  • max_connect_errors را پایین نگه دارید و skip-name-resolve را فعال کنید تا از DNS-based delays جلوگیری شود.
  • استفاده از fail2ban با filter مخصوص mysql-auth برای بلاک کردن IPهای مخرب.
  • Rate limit کلی اتصال‌ها و تنظیم connection_timeout مناسب.

 

مانیتورینگ و لاگینگ

فعال‌سازی audit log، general log و slow query log و استفاده از ابزارهایی مثل Prometheus + Grafana یا Percona Monitoring برای شناسایی الگوهای مخرب و مسائل عملکردی ضروری است.

 

نکات عملی برای انتخاب لوکیشن دیتاسنتر و پیکربندی بر اساس کاربرد

هدایت بر اساس نوع کاربرد:

  • ترید (فارکس/کریپتو): کمترین RTT به صرافی/سرور معامله‌گر اهمیت دارد؛ انتخاب لوکیشن نزدیک به صرافی توصیه می‌شود. سرویس ما با ۸۵+ لوکیشن این امکان را فراهم می‌کند.
  • گیمینگ: دیتابیس‌های بازی نیاز به پینگ پایین دارند؛ مسیر BGP بهینه و شبکهٔ کم‌تاخیر اهمیت دارد. سرورهای VPS مخصوص گیم و سرور ضد DDoS مفید هستند.
  • AI / رندرینگ: برای بارهای I/O و محاسباتی بالا، ترکیب سرورهای GPU و دیتابیس در همان منطقهٔ شبکهٔ خصوصی باعث کاهش تأخیر می‌شود.
  • وب‌سایت‌ها و اپلیکیشن‌ها: استفاده از CDN و کش لایهٔ اپلیکیشن (Redis/Memcached) همراه با دیتابیس در Private Network بهترین تعادل سرعت و هزینه را فراهم می‌آورد.

 

مثال‌های پیکربندی my.cnf پیشنهادی برای کاربردهای مختلف

پیکربندی برای سرور با بار متوسط (وب/اپلیکیشن):

[mysqld]
bind-address = 10.0.1.5
max_connections = 200
innodb_buffer_pool_size = 2G
skip-name-resolve = 1
ssl-ca=/etc/mysql/ssl/ca.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem

برای سرورهای با بار بالا و مخصوص AI/rending:

innodb_buffer_pool_size = 16G
innodb_flush_method = O_DIRECT
innodb_io_capacity = 2000

همیشه تنظیمات را بر اساس RAM، I/O و نیاز اپلیکیشن تنظیم کنید.

 

چک‌لیست نهایی امنیتی قبل از فعال‌سازی دسترسی راه دور

  • استفاده از شبکهٔ خصوصی یا VPN برای ترافیک دیتابیس
  • محدود کردن آدرس‌های IP مجاز در فایروال
  • ایجاد کاربران با حداقل امتیاز و استفاده از hashing الگوریتم امن
  • فعال‌سازی TLS/SSL و در صورت نیاز client certificates
  • عدم استفاده از root برای اتصال از راه دور
  • فعال‌سازی logging؛ ارسال لاگ‌ها به سیستم External
  • تنظیم محدودیت‌های اتصال و استفاده از fail2ban
  • مانیتورینگ و هشدار در صورت افزایش غیرمعمول ترافیک یا خطاها
  • پشتیبان‌گیری (backup) منظم و تست بازیابی

 

نتیجه‌گیری و توصیه نهایی

فعال‌سازی دسترسی راه دور به MySQL در ۲۰۲۵ باید هم‌زمان سریع و امن باشد. بهترین رویکرد: ابتدا شبکهٔ خصوصی یا VPN را در نظر بگیرید، سپس TLS و محدودسازی IP را اضافه کنید و دسترسی‌ها را به حداقل نیاز محدود کنید.

استفاده از Bastion Host، MFA و لاگینگ پیشرفته امنیت شما را افزایش می‌دهد. اگر به سروری با پایداری بالا، شبکهٔ کم‌تاخیر و امکانات امنیتی نیاز دارید، سرویس‌های ما شامل ۸۵+ لوکیشن جهانی، سرور GPU، سرور محاسباتی، سرور ضد DDoS، VPS مخصوص ترید و گیم، CDN و شبکهٔ BGP گزینه‌های آماده و قابل تنظیم ارائه می‌دهند.

 

سؤالات متداول

شاید دوست داشته باشید

چگونه یک برنامه FastAPI را با پایگاه داده NoSQL راه‌اندازی کنیم؟

مقدمه هنگام توسعه برنامه‌های پایتون، FastAPI با سرعت، سادگی و پشتیبانی از برنامه‌نویسی غیرهمزمان انتخابی عالی است. در…
The best ways to prevent DDoS attacks

بهترین روش‌های جلوگیری از حملات DDoS برای مدیران سایت

حملات DDoS (Distributed Denial of Service) یکی از رایج‌ترین و مخرب‌ترین تهدیدات امنیتی برای وب‌سایت‌ها و سرورها هستند. این حملات با ارسال حجم عظیمی از درخواست‌های مخرب، منابع سرور را اشباع کرده و باعث کندی شدید، قطعی سایت و حتی از دست رفتن درآمد و اعتبار برند می‌شوند. برای مدیران سایت و ادمین‌های سرور، آشنایی با روش‌های اصولی مقابله با DDoS یک ضرورت است، نه یک انتخاب. در این مقاله، مؤثرترین راهکارهای فنی و عملی برای جلوگیری و کاهش اثر حملات DDoS را به‌صورت تخصصی بررسی می‌کنیم.