Чому я вирішив використовувати VPN
Приватні сервіси доступні лише з віртуальних машин (VM) у публічній підмережі. Однак мої колеги (розробники) інколи повинні підключатися до приватних сервісів для розробки. З міркувань безпеки я вирішив не надавати прямий доступ до віртуальних машин у публічній підмережі для підключення до приватних сервісів.
Щоб вирішити це, я налаштував VPN-сервер Pritunl на виділеній віртуальній машині в публічній підмережі. Це дозволяє моїм колегам безпечно підключатися до приватних сервісів та додатків, розміщених у приватній підмережі.
Процес налаштування VPN
Ось покрокова інструкція з налаштування VPN-сервера Pritunl:
1. Встановлення MongoDB для Pritunl
- VPN-сервер працюватиме на операційній системі Debian, а Pritunl потребує MongoDB.
- Я встановив MongoDB через Docker. Для детальної інструкції дивіться цей посібник.
Після запуску MongoDB у Docker я створив користувача для Pritunl за допомогою таких команд:
docker exec -it /bin/bash
mongosh --port --username
# Введіть пароль, коли буде запропоновано
use admin;
db.createUser({ user: "pritunl", pwd: "PASSWORD", roles: [{role: "dbOwner", db: "pritunl"}] });
MongoDB URI для Pritunl
mongodb://pritunl:PASSWORD@localhost:27017/pritunl?authSource=admin
Примітка: замініть "PASSWORD" на ваш вибраний пароль.
2. Встановлення Pritunl та його залежностей
Запустіть наступні команди для встановлення Pritunl та його залежностей. Для інших репозиторіїв:
sudo tee /etc/apt/sources.list.d/pritunl.list << EOF
deb [signed-by=/usr/share/keyrings/pritunl.gpg] https://repo.pritunl.com/stable/apt bookworm main
EOF
sudo apt --assume-yes install gnupg
curl -fsSL https://raw.githubusercontent.com/pritunl/pgp/master/pritunl_repo_pub.asc | sudo gpg -o /usr/share/keyrings/pritunl.gpg --dearmor --yes
sudo apt update
sudo apt --assume-yes install pritunl openvpn wireguard wireguard-tools
sudo systemctl start pritunl
sudo systemctl enable pritunl
3. Налаштування домену
Щоб налаштувати домен для VPN, додайте запис типу A у вашому реєстраторові доменів (наприклад, GoDaddy):
- Тип: A
- Ім'я: Використовуйте префікс (наприклад,
gateway
абоconnect
) для створення піддомену. - Значення: IP-адреса сервера Pritunl.
- TTL: Значення за замовчуванням.
Відкрийте браузер і введіть піддомен (наприклад, connect.karthik.com
або gateway.karthik.com
).
4. Початкове налаштування Pritunl
У браузері Pritunl запитає ключ налаштування та MongoDB URI.
Отримайте ключ налаштування за допомогою наступної команди:
sudo pritunl setup-key
Вставте ключ і MongoDB URI, створений раніше.
mongodb://pritunl:PASSWORD@localhost:27017/pritunl?authSource=admin
Отримайте стандартне ім’я користувача та пароль за допомогою:
sudo pritunl default-password
Увійдіть, використовуючи надані облікові дані.
5.
Налаштування SSL з Let’s Encrypt
Під час початкового налаштування
- Введіть піддомен (наприклад,
connect.karthik.com
). - Закрийте вкладку браузера з Pritunl і дайте серверу перезавантажитись.
Знову відкрийте браузер і перевірте, що піддомен захищений за допомогою SSL.
Підключення до серверу Pritunl VPN
Створення організації та користувача
- Додайте організацію зі сторінки "Organization" в веб-консолі.
- Додайте користувачів, за потреби вказавши електронну адресу та PIN-код користувача.
Створення сервера
- Додайте сервер і налаштуйте параметри, такі як UDP порт (наприклад, 11005).
- Увімкніть Google Authenticator, якщо це необхідно.
- Прив’яжіть організацію до сервера та запустіть його.
Завантаження профілів користувачів
- Завантажте профіль користувача зі сторінки "Users".
- Імпортуйте його в клієнт Pritunl або інший клієнт OpenVPN.
Додаткові примітки
Рекомендовані налаштування сервера Pritunl (для малих команд)
- CPU: 1–2 vCPU
- RAM: 2–4 GB
- Диск: 20–40 GB SSD
Правила брандмауера
- Відкрийте наступні порти у групі безпеки віртуальної машини:
- TCP: 80, 443
- UDP: 11005
Перевірка налаштувань DNS
- Переконайтесь, що запис типу A в реєстраторі доменів вказує на правильну IP-адресу сервера Pritunl.
Джерела
https://docs.pritunl.com/docs/installation
Перекладено з: Securing Private Resources with a Pritunl VPN Setup