Mamy aplikację PHP, która łączy się z serwerem MySQL i chcemy zabezpieczyć połączenia między serwerami WWW i aplikacjami a bazą danych.
W godzinach szczytu serwery WWW wykonują setki równoczesnych połączeń z bazą danych i wykonują wiele małych odczytów i zapisów. Wiem, że to nie jest optymalne i pracuję nad zmniejszeniem liczby połączeń z bazą danych równolegle z tym.
Obecnie nie mamy stałych połączeń z bazą danych i chociaż zamierzamy to w przyszłości, chciałbym to wdrożyć niezależnie od tego.
Pod względem sprzętowym - serwer MySQL jest dość masywny (16 rdzeni), podobnie jak serwery sieciowe. To serwery dedykowane.
Moje pytanie dotyczy zatem najbardziej wydajnego sposobu zabezpieczania i szyfrowania połączeń z serwerem bazy danych.
Moje dotychczasowe badania sugerują, że głównym obciążeniem związanym z wydajnością jest konfiguracja połączenia SSL - po podłączeniu SSL występuje niewielki spadek wydajności. A oto co mam o każdej metodzie zabezpieczenia połączenia:
- Certyfikaty MySQL SSL - działa tak jak normalny SSL. Może używać certyfikatów klienta, aby zapobiegać nieautoryzowanym połączeniom. Brak trwałych połączeń z naszą istniejącą konfiguracją. Nadal muszę mieć MySQL nasłuchujący na otwartym porcie zapory.
- stunnel. Skonfiguruj tunel ssl z portu do portu. Nie musisz ponownie konfigurować MySQL. Może zamknąć normalny port nasłuchiwania MySQL, aby zapobiec złośliwym próbom połączenia MySQL. Nie obsługuje trwałych połączeń. Nieznany hit wydajności.
- Tunelowanie SSH. Utwórz tunel SSH między klientem a serwerem. Nie musisz ponownie konfigurować MySQL. Może zamknąć normalny port nasłuchiwania MySQL, aby zapobiec złośliwym próbom połączenia MySQL. Obsługuje trwałe połączenia, ale czasami są one przerywane. Nieznany hit wydajności.
To jest tak daleko, jak tylko mogłem. Zdaję sobie sprawę z ograniczeń testów porównawczych - z mojego doświadczenia w ich prowadzeniu bardzo trudno jest symulować ruch w świecie rzeczywistym. Miałem nadzieję, że ktoś ma jakieś porady oparte na własnych doświadczeniach związanych z zabezpieczaniem MySQL?
Dzięki
źródło
openssl speed
i wybierz szyfry, które pasują do twoich potrzeb w zakresie ochrony w porównaniu do kompromisu wydajności.Odpowiedzi:
Poszedłbym z tunelem ssh i zrobiłbym to z
autossh
zamiastssh
. Jeśli chodzi o wydajność, powiedziałbym, że protokół SSH jest wysoce konfigurowalny i w razie potrzeby można dostroić połączenie.Ale nie spodziewałbym się zauważalnego obciążenia po skonfigurowaniu połączenia.
źródło
Patrząc na testy tego artykułu (MySQL Performance Blog), powinieneś naprawdę unikać natywnej możliwości MySQL w zakresie SSL.
źródło