У нас есть приложение PHP, которое подключается к серверу MySQL, и мы хотим защитить соединения между веб-сервером, серверами приложений и базой данных.
В пиковые периоды времени веб-серверы осуществляют много сотен одновременных подключений к базе данных и выполняют множество небольших операций чтения и записи. Я знаю, что это не оптимально, и параллельно работаю над сокращением количества подключений к базам данных.
В настоящее время у нас нет постоянных подключений к базе данных, и хотя мы намерены в будущем, я хотел бы реализовать это независимо от этого.
Аппаратно - сервер MySQL довольно компактен (16 ядер), как и веб-серверы. Это выделенные серверы.
Мой вопрос касается наиболее эффективного способа защиты и шифрования соединений с сервером базы данных.
Мое исследование до сих пор показало, что основное снижение производительности связано с настройкой SSL-соединения - когда SSL-соединение установлено, производительность снижается незначительно. И вот что я имею о каждом методе защиты соединения:
- MySQL SSL Certificates - работает так же, как обычный SSL. Может использовать клиентские сертификаты для предотвращения несанкционированных подключений. Нет постоянных соединений с нашей существующей установкой. Тем не менее MySQL должен прослушивать открытый порт брандмауэра.
- Stunnel. Настройте порт для порта ssl туннель. Не нужно перенастраивать MySQL. Может закрыть обычный порт прослушивания MySQL, чтобы предотвратить попытки злонамеренного подключения MySQL. Не поддерживает постоянные соединения. Хит производительности неизвестен.
- Туннелирование SSH. Создайте туннель SSH между клиентом и сервером. Не нужно перенастраивать MySQL. Может закрыть обычный порт прослушивания MySQL, чтобы предотвратить попытки злонамеренного подключения MySQL. Поддерживает постоянные соединения, но иногда они выпадают. Хит производительности неизвестен.
Это насколько я смог получить. Я знаю об ограничениях тестов - по моему опыту их очень сложно симулировать трафик в реальном мире. Я надеялся, что у кого-то есть какой-нибудь совет, основанный на их собственном опыте защиты MySQL?
Благодарность
источник
openssl speed
и выбирайте шифры, которые соответствуют вашим потребностям в защите и снижают производительность.Ответы:
Я бы пошел с ssh-туннелем и сделал бы это
autossh
вместоssh
. Что касается производительности, я бы сказал, что протокол SSH очень настраиваемый, и вы можете при необходимости точно настроить ваше соединение.Но я не ожидал бы заметных накладных расходов после того, как соединение установлено.
источник
Взглянув на тесты этой статьи (MySQL Performance Blog), вы действительно должны избегать встроенных в MySQL возможностей SSL.
источник