Защитник на Kali

В последнее время мы много слышали о Wireguard, и недавно он был добавлен в репозитории Kali, мы подумали, что мы быстро попытаемся понять, о чем идет речь. В целом, мы обнаружили, что это действительно хорошая и быстрая настройка VPN, и, возможно, стоит проверить.
Начало
Установка Wireguard, проста и удобна:
apt install wireguard resolvconf
Далее приходит время для настройки. Именно здесь Wireguard действительно сиял для нас, так как ничего не случилось, чтобы беспокоиться.
На сервере нам нужно создать пару открытого и закрытого ключей и настроить начальный файл конфигурации.
wg genkey | tee privatekey | wg pubkey > publickey
umask u=rwx,go= && cat > /etc/wireguard/wg0.conf << EOF
[Interface]
Address = 10.222.222.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = -SERVER PRIVATE KEY-
[Peer]
PublicKey = -CLIENT PUBLIC KEY-
AllowedIPs = 10.222.222.2/32
EOF
И мы делаем тот же процесс на клиенте, чтобы установить его пару ключей и конфигурации.
wg genkey | tee privatekey | wg pubkey > publickey
umask u=rwx,go= && cat /etc/wireguard/wg0.conf << EOF
[Interface]
Address = 10.222.222.2/32
PrivateKey = -CLIENT PRIVATE KEY-
DNS = 8.8.8.8
[Peer]
PublicKey = -SERVER PUBLIC KEY-
Endpoint = public.ip.of.server:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 21
EO
Это довольно простые конфигурации, но стоит отметить несколько вещей. Во-первых, вы, очевидно, должны поместить выходные данные из пар ключей в соответствующие конфигурации. Кроме того, строка DNS на клиенте должна помочь предотвратить утечку DNS из вашего локального DNS-сервера по умолчанию. Вы можете не изменять это в зависимости от ваших потребностей.
Наиболее важным является, линия «AllowedIPs». Это будет контролировать то, что IP-адреса делают или не проходят через VPN. В этом случае мы настраиваем клиента для маршрутизации всего через VPN-сервер. Мы немного поиграем с этим, но давайте посмотрим, как работает эта базовая конфигурация.
Начать и остановить туннель, это довольно легко.
# The VPN can be enabled using
wg-quick up wg0
# To disable the VPN:
wg-quick down wg0
# Information about the connection can be retrieved with following command:
wg show
И, конечно же, нам нужно включить IP-маскарад и переадресацию IP-адресов на сервере.
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
Таким образом, у нас есть традиционная конфигурация VPN. Если вы хотите просто получить стандартную настройку VPN, на этом вы закончите. Есть несколько преимуществ для этого по сравнению с использованием OpenVPN, например, это решение кажется намного более быстрым, конфигурация намного проще, и прикосновение более скрытно, поскольку сервер не будет отвечать на пакеты, у которых нет соответствующей пары ключей, связанная с ними. Мы подумали, однако, что может быть интересно изменить конфигурацию, чтобы отразить нашу конфигурацию ISO Doom, имея клиента, который будет автоматически подключаться к серверу при загрузке, позволяя серверу маршрутизировать и получать доступ к сети клиентов.
Защитник DOOM!
Настроим на нашем клиенте IP-переадресацию и маскировку:
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
Отлично, мы делаем несколько незначительных изменений в наших конфигурациях. Во-первых, на сервере мы меняем строку «AllowedIPs», чтобы иметь частную сеть на сайте отчета. Это будет выглядеть так:
[Interface]
Address = 10.222.222.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = -SERVER PRIVATE KEY-
[Peer]
PublicKey = -CLIENT PUBLIC KEY-
AllowedIPs = 10.200.200.2/32, 192.168.2.0/24
После того, как одна строка изменилась на сервере, мы настроим линию «AllowedIPs» клиентов, чтобы удалить опцию маршрутизации всего на VPN-сервер.
[Interface]
Address = 10.200.200.2/32
PrivateKey = -CLIENT PRIVATE KEY-
DNS = 8.8.8.8
[Peer]
PublicKey = -SERVER PUBLIC KEY-
Endpoint = public.ip.of.server:51820
AllowedIPs = 10.200.200.0/24
PersistentKeepalive = 21
Вот и все!
root@kali:~# ping 192.168.2.22
PING 192.168.2.22 (192.168.2.22) 56(84) bytes of data.
64 bytes from 192.168.2.22: icmp_seq=19 ttl=63 time=50.2 ms
64 bytes from 192.168.2.22: icmp_seq=20 ttl=63 time=53.4 ms
64 bytes from 192.168.2.22: icmp_seq=21 ttl=63 time=48.1 ms
Теперь VPN-сервер может получить доступ к подсетям с другой стороны VPN-шлюза Wireguard.
Завершение
Время покажет, заменит ли Wireguard OpenVPN как VPN по выбору. В любом случае, приятно иметь возможность проверить его и использовать, если он подходит. Как мы видели здесь, он определенно прост в настройке и относительно универсален в случаях пользователя.