Безопасная связь между двумя серверами

Я хочу надежно хранить закрытые ключи моих пользователей на отдельном сервере (назовем его B), и он используется для подписи и расшифровки информации. B хранит ключи в базе данных (postgres). Сервер A (общедоступный) отправляет информацию в B. В идеале B необходимо получить закрытый ключ, подписать токен с помощью информации и отправить его обратно в A. Вместо отправки закрытого ключа на A, что может быть проблемой безопасности (если сервер A скомпрометирован).

Мои варианты:

  1. веб-сокеты
  2. Запрос Https (https://nodejs.org/api/https.html#https_https_request_options_calling)

Вопросов:

  1. Есть ли другие варианты безопасного взаимодействия с двумя серверами?
  2. Если сервер B был на порту "7000", как я могу убедиться, что только сервер A может получить к нему доступ?
  3. Как HSM-сервер помогает в моем случае и как он взаимодействует с другими серверами (веб-сокет или https-запрос)?

Я мог бы просто выбрать простой маршрут и подключить базу данных сервера B к порту «7000» и выполнять запросы из A, но, как я уже сказал, это не так безопасно. Я слышал, что HSM обрабатывает / расшифровывает информацию и отправляет ее обратно, так что я могу делать что-то подобное с обычными серверами.

Спасибо, любая помощь будет оценена


ОБНОВЛЕНИЕ

@zaph ответил на вопросы 2 и 3.

Вопрос: Требуется ли серверу A выполнить запрос https и включить частный ip адрес сервера B, например https://203.0.113.25? Затем сервер B будет использовать маршрутизатор API для обработки запроса. Однако ip не является DNS, поэтому он не будет работать из-за сертификатов. Итак, как серверы обмениваются данными, отправляют / получают данные?

Ссылка: http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario3.html


person user6227254    schedule 04.08.2016    source источник
comment
Q2. Не подключайте сервер B к Интернету, используйте прямое соединение Ethernet между сервером B и вторым портом Ethernet на сервере A. Такой тип делает сервер B похожим на HSM без защиты от взлома.   -  person zaph    schedule 05.08.2016
comment
@zaph ха-ха, спасибо tamper-resstance - это то, что мне нужно :) И в случае использования HSM нужно ли настраивать сервер A специально / по-разному? и есть ли у него какие-то особенности помимо защиты от тампера? Как бы вы хранили информацию в HSM, памяти или базе данных?   -  person user6227254    schedule 05.08.2016
comment
ниже комментируют отрицательные голоса ...   -  person aloha_mate    schedule 05.08.2016
comment
Ничего особенного для сервера A, сервер B должен быть полностью безопасным или максимально безопасным, доступ должен тщательно контролироваться, как минимум двухфакторная аутентификация. Но реальный первый шаг - создать модель угроз, то, что находится под угрозой, и ценность для всех сторон, включая злоумышленника. Возможности атакующего, от которого вы защищаетесь по времени, навыкам и ресурсам: от любопытного подростка до хорошо финансирующего национального государства. Вы не можете обеспечить 100% безопасность, поэтому вам нужно определить, что требуется.   -  person zaph    schedule 05.08.2016
comment
@zaph спасибо, но я все еще не уверен насчет Q1. Я не думаю, что создание http-запроса уместно, и веб-сокеты действительно созданы для соединений между клиентом и сервером. Что обычно используют люди?   -  person user6227254    schedule 06.08.2016
comment
@zaph после прочтения docs.aws.amazon.com/AmazonVPC/latest/ UserGuide /, насколько я понял, мне нужно напрямую сделать IP-запрос (не DNS) от A к моему частному серверу B. Например: https:/10.0.0.0/16 это правильно или мне нужно использовать другую технику?   -  person user6227254    schedule 06.08.2016
comment
Опять же, я ничего не могу с этим поделать.   -  person zaph    schedule 07.08.2016
comment
Хорошо @zaph - Дэн, спасибо, проголосовали "за" :)   -  person user6227254    schedule 07.08.2016
comment
Вы рассматривали HSM вместо сервера B?   -  person user207421    schedule 08.08.2016
comment
@EJP да, есть. Но я хотел бы знать, как два сервера отправляют / получают данные друг другу, поскольку сервер B не будет подключен к Интернету. Я знаю, что в AWS вам нужно создать новый экземпляр и подключить его к серверу A. Поскольку HSM похож на сервер B, будет полезно понять концепцию и методы.   -  person user6227254    schedule 08.08.2016


Ответы (1)


Для других: используйте группы безопасности, настройте их так, чтобы доступ к ним мог получить только определенный экземпляр. Сделайте обычный запрос, например: domain.com:PORT. ПОРТ - это экземпляр, который слушает запрос ...

Когда вы указываете группу безопасности в качестве источника или назначения для правила, правило влияет на все экземпляры, связанные с группой безопасности. Входящий трафик разрешен на основе частных IP-адресов экземпляров, связанных с исходной группой безопасности (а не общедоступных IP-адресов или эластичных IP-адресов).

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html

person user6227254    schedule 09.08.2016