У меня вопрос относительно IP-спуфинга и аутентификации. У меня есть сервер OpenVPN в режиме TUN со многими ненадежными клиентами в одной сети VPN, и мне было интересно, может ли один клиент подменить свой IP-адрес VPN, чтобы он мог отображаться на сервере как другой клиент. Есть ли способ предотвратить это?
Я подумал, может быть, если: 1) я назначаю клиентам статические IP-адреса, затем 2) сохраняю сертификат сопоставления IP-адреса-TLS для каждого клиента, затем 3) я могу проверить для каждого входящего пакета на сервер, исходный IP-адрес и отпечаток (или общее имя) TLS-соединения, отправившего этот пакет, и посмотрите, совпадают ли они.
Возможно ли это, и если да, то как?
Я читал это с помощью tls-verify, я могу проверить, что клиент с сертификатом A принадлежит 10.8.0.4, например, когда клиент подключается к серверу OpenVPN, но я уверен, что все пакеты с исходным IP-адресом 10.8.0.4 принадлежат клиенту с сертификатом А? В основном я хочу идентифицировать клиентов по их IP-адресу. Есть ли какой-нибудь сценарий для проверки этого?
Большое спасибо за внимание. Надеюсь, я был достаточно ясен.
Для указания IP для каждого клиента: у вас есть специальная процедура «client config dir» для привязки ключа к определенному IP-номеру. Если вы создаете подкаталог «ccd» каталога конфигурации openvpn, вы можете указать, что там будут найдены файлы сопоставления ключей / IP. В вашем openvpn.conf (или .ovpn в Windows):
client-config-dir ccd
ccd-exclusive
Если у вас есть клиент с ключом с именем someclient, вы можете создать файл ccd / someclient с содержимым:
ifconfig-push 192.168.11.57 192.168.11.58
... что заставит клиента использовать туннель между 192.168.11.57 и 192.168.11.58 (.57 - это IP-адрес клиента). Создайте новый файл для каждого клиента с действительными сопоставлениями начальной и конечной точек (см. Документацию по openvpn для допустимых пар IP-адресов).
При такой настройке ни один клиент не будет принят, если у него нет файла CCD, даже если у него есть действующий ключ. И каждому клиенту будет назначен явный IP-адрес. Чтобы заблокировать клиента, просто удалите соответствующий файл CCD.
Я не проверял, может ли клиент каким-то образом подделать IP-адрес отправителя, хотя я думаю, что это было бы сложно из-за туннельной природы соединения (конечная точка на стороне сервера не будет соответствовать). Однако это всего лишь предположение.