MySQL'e güvenli bir şekilde bağlanma - MySQL'in SSL vs Stunnel vs SSH Tunneling


15

MySQL sunucusuna bağlanan bir PHP uygulamamız var ve web ve uygulama sunucuları ile veritabanı arasındaki bağlantıları güvenli hale getirmek istiyoruz.

Yoğun zamanlarda, web sunucuları veritabanına yüzlerce eşzamanlı bağlantı kurar ve birçok küçük okuma ve yazma işlemi gerçekleştirir. Bunun en uygun olmadığının farkındayım ve buna paralel olarak veritabanı bağlantılarının sayısını azaltmaya çalışıyorum.

Şu anda açık olan veritabanıyla sürekli bağlantılarımız yok ve gelecekte bunu yapmaya niyetli olmamıza rağmen, bunu bağımsız olarak uygulamak istiyorum.

Donanım açısından akıllı - MySQL sunucusu, web sunucuları gibi oldukça tıknaz (16 çekirdekli). Onlar adanmış sunucular.

Sorum daha sonra veritabanı sunucusuna bağlantıların güvenliğini sağlamak ve şifrelemek için en etkili yolu kuşatıyor.

Şimdiye kadar yaptığım araştırma, ana performans ek yükünün SSL bağlantısı kurmak olduğunu ileri sürdü - SSL bağlandıktan sonra çok az performans cezası var. İşte bağlantıyı sağlamak için her yöntem hakkında ne var:

  1. MySQL SSL Sertifikaları - normal SSL gibi çalışır. Yetkisiz bağlantıları önlemek için istemci sertifikalarını kullanabilir. Mevcut kurulumumuzla kalıcı bağlantı yok. Yine de güvenlik duvarındaki açık bir bağlantı noktasında MySQL dinlemelisiniz.
  2. stunnel. Port ssl tüneline bir port kurun. MySQL'i yeniden yapılandırmanız gerekmez. Kötü amaçlı MySQL bağlantı girişimlerini önlemek için normal MySQL dinleme bağlantı noktasını kapatabilir. Kalıcı bağlantıları desteklemez. Bilinmeyen performans isabeti.
  3. SSH Tüneli. İstemci ile sunucu arasında bir SSH tüneli oluşturun. MySQL'i yeniden yapılandırmanız gerekmez. Kötü amaçlı MySQL bağlantı girişimlerini önlemek için normal MySQL dinleme bağlantı noktasını kapatabilir. Kalıcı bağlantıları destekler, ancak bunlar bazen kesilir. Bilinmeyen performans isabeti.

Bu elde edebildiğim kadarıyla. Kıyaslamaların sınırlamalarının farkındayım - bunları çalıştırma deneyimime göre gerçek dünya trafiğini simüle etmek çok zor. Birinin MySQL güvenliğini sağlamak için kendi deneyimlerine dayanarak bazı tavsiyelerde bulunmasını umuyordum?

Teşekkürler


Ne tür bir sunucu / ağ mimarisine sahipsiniz? Ne tür bir senaryoyu önlemeye çalışıyorsunuz? Tüm sunucu-sunucu iletişiminiz ayrı bir anahtar / VLAN üzerindeyse, koklamaya karşı korumaya ihtiyacınız olmayabilir. Performansa gelince, openssl speedkoruma ve performanstan ödün verme gereksinimlerinize uygun şifreleri çalıştırın ve seçin.
Marcin

@ Marcin - openssl hız ipucu için teşekkürler. Önlemeye çalıştığım senaryolar mysql'e yetkisiz bağlantılar ve sunucular arasındaki iletişimi şifrelemek. Üç yaklaşımı karşılaştırarak verebileceğiniz her türlü yardım minnetle alınır.
dastra

1
3) bırakma etkisini azaltmak için autossh kullanın. Bağlantı kesilmesi durumunda otomatik olarak yeniden bağlanır. Burada birçok durumda iyi çalışır.
ansi_lumen

Yanıtlar:


5

Ssh-tüneli ile gidip autosshyerine yapardım ssh. Performans hakkında, SSH protokolünün son derece özelleştirilebilir olduğunu ve gerekirse bağlantınıza ince ayar yapabileceğinizi söyleyebilirim.

Ancak bağlantı kurulduktan sonra gözle görülür bir ek yük beklemezdim.


3

Bu makalenin (MySQL Performance Blog) kriterlerine bakarak, MySQL'in yerel SSL özelliğinden gerçekten kaçınmalısınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.