2017-02-06 8 views
1

Я работаю над приложением Windows Server, которое передаст конфиденциальную информацию другому серверу Windows через сокет, используя HTTPClient. Предполагается, что серверы будут настроены на использование IPSec. Так что, я не должен ничего делать, чтобы настроить безопасное соединение на уровне приложения. Тем не менее, мне было поручено убедиться, что если соединение использует IPSec и прервано, если это не так.Как определить, использует ли подключенный сокет IPSec?

Как я могу программно определить, действительно ли соединение действительно защищено IPSec? Приложение - C#, на Windows Server 2016. Я открыт для решений на основе P/Invoke или кода C, если это необходимо для выполнения этой работы. До тех пор, пока он может в конечном итоге работать с классом HttpClient класса C#.

ответ

4

Это не проблема приложения и не может быть выполнена. Туннель прозрачен для пользователей уровня приложения сетевого стека. Если вы хотите, чтобы приложение обеспечило шифрование и аутентификацию соединения, используйте TLS. В противном случае сетевые/системные администраторы должны убедиться, что политики настроены так, что разрешен только трафик ipsec.

Представьте, что вы выяснили способ обеспечения того, чтобы туннель был настроен путем допроса ОС в некотором роде. И затем через 2 года систему необходимо расширить, а завершение IPSec перенесено на выделенное оборудование. К сожалению.

+0

Вы можете проверить, есть ли активный IPSec-туннель, но вы не сможете убедиться, что ваш сокет подключен через него. – galister

+0

ну, я уверен, вы могли бы попытаться добавить много хакеров; Я никогда не устанавливал ipsec на Widows, но в Linux вы можете получить список подключений, я думаю, и попытаться выяснить, является ли ваше соединение одним из них на основе портов #s, но это просто неправильно. –

+0

Порт соединения IPSec, но не порт назначения инкапсулированных пакетов, который, в конечном итоге, окажется конечной точкой .NET. – galister