Algo VPN — настройка персональной VPN-сети IPSEC в облаке

По словам разработчиков на Github Page:

«Algo VPN — это набор скриптов Ansible, которые упрощают настройку персональных IPSEC и Wireguard VPN. Он использует самые безопасные из доступных по умолчанию, работает с обычными облачными провайдерами и не требует клиентского программного обеспечения на большинстве устройств ».

Особенности Algo VPN

Ниже приведен список функций Algo VPN, которые вы получаете из коробки.

  • Поддерживает только IKEv2 с сильным шифрованием (AES-GCM, SHA2 и P-256) и WireGuard
  • Создает профили Apple для автоматической настройки устройств iOS и macOS
  • Включает вспомогательный скрипт для добавления и удаления пользователей
  • Блокирует рекламу локальным DNS-распознавателем (необязательно)
  • Настройка ограниченных пользователей SSH для туннелирования трафика (необязательно)
  • Основано на текущих версиях Ubuntu и strongSwan.
  • Устанавливается на DigitalOcean, Amazon Lightsail, Amazon EC2, Vultr, Microsoft Azure, Google Compute Engine, Scaleway, OpenStack или на внутренний сервер.

Настройка Algo VPN на Ubuntu / Debian

Для систем на основе Ubuntu и Debian установите необходимые зависимости, выполнив приведенные ниже команды.

sudo apt-get update
sudo apt-get install -y git build-essential python-dev python-pip python-setuptools python-virtualenv libffi-dev libssl-dev

После установки зависимостей клонируйте репозиторий Algo VPN.

git clone https://github.com/trailofbits/algo.git

Установите  Python зависимости Algo

Перейдите в каталог algo и установите зависимости Python, такие как ansible, jinja, PyYAML.

cd algo
python -m virtualenv --python=$(which python2) env &&
     source env/bin/activate &&
     python -m pip install -U pip virtualenv &&
     python -m pip install -r requirements.txt

Здесь соберутся ansible, jinja, PyYAML и многие другие.

Список пользователей для создания

Откройте config.cfg в вашем любимом текстовом редакторе.

Укажите пользователей, которых вы хотите создать в списке пользователей.

Я столкнулся с ошибкой, когда я добавил пользователя с именем пользователя в системе.

Пользователь может запустить данный процесс, и скрипт Algo возвращает ошибку.

Так что используйте уникальные имена пользователей.

vim config.cfg

Добавьте пользователей, как показано ниже:

users:
  - test
  - pench
  - admin

Отключите  сервис resolved (чтобы dnsmasq работал)

Выполните следующие команды, чтобы отключить разрешенную службу:

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved

Также удалите символическую ссылку на файл resolv.conf.

sudo unlink /etc/resolv.conf

Затем создайте новый файл resolv.conf.

echo "nameserver 8.8.8.8" > /etc/resolv.conf

Начните развертывание

Находясь в каталоге algo, начните развертывание, запустив скрипт algo, как показано ниже.

Это приводит к ряду вопросов, на которые вы ответите в соответствии с вашей настройкой. Мои настройки были как ниже.

# ./algo

Выберите своего облачного провайдера или существующий сервер.

PLAY [Ask user for the input] 
 TASK [Gathering Facts] *
 ok: [localhost]
 [pause]
 What provider would you like to use?
     1. DigitalOcean
     2. Amazon Lightsail
     3. Amazon EC2
     4. Vultr
     5. Microsoft Azure
     6. Google Compute Engine
     7. Scaleway
     8. OpenStack (DreamCompute optimised)
     9. Install to existing Ubuntu 18.04 server (Advanced)
 Enter the number of your desired provider
 : 9

Установите, чтобы разрешить клиентам MacOS / iOS включить «VPN по требованию» при подключении к сотовым сетям / Wi-Fi.

TASK [pause] ***
 ok: [localhost]
 TASK [Set facts based on the input] **
 ok: [localhost]
 [pause]
 Do you want macOS/iOS clients to enable "VPN On Demand" when connected to cellular networks?
 [y/N]
 :
 y
Do you want macOS/iOS clients to enable "VPN On Demand" when connected to Wi-Fi?
 [y/N]
 :
 y

Установите список доверенных сетей Wi-Fi.

List the names of trusted Wi-Fi networks (if any) that macOS/iOS clients exclude from using the VPN
 (e.g., your home network. Comma-separated value, e.g., HomeNet,OfficeWifi,AlgoWiFi)
 :
Netpap

Установите другие параметры по своему усмотрению.

Do you want to install a DNS resolver on this VPN server, to block ads while surfing?
 [y/N]
 :
 y
 TASK [pause] ***
 ok: [localhost]
 [pause]
 Do you want each user to have their own account for SSH tunneling?
 [y/N]
 :
 y
 TASK [pause] ***
 ok: [localhost]
 [pause]
 Do you want the VPN to support Windows 10 or Linux Desktop clients? (enables compatible ciphers and key exchange, less secure)
 [y/N]
 :
 y
 TASK [pause] ***
 ok: [localhost]
 [pause]
 Do you want to retain the CA key? (required to add users in the future, but less secure)
 [y/N]
 :
 y

Развертывание ANSIBLE должно начаться.

TASK [pause] **
 ok: [localhost]
 TASK [Set facts based on the input] *
 ok: [localhost]
 PLAY [Provision the server] *
 TASK [Gathering Facts] 
 ok: [localhost]
 --> Please include the following block of text when reporting issues:
Algo running on: Ubuntu 18.04.1 LTS (Virtualized: kvm)
 Created from git clone. Last commit: 40b42c4 Get started with Azure more easily (#1323)
 Python 2.7.15rc1
 Runtime variables:
     algo_provider "local"
     algo_ondemand_cellular "True"
     algo_ondemand_wifi "True"
     algo_ondemand_wifi_exclude "X251bGw="
     algo_local_dns "True"
     algo_ssh_tunneling "True"
     algo_windows "True"
     wireguard_enabled "True"
     dns_encryption "True"
 TASK [Display the invocation environment] *
 changed: [localhost -> localhost]
 TASK [Install the requirements] ***
 changed: [localhost -> localhost]
 TASK [Generate the SSH private key] *
 changed: [localhost]
 TASK [Generate the SSH public key] 
 changed: [localhost]
 [local : pause]
 Enter the IP address of your server: (or use localhost for local installation):
 [localhost]
 :
 localhost
 TASK [local : pause] 
 ok: [localhost]
 TASK [local : Set the facts] 
 ok: [localhost]
 TASK [local : Set the facts] 
 ok: [localhost]
 [local : pause]
 Enter the public IP address of your server: (IMPORTANT! This IP is used to verify the certificate)
 [localhost]
 :
 192.168.1.10 (Your Public IP Here)

Когда это будет успешно сделано, вы должны увидеть баннер, как показано ниже

TASK [debug] ******************************************************************************************************************************************
ok: [localhost] => {
    "msg": [
        [
            "\"#                          Congratulations!                            #\"", 
            "\"#                     Your Algo server is running.                     #\"", 
            "\"#    Config files and certificates are in the ./configs/ directory.    #\"", 
            "\"#              Go to https://whoer.net/ after connecting               #\"", 
            "\"#        and ensure that all your traffic passes through the VPN.      #\"", 
            "\"#                     Local DNS resolver 172.16.0.1                    #\"", 
            ""
        ], 
        "    \"#        The p12 and SSH keys password for new users is n8L8q6bn       #\"\n", 
        "    \"#        The CA key password is bc6f3cc1080d166ca27b1cf5d5a14aa6       #\"\n", 
        "    "
    ]
}

PLAY RECAP ********************************************************************************************************************************************
localhost                  : ok=151  changed=85   unreachable=0    failed=0   

После развертывания Algo VPN добавит пользователей в систему и создаст файлы конфигурации для использования с клиентами VPN, а также ключи ssh.

Добавление пользователей

После установки вы можете добавить других пользователей в список в вашем config.cfg

users:
 test
 pech
 admin 
 user2

После обновления списка активируйте виртуальную среду и запустите скрипт обновления пользователей.

source env/bin/activate
./algo update-users

После завершения этого процесса сервер Algo VPN будет содержать только пользователей, перечисленных в файле config.cfg.

# id test
uid=1002(test) gid=1003(test) groups=1003(test),1000(algo)

Файлы конфигурации для каждого профиля VPN находятся в каталоге ./algo/configs/ServerIP.

# ls | grep test
ipsec_test.conf
ipsec_test.secrets
test.mobileconfig
test.p12
test.ssh_config
test.ssh.pem
windows_test.ps1

Заключение

Мы надеемся, что установка прошла успешно.

В следующей статье мы собираемся настроить устройства Linux, Windows и Android для подключения к установленному нами Algo VPN Server.

 

cryptoparty

Cryptography is typically bypassed, not penetrated.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40