2025 Yılında MySQL Uzaktan Erişimini Etkinleştirmeye Yönelik Güvenli Bir Kılavuz
Bu makale, MySQL ve MariaDB sunucularına uzaktan erişimi sağlamak için güvenli yöntemler sunmaktadır.

2025 Yılında MySQL Uzaktan Erişimini Etkinleştirmeye Yönelik Güvenli Bir Kılavuz

Bu makale, 2025 yılında MySQL ve MariaDB sunucularına uzaktan erişimi sağlamanın güvenli ve pratik yollarını öğretecektir. Güvenlik ipuçlarını takip ederek ve VPN ile SSH kullanarak veritabanlarınıza kolayca ve güvenle erişebilirsiniz.
0 Hisse senetleri
0
0
0
0

 

MySQL/MariaDB'ye uzaktan erişimi güvenli bir şekilde nasıl etkinleştiririm?

Bu güncellenmiş (2025) kılavuzda, MySQL ve MariaDB sunucularına uzaktan erişimi sağlamanın pratik ve güvenli yollarını inceliyoruz. Amaç, site yöneticileri, DevOps ekipleri, veritabanı ekipleri ve geliştiriciler için, güvenliği tehlikeye atmadan yalnızca yetkili kullanıcılara ve uygulamalara erişim izni verecek pratik bir kontrol listesi sunmaktır.

 

Genel adımlar ve güvenlik prensipleri

Adımların özeti:

  • Mimari tasarım: Asla Gerekli olmadıkça veritabanını doğrudan halka açık internete koymayın.
  • Özel ağ (VPC/VLAN), VPN veya SSH tünelleme kullanın.
  • IP adreslerine göre erişimi kısıtlayın ve kullanıcıları şu özelliklerle oluşturun: Minimum puan.
  • Veritabanı trafiği için TLS/SSL şifrelemesi ve güçlü kimlik doğrulama kullanımı (*caching_sha2_password* / *X.509*).
  • Günlük kaydını ve hız sınırlamalarını etkinleştirin, güvenlik duvarları ve saldırı tespit sistemleri (IDS/IPS) kullanın.
  • Performansı ve gecikme süresini gözden geçirin ve uygulamaya göre uygun veri merkezi konumunu seçin.

 

MySQL'in doğrudan internete açık olmamasının nedenleri nelerdir?

Veritabanları, hassas veriler ve kimlik bilgileri içerdiğinden, bilgisayar korsanları için cazip bir hedeftir. 3306 numaralı portun kısıtlama veya şifreleme olmaksızın internete açılması, veri sızıntısı, kaba kuvvet ve DDoS saldırıları riskini artırır.

 

Adım Adım: MySQL'i Uzaktan Erişime Hazırlama (Pratik Talimatlar)

 

1) Yapılandırma dosyasını düzenleyin

Ortak yapılandırma dosyaları:

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

Varsayılan olarak, satır şu şekilde olabilir: bağlama adresi İle 127.0.0.1 Ayarlar yapılmıştır. Belirli bir IP adresinden veya tüm adreslerden gelen bağlantıları kabul etmek için:

Tavsiye edilen: Belirli IP adreslerine izin ver:

bind-address = 192.0.2.10

Özel ağ dışında kullanılması önerilmez:

bind-address = 0.0.0.0

Değişiklikten sonra:

systemctl restart mysql

 

2) Kısıtlamalarla güvenli bir kullanıcı oluşturma

Kullanıcıdan asla kök Uzaktan bağlantılar için kullanmayın. Örnek komutlar:

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;

Önemli noktalar:

  • '%' yerine belirli bir IP adresi ('203.0.113.45') kullanmak çok daha güvenlidir.
  • Kararlılık Minimum izinler (en az ayrıcalıklı).
  • Özel ağ içinden yapılan bağlantılar için özel adresler kullanın (örneğin, 10.xxx).

 

3) MySQL için SSL/TLS'yi Etkinleştirme

OpenSSL ile CA ve sertifikalar oluşturmaya dair kısa bir örnek:

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

Sertifikaların yerleştirilmesi benim.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

Yeniden başlatmanın ardından, kullanıcıların sertifika kullanmasını zorunlu kılma özelliği:

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

İstemciden güvenli bağlantı:

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

 

4) SSH Tüneli Kullanımı

TLS'nin kullanılamadığı durumlarda yöneticiler ve sınırlı erişim için uygundur. İstemci makinesinde:

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

Bu yöntem sizi, uzak sunucuya tünellenmiş olan yerel 3306 numaralı porta bağlar.

 

5) Güvenlik duvarı ayarları

ufw ile örnek (yalnızca belirtilen IP adreslerine izin ver):

ufw allow from 203.0.113.45 to any port 3306 proto tcp

firewalld ile:

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

Liman kontrolü:

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

 

Daha Fazla Koruma — Gelişmiş ve Önerilen Çözümler (2025)

 

Özel ağ, VPC ve VPN kullanımı

Veritabanı portunu internete açmak yerine, uygulama ile veritabanı arasında özel bir ağ kullanın. Hizmetimizi kullanıyorsanız, güvenli bir bağlantı için özel bir ağ ve BGP/VRF kullanabilirsiniz.

Dağıtılmış kullanıcılar için, veritabanı trafiğinin yalnızca şifrelenmiş kanallar üzerinden iletilmesi amacıyla VPN veya IPsec önerilir.

 

Bastion Host ve Sıfır Güven

İki faktörlü kimlik doğrulama (MFA) ve tam oturum kaydı ile bir Bastion Host'u dağıtmak, portları doğrudan açmaktan daha güvenli bir yaklaşımdır. Sıfır Güven modeli, her bağlantının kimlik doğrulaması gerektirdiği ve yalnızca belirli kaynaklara izin verildiği anlamına gelir.

 

Kimlik doğrulama ve algoritmalar

  • MySQL 8: Kullanımı önbelleğe alma_sha2_şifresi Yerine mysql_native_password Daha güvenli.
  • Hassas durumlarda kullanın X.509 istemci sertifikaları Tavsiye edilen.
  • Parolaları dosyalara veya kodlara saklamak yerine, Secret Manager veya Vault (HashiCorp Vault, AWS Secrets Manager gibi) kullanarak yönetmek daha iyidir.

 

Saldırılara ve kısıtlamalara karşı koruma

  • max_connect_errors değerini düşük tutun ve isim çözümlemesini atla DNS kaynaklı gecikmeleri önlemek için etkinleştirin.
  • Kötü amaçlı IP adreslerini engellemek için fail2ban'ı özel bir mysql-auth filtresiyle kullanma.
  • Genel bağlantı hızı sınırı ve uygun connection_timeout ayarı.

 

İzleme ve kayıt tutma

Denetim kayıtlarını, genel kayıtları ve yavaş sorgu kayıtlarını etkinleştirmek ve Prometheus + Grafana veya Percona Monitoring gibi araçları kullanmak, kötü amaçlı kalıpları ve performans sorunlarını belirlemek için çok önemlidir.

 

Uygulamaya göre veri merkezi konumu ve yapılandırması seçimi için pratik ipuçları

Başvuru türüne göre rehberlik:

  • Forex/Kripto Para Alım Satım: Borsa/işlemci sunucusuna en düşük RTT (Gidiş-Dönüş Süresi) önemlidir; borsaya yakın bir konum seçilmesi önerilir. Hizmetimiz 85'ten fazla konumla bunu sağlamaktadır.
  • Oyun: Oyun veritabanları düşük ping gerektirir; optimize edilmiş BGP yönlendirmesi ve düşük gecikmeli ağ önemlidir. Oyun VPS sunucuları ve DDoS saldırılarına karşı koruma sağlayan sunucular faydalıdır.
  • Yapay Zeka/Render: Yüksek G/Ç ve işlem yükleri için, GPU ve veritabanı sunucularını aynı özel ağ bölgesinde birleştirmek gecikmeyi azaltır.
  • Web siteleri ve uygulamalar: Özel bir ağda bulunan bir veritabanıyla birlikte CDN ve uygulama katmanı önbelleği (Redis/Memcached) kullanmak, hız ve maliyet arasında en iyi dengeyi sağlar.

 

Çeşitli kullanım alanları için my.cnf yapılandırma örnekleri önerildi.

Orta yük altında çalışan bir sunucu (web/uygulama) için yapılandırma:

[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

Yüksek yük altında çalışan, özel yapay zeka/render sunucuları için:

innodb_buffer_pool_size = 16G
innodb_flush_method = O_DIRECT
innodb_io_capacity = 2000

Ayarları her zaman RAM, giriş/çıkış ve uygulama ihtiyaçlarına göre düzenleyin.

 

Uzaktan erişimi etkinleştirmeden önce son güvenlik kontrol listesi

  • Veritabanı trafiği için özel ağ veya VPN kullanma
  • Güvenlik duvarında izin verilen IP adreslerini kısıtlamak
  • Minimum yetkilere sahip kullanıcılar oluşturun ve güvenli karma algoritmaları kullanın.
  • TLS/SSL'yi ve gerekirse istemci sertifikalarını etkinleştirin.
  • Uzak bağlantılar için root yetkisi kullanılmıyor.
  • Günlük kaydını etkinleştir; günlükleri harici sisteme gönder
  • Bağlantı sınırlarını ayarlama ve fail2ban kullanma
  • Olağandışı trafik artışları veya hatalar durumunda izleme ve uyarı sistemi.
  • Düzenli yedekleme ve kurtarma testleri

 

Sonuç ve nihai öneri

2025 yılında MySQL'e uzaktan erişimi sağlamak hem hızlı hem de güvenli olmalıdır. En iyi yaklaşım: Öncelikle özel bir ağ veya VPN düşünün, ardından TLS ve IP kısıtlaması ekleyin ve erişimi minimuma indirin.

Bastion Host, MFA ve gelişmiş kayıt tutma özellikleriyle güvenliğinizi artırabilirsiniz. Yüksek kararlılığa sahip bir sunucuya, düşük gecikmeli ağa ve güvenlik özelliklerine ihtiyacınız varsa, hizmetlerimiz 85'ten fazla küresel lokasyon, GPU sunucuları, hesaplama sunucuları, DDoS saldırılarına karşı koruma sağlayan sunucular, işlem ve oyun VPS'leri, CDN ve BGP ağı gibi hazır ve özelleştirilebilir seçenekler sunmaktadır.

 

Sıkça Sorulan Sorular

Ayrıca Şunları da Beğenebilirsiniz