Для настройки соединения воспользуемся VPN‑протоколом WireGuard. В качестве транспортного протокола WireGuard использует UDP. Особенностью протокола является схема асимметричного шифрования. Классическая схема с закрытым и открытым ключом, которые генерируются и передаются администратором сети, позволяет безопасно передавать сообщения. Сами ключи можно дополнительно защищать паролями.
12.3.1. Подготовка ключей шифрования
В качестве приватного ключа WireGuard может выступать любая последовательность из 32 байт. Вернее, 31 байта — 32‑ой байт используется в качестве контрольной суммы над остальными. Публичный ключ генерируется на основе приватного для создания асимметрично шифрующей пары.
Генерация ключей (особенно приватного ключа) должна быть абсолютно конфиденциальной для всех сторонних наблюдателей и строго невоспроизводимой. Для генерации ключей на основе случайных чисел используются специальные команды wg genkey для приватного ключа и wg pubkey для открытого ключа.
Никогда не генерируйте ключи с помощью псевдослучайных последовательностей или на основе каких‑то заведомо известных данных.
Строго в рамках лабораторной работы для образовательных целей можно воспользоваться заранее сгенерированными парами ключей:
Для @client:
Для @company:
Однако правильнее (и рекомендуется) сгенерировать на каждой машине свою пару ключей и далее пользоваться ими. При этом потребуется копирование из консоли одной ВМ в другую, что может быть невозможно при использовании VirtualBox‑консолей управления. При невозможности копирования можно вводить ключи вручную или с помощью последовательных портов передать ключи между виртуальными машинами.
Настройка последовательных портов осуществляется на выключенных виртуальных машинах. При этом все настройки сети, описанные не с помощью systemd‑networkd, при перезапуске необходимо будет выполнить повторно.
Для генерации ключей можно воспользоваться удобной командой‑конвейером, которая выводит приватный и публичный ключи в консоль:
wg genkey | tee /dev/stderr | wg pubkey
Не пользуйтесь данной командой в данном виде при реальной настройке. Перенаправляйте выводы команд в файлы с ограниченными правами доступа к ним для безопасности хранения данных.
С помощью команды генерации ключей (или путём копирования заранее заданных пар) получите пары открытых и закрытых ключей на
@client и
@company.
[root@client ~]# wg genkey | tee /dev/stderr | wg pubkey
YHbaodB1g6Uh4rXa/Y17gf4t3pjVt68dABYDq79+tVE=
HjxgpnWK367aURR7x6sy9b8wM3UhDJCbs/5XWGWe6CU=
[root@client ~]#
[root@company ~]# wg genkey | tee /dev/stderr | wg pubkey
OFcPIl8PXbjoPozp9qBH2ZQPOUsr7Qj1ZlyZXeMnMlI=
V87kz+xm9c1liF0WQpBW33Dep2W8B++xby80SrBJ2Cc=
[root@company ~]#