Поднимаем SSL VPN OpenConnect с Let's Encrypt в Ubuntu 20.04
Ubuntu 6-05-2021, 20:06 sobir 7 479 0
OpenConnect VPN server (ocserv) — это бесплатная реализация протокола Cisco AnyConnnect VPN с открытым исходным кодом. AnyConnect — это протокол VPN на основе SSL, который позволяет пользователям подключаться к удаленной сети.
Могут оказаться полезными следующие статьи:
- Получаем валидные сертификаты SSL от Let's Encrypt для NGINX
- Настройка файрвола iptables в CentOS 8 / RHEL 8
Устанавливаем необходимые пакеты:
apt update
apt install ocserv certbot -y
Проверяем статус службы ocserv:
systemctl status ocserv
Получаем сертификат от Let's Encrypt:
certbot certonly --standalone --preferred-challenges http --agree-tos --email [email protected] -d vpn.newsite.com
Проверяем наличие сертификата в директории:
ls -l /etc/letsencrypt/live/
Редактируем основной конфиг ocserv:
vi /etc/ocserv/ocserv.conf
auth = "plain[passwd=/etc/ocserv/ocpasswd]"
tcp-port = 443
udp-port = 443
run-as-user = nobody
run-as-group = daemon
socket-file = /run/ocserv.socket
server-cert = /etc/letsencrypt/live/vpn.newsite.com/fullchain.pem
server-key = /etc/letsencrypt/live/vpn.newsite.com/privkey.pem
isolate-workers = true
max-clients = 30
max-same-clients = 2
server-stats-reset-time = 604800
keepalive = 300
dpd = 60
mobile-dpd = 300
switch-to-tcp-timeout = 25
try-mtu-discovery = true
cert-user-oid = 0.9.2342.19200300.100.1.1
compression = true
no-compress-limit = 256
tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128"
auth-timeout = 240
idle-timeout = 1200
mobile-idle-timeout = 1800
min-reauth-time = 300
max-ban-score = 80
ban-reset-time = 300
cookie-timeout = 300
deny-roaming = false
rekey-time = 172800
rekey-method = ssl
use-occtl = true
pid-file = /run/ocserv.pid
device = vpns
predictable-ips = true
default-domain = newsite.com
ipv4-network = 192.168.100.0
ipv4-netmask = 255.255.255.224
tunnel-all-dns = true
dns = 8.8.8.8
dns = 1.1.1.1
ping-leases = false
route = default
cisco-client-compat = true
dtls-legacy = true
Создадим учетную запись для пользователя user1:
ocpasswd -c /etc/ocserv/ocpasswd user1
Включаем пересылку пакетов между интерфейсами:
sysctl net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
Настроим трансляцию адресов на основе источника SNAT:
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.100.0/27 -j SNAT --to 1.2.3.4
Проверяем изменения на наличие ошибок:
ocserv -t
Перезапускаем службу ocserv:
systemctl restart ocserv
Поднимаем VPN сервер OpenConnect (ocserv) в контейнере Docker с аутентификацией пользователей из Microsoft...
ПодробнееПолучаем валидные сертификаты SSL от Let's Encrypt для NGINX с использованием плагина webroot....
ПодробнееНастраиваем обратный прокси сервер NGINX с SSL-терминацией и генерируем бесплатные валидные сертификаты SSL...
ПодробнееСоздаем свой репозиторий образов контейнеров Docker....
ПодробнееСоздание простого сетевого хранилища данных NFS....
ПодробнееНовые комментарии
Спасибо за статью. Остальные статьи что находил либо старые, либо неполные. Всё
К комментариюСалом, можно ещё создать файл в /etc/nginx/proxy_params, a потом добавить туда
К комментариюМожно ещё так: 1. Создаем отдельную сеть для наших контейнеров docker network
К комментариюСпасибо за отзыв, написал отдельную статью по установке и настройке Ansible
К комментариюДумаю в статье необходимо также описать процесс установки Ansible.
К комментариюПринудительное обновление сертификата: certbot certonly --force-renew -d
К комментариюКакой дистрибутив Linux вы часто используете?
Календарь
« Октябрь 2024 » | ||||||
---|---|---|---|---|---|---|
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |