Иногда приходится работать с программным обеспечением, в котором нет встроенных функций безопасности для нелокальных подключений. Фактически, некоторые клиентские библиотеки отправляют учетные данные в виде открытого текста по сети. С другой стороны, эти приложения могут быть мощными и очень хорошо служить своей цели, поэтому почти нет причин для их замены.
Как я могу защитить «незащищенные» соединения между узлами в моем кластере и скрыть эти туннели от реального приложения? Каким образом это повлияет на производительность для небольших запросов / ответов или более крупных? Какие компромиссы необходимо сделать?
Пожалуйста, обратите внимание: я относительно новичок в мире Linux и хотел бы узнать больше о защите среды и т. Д. Вышеупомянутый вопрос возник у меня в голове, когда я прочитал статью о функциях безопасности некоторых ранних версий NoSQL- базы данных. Одним из примеров утечек безопасности было то, что учетные данные были отправлены в открытом виде по сети, а также все данные между узлами. Поэтому я задавался вопросом, как можно использовать такую ценную технологию, даже если в ней отсутствуют некоторые встроенные функции безопасности.
С уважением, Эмс
Что вам действительно нужно сделать, так это отправить трафик по какой-то частной сети. Создание собственной частной глобальной сети действительно довольно дорого, поэтому было бы хорошо, если бы мы могли каким-то образом использовать Интернет ... но тогда частная сеть не была бы физической, а вместо этого была бы "виртуальной" ". Фактически, это звучит как очень удачное название для продукта ... «виртуальная частная сеть». Вы можете сделать его еще более удобным для маркетинга с помощью броской аббревиатуры «VPN». Если бы только кто-то имел уже думал об этом...
Загляните в туннели SSH. Вы можете пропустить через них любое сетевое соединение, использовать аутентификацию на основе ключей для устранения паролей и создать сценарий их создания при загрузке. Кроме того, SSH бесплатный. Если вам не нужно полное туннелирование L2, чего, похоже, нет, ничего более сложного не требуется.
Например:
ssh -L8080: server.example.com: 80 otherendpoint.example.com
перенаправит порт 8080 на вашем локальном компьютере на порт 80 на server.example.com через зашифрованный туннель SSH на otherendpoint.example.com (который также может быть server.example.com). Просто скажите вашему приложению использовать localhost: 8080 в качестве другой конечной точки, и оно даже не заметит разницы.