VPN сложны, их выбор на рынке огромен и все провайдеры утверждают, что их лучший! Прежде чем мы переходим к более техническим аспектам выбора VPN, легко упустить из виду то, что является одним из наиболее важных: используемые протоколы и методы шифрования.
В то время как OpenVPN скорее является лидером отрасли, WireGuard выглядит мощным соперником.
Что такое WireGuard?
Протокол VPN определяет, как ваши данные направляются с вашего компьютера на сервер. Разные протоколы имеют разные характеристики — т.е. некоторые из них более безопасны, чем другие и лучше подходят для разных задач.
Например, некоторые протоколы отдают приоритет безопасности, а другие — скорости. При выборе VPN важно знать, для чего он вам нужен и выбирать VPN с протоколами, поддерживающими это.
Хотя существует много широко используемых протоколов VPN — SSTP, PPTP и P2TP / IPSec и многие другие — есть один более новый протокол, который выделяется на фоне остальных, WireGuard. Он станет ключевым протоколом и будущим VPN.
WireGuard, как технология VPN
Он был назван в качестве следующего поколения в безопасном VPN-туннелировании. В качестве протокола с открытым исходным кодом WireGuard представляет собой защищенный сетевой туннель на сетевом уровне — третьем уровне в модели компьютерных сетей OSI — для IPv4 и IPv6.
Используя современные криптографические протоколы, WireGuard является ультра-безопасным и очень быстро набирает обороты. Он особенно популярен среди разработчиков. Первоначально выпущенный для Linux, он теперь совместим с несколькими платформами и обеспечивает самое сильное шифрование, которое когда-либо когда-либо наблюдалось.
Что отличает WireGuard?
Созданный Джейсоном Доненфельдом, экспертом по кибербезопасности и основателем Edge Security, WireGuard основан на собственных методах эксфильтрации корневых наборов, которые он использовал, чтобы оставаться в сети в течение длительных периодов времени, оставаясь незамеченным.
1. Он гораздо меньше
Базы кодов для других популярных протоколов, таких как OpenVPN и IPSec, огромны и занимают сотни и тысячи строк кода. Это проблематично, поскольку затрудняет поиск и устранение ошибок и уязвимостей. Сегодня ошибки и уязвимости все еще обнаруживаются в других протоколах VPN, потому что их кодовые базы чрезвычайно обширны.
Напротив, код WireGuard прост и имеет около 4000 строк кода, тогда как OpenVPN имеет порядка 100 000 строк. Да и OpenVPN также требует OpenSSL, который добавляет что-то в районе 500 000 строк.
Меньшее количество строк, также означает меньше сбоев и зависаний. Кроме того, повышенная пропускная способность означает, что он намного лучше подходит для игр, потокового видео и других задач, требующих большого объема данных.
2. WireGuard проще в использовании
В мире, который постоянно становится все более зависимым от мобильных устройств и растущих опасений относительно конфиденциальности и цензуры, поставщики VPN теперь должны обслуживать всех. Виртуальные частные сети больше не только для технически подкованных, они используются практически на всех устройствах и всеми.
В то же время протоколы VPN, используемые в большинстве продуктов VPN, используют сложные протоколы туннелирования, такие как OpenVPN и IPSec. Они не только могут быть сложными и медленными в работе из-за огромного количества кода, их также сложно защитить.
WireGuard, является небольшим, легким, легко внедряемым на всех устройствах и работает в «скрытом режиме», не передавая данные.
3. Имеет шифрование следующего уровня
WireGuard использует процесс, известный как «маршрутизация криптовалюты», для защиты данных пользователей. Он работает путем соединения открытых ключей шифрования с авторизованными IP-адресами VPN-туннелей.
WireGuard также намеренно избегает использования так называемых «отраслевых стандартов» алгоритмов с присущими им недостатками в пользу новейших и самых сложных вариантов. Это включает:
- ChaCha20 аутентифицируется с Poly13045
- Curve25519
- HKDF
- Blake2s
- SipHash24
Комбинация без параметров конфигурации наряду с относительно короткими 256-битными ключами шифрования беспокоит некоторых людей, особенно учитывая, что OpenVPN предлагает 4,906-битный RSA. Тем не менее, когда вы делаете математику, 4096-битный ключ вам нужен?
С 256-битным, вам нужно проработать 2 256 комбинаций, прежде чем взломать его. С учетом того, что большинство проблем ставит раскрытые решения на полпути, это оставляет колоссальные 2 255 возможных сбоев.
Высокие надежды на WireGuard
Текущий диапазон надежных протоколов VPN, таких как OpenVPN, велик. Они быстрые, безопасные и широко доступные. Как долго они могут оставаться подходящими, особенно когда технологии становится все умнее и все больше людей начинают работать в интернете, неизвестно.
Статьи по теме
- Сервер OpenVPN на основе Ubuntu 18.04
- Управление несколькими ключами ssh и настройка ssh-agent
- Безопасность и анонимность. Обзор Asguard OS
Хотя спрос на легкий и простой протокол в настоящее время низок, со временем, это изменится. Именно такие решения, как WireGuard, станут следующим «отраслевым стандартом» для VPN. WireGuard — это VPN следующего поколения.
Настройка WireGuard на Ubuntu 20.04
Установка и настройка на стороне сервера (Ubuntu 20.04 Server)
sudo su
apt install wireguard
cd /etc/wiregaurd/
# Создадим пару закрытого и открытого ключа сервера:
umask 077; wg genkey | tee server_private_key | wg pubkey > server_public_key
# Создадим пару закрытого и открытого ключа клиента:
umask 077; wg genkey | tee client1_private_key | wg pubkey > client1_public_key
# Создадим конфигурационный файлл нашего сервера и добавим в него следующие параметры:
nano wg0.conf
# Секция настройки сервера:
[Interface]
PrivateKey = server_private_key # подставьте сюда приватный ключ сервера (cat server_private_key)
Address = 10.0.0.1/24 # Внутренний ip адрес нашего сервера
ListenPort = 51194 # Порт на котором наш сервер будет принимать подключения
# Добавим правила маскарадинга, чтобы весь трафик проходил через наш сервер
# eth0 необходимо заменить на ваш сетевой интерфейс (ip route | grep default)
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# Секция настройки клиента
# Client1
[Peer]
PublicKey = client1_public_key # Подставьте сюда публичный ключ клиента (cat client1_public_key)
AllowedIPs = 10.0.0.2/32 # внутренний ip адрес клиента (client1)
*Сохраните и закройте файл (ctrl+x, then ‘y’ and ‘enter’)
Теперь настроим сетевую инфраструктуру нашего сервера и firewall
# Открываем необходимые порт
sudo ufw allow 51194/udp # Порт сервера WireGuard
sudo ufw allow 22 # Порт OpenSSH сервера
# Включаем поддержку перенаправления трафика на уровне ядра
sudo nano /etc/sysctl.conf # Раскоментируйте параметр для включения перенаправления IPv4 траффика
net.ipv4.ip_forward=1
sudo sysctl -p # Применяем сделанные изменения
# Запускаем наш Wireguard сервер
sudo systemctl start wg-quick@wg0
# Добавляем его а автозагрузку
sudo systemctl enable wg-quick@wg0
Установка и настройки на стороне клиента (Ubuntu 20.04 Desktop)
sudo su
apt install wireguard
cd /etc/wireguard/
nano wg0.conf
# Секция настройки клиента client1
[Interface]
PrivateKey = client1_private_key # Скопировать значение с нашего сервера (на сервере: sudo cat /etc/wireguard/client1_private_key)
Address = 10.0.0.2/24 # ip адрес клиента client1
DNS = 8.8.8.8
# Секция настройки подключения к серверу
[Peer]
PublicKey = server_public_key # Скопировать значение с нашего сервера (на сервере: sudo cat /etc/wireguard/server_public_key)
AllowedIPs = 0.0.0.0/0 # разрешаем клиенту доступ в сеть
Endpoint = 172.105.112.120:51194 # Публичный IP адрес вашего сервера
PersistentKeepalive = 15
*Сохраните и закройте файл (ctrl+x, then ‘y’ and ‘enter’)
# Теперь можно установить соединение с нашим сервером
sudo wg-quick up wg0
# [sudo] пароль для username:
# Результат выполнения комманды будет примерно следующий:
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.2/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] mount `8.8.8.8′ /etc/resolv.conf
[#] wg set wg0 fwmark 51194
[#] ip -4 route add 0.0.0.0/0 dev wg0-ideapad table 51194
[#] ip -4 rule add not fwmark 51194 table 51194
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] nft -f /dev/fd/63
# Проверим доступность нашего сервера в сети WireGuard:
ping 10.0.0.1 -c 3
# Результат выполнения комманды будет примерно следующий:
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=186 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=209 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=232 ms
— 10.8.10.1 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
Это означает что наш сервер и клиент установили соединение и настроены корректно.
Для отключения от сервера используйте команду:
sudo wg-quick down wg0
Добавлять новых клиентов можно по аналогии с client1
Более подроную информацию ищите на официальном сайте проекта wireguard.com.
Источник: MakeUseOf
Настройка: iExclus1ve