На сервере SRV3-DT сконфигурировать VPN сервер

Задание:

20) На сервере SRV3-DT сконфигурируйте VPN сервер

  • a) В качестве сервера VPN используете wireguard.
  • b) В качестве VPN сети используйте адресное пространство 10.6.6.0/24
  • c) Клиенты должны иметь полный доступ к офису DT
    • 1. В качестве клиента выступает CLI
  • e) Запуск соединения осуществляется скриптом wg_connect, остановка wg_disconnect.
    • 1. Скрипты должны вызываться из любого каталога без указания полного пути
    • 2. Скрипты должны запускаться от пользователя User с использованием sudo

Вариант реализации:

SRV3-DT:

  • Включаем перессылку пакетов (forwarding):
sed -i "s/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g" /etc/net/sysctl.conf
  • Перезагружаем службу network:
systemctl restart network
  • Устанавливаем необходимые пакеты:
apt-get update && apt-get install -y wireguard-tools wireguard-tools-wg-quick
  • Создаём директорию для конфигурационных файлов и ключей:
mkdir -p /etc/wireguard/keys
  • 3. Переходим в директорию «/etc/wireguard/keys» для генерации пары ключей открытого и закрытого типа для сервера и клиента:
cd /etc/wireguard/keys
wg genkey | tee srv-sec.key | wg pubkey > srv-pub.key
wg genkey | tee cli-sec.key | wg pubkey > cli-pub.key
  • Считываем информацию о закрытом — серверном и открытом — клиентским ключам в конфигурационный файл для туннельно интерфейса «/etc/wireguard/wg0.conf«:
cat srv-sec.key cli-pub.key >> /etc/wireguard/wg0.conf
  • Редактируем конфигурационный файл туннельного интерфейса «wg0.conf«:
vim /etc/wireguard/wg0.conf
    • приводим файл к следующему виду, где:
      • [Interface] — блок настроек для Сервера:
        • Address — адрес в сети VPN. Данная подсеть не должна пересекаться с используемыми диапазонами.
        • ListenPort — порт, на котором будет работать наш сервер.
        • PrivateKey — закрытый ключ сервера (содержимое файла «/etc/wireguard/keys/srv-sec.key).
      • [Peer] — настройки клиента для соединения с сервером:
        • PublicKey — открытый ключ клиента ( содержимое файла «/etc/wireguard/keys/cli-pub.key»).
        • AllowedIPs — разрешенный маршрут.

  • Включаем и добавляем в автозагрузку туннельный интерфейс «wg0«:
systemctl enable --now wg-quick@wg0
  • Проверяем:
wg show wg0
ip -c a | grep wg0
    • результат:

 

CLI:

  • Включаем службу sshd:
systemctl enable --now sshd

 

SRV3-DT:

  • Передаём на клиента закрытый и открытый ключ:
scp /etc/wireguard/keys/cli-sec.key user@172.16.3.3:~/
scp /etc/wireguard/keys/srv-pub.key user@172.16.3.3:~/

 

CLI:

  • Из под обычного пользователя считываем информацию о ключах в файл:
cat cli-sec.key srv-pub.key >> wg0.conf
  • Редактируем конфигурационный файл туннельного интерфейса «wg0.conf«:
vim wg0.conf
    • приводим файл к следующему виду:

  • Из под суперпользователя root выполняем импорт соединения типа wireguard из конфигурационного файла:
nmcli connection import type wireguard file /home/user/wg0.conf
    • результат:

 

R-DT:

  • Реализуем проброс портов, т.к. нет SRV3-DT — неимеет «публичного» IP-адреса:
configure terminal
  ip nat source static udp 192.168.33.68 12345 172.16.4.14 12345
  ip nat destination static udp 172.16.4.14 12345 192.168.33.68 12345 hairpin
  write

 

R-FW:

  • Добавляем разрешающее правило в файрвол для установления туннельного соединения:
firewall forward add src 172.16.3.0/28 dst 192.168.33.64/28 pass
firewall forward add src 192.168.33.64/28 dst 172.16.3.0/28 pass
  • Добавляем маршрут:
inet route add 10.6.6.0 next-hop 192.168.33.68 netmask 255.255.255.0
  • Добавляем разрешающее правило в файрвол для доступа в сети DT:
firewall forward add src 10.6.6.0/24 dst 192.168.33.0/26 pass
firewall forward add src 10.6.6.0/24 dst 192.168.33.80/29 pass

 

CLI:

  • Проверяем доступ в сети офиса DT:
    1. связность с SRV1-DT
    2. связность с CLI-DT
    3. связность с ADMIN-DT

  • Реализуем возможность запуска соединения скриптом wg_connect и остановку wg_disconnect:
    • добавляем пользователя в группу wheel для возможности запуска sudo:
usermod -aG wheel user
    • добавляем информацию о пользователе в файл /etc/sudoers:
      • также при не обходимости даём возможность запуска sudo без пароля
echo "user ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
    • из под суперпользователя root создаём файл скрипта wg_connect:
vim /usr/sbin/wg_connect
      • добавляем следующее содержимое:

    • задаём права на испольнение:
chmod +x /usr/sbin/wg_connect
    • из под суперпользователя root создаём файл скрипта wg_disconnect:
vim /usr/sbin/wg_disconnect
      • добавляем следующее содержимое:

    • задаём права на испольнение:
chmod +x /usr/sbin/wg_disconnect
  • Проверяем возможность запуска:
    • из любого каталога без указания полного пути
    • запускаться от пользователя User с использованием sudo

  • Проверяем возможность запуска скрипта без использования sudo: