Настройка WireGuard на Ubuntu 20.04

UbuntuVPNWireGuardМануалыОбзорыПрограммное обеспечение

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, велик. Они быстрые, безопасные и широко доступные. Как долго они могут оставаться подходящими, особенно когда технологии становится все умнее и все больше людей начинают работать в интернете, неизвестно.

Статьи по теме


Хотя спрос на легкий и простой протокол в настоящее время низок, со временем, это изменится. Именно такие решения, как 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