Настройка VPN-сервера ocserv с 2FA на AlmaLinux 8

RHEL / Security 23-11-2024, 15:18 sobir 1 414 0


В этом туториале мы рассмотрим настройку двухфакторной аутентификации (2FA) с использованием приложения Google Authenticator для пользователей VPN-сервера ocserv. Предполагается, что у вас уже подготовлен сервер на базе ОС AlmaLinux 8 и настроен сервер Active Directory (AD) для аутентификации пользователей через LDAP.

1. Обновим GPG-ключ для репозиториев:
rpm --import https://repo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux

2. Выполним апдейт репозиториев:
dnf check-update

3. Установим репозиторий пакетов EPEL (Extra Packages for Enterprise Linux):
dnf install epel-release -y

4. Установим необходимые пакеты для интеграции с AD:
dnf install realmd sssd oddjob oddjob-mkhomedir adcli samba-common-tools krb5-workstation -y

5. Выполним поиск домена AD и добавим сервер в домен:
realm discover example.local
realm join example.local

6. Изменим конфигурацию файла /etc/sssd/sssd.conf на следующую:
[sssd]
domains = example.local
config_file_version = 2
services = nss, pam

[domain/example.local]
ad_site = Default-First-Site-Name
ad_domain = example.local
ad_gpo_map_remote_interactive = +ocserv
ad_gpo_access_control = disabled
krb5_realm = EXAMPLE.LOCAL
realmd_tags = manages-system joined-with-adcli 
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = False
fallback_homedir = /home/%u@%d
access_provider = ad

7. Перезапускаем службу sssd для применения изменений:
systemctl stop sssd
rm -rf /var/lib/sss/{db,mc}/*
systemctl start sssd
systemctl status sssd

8. Установим необходмые пакеты для работы VPN-сервера:
dnf install ocserv certbot google-authenticator qrencode-libs -y

9. Создадим резервную копию текущей конфигурации ocserv:
mv /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.bak

10. Изменим конфигурацию файла /etc/ocserv/ocserv.conf на следующую:
auth = "pam"
tcp-port = 443
udp-port = 443
run-as-user = ocserv
run-as-group = ocserv
socket-file = ocserv.sock
chroot-dir = /var/lib/ocserv
#server-cert = /etc/pki/ocserv/public/server.crt
#server-key = /etc/pki/ocserv/private/server.key
server-cert = /etc/letsencrypt/live/vpn.example.com/fullchain.pem
server-key = /etc/letsencrypt/live/vpn.example.com/privkey.pem
isolate-workers = true
#max-clients = 16
max-clients = 0
max-same-clients = 2
rate-limit-ms = 100
server-stats-reset-time = 604800
#keepalive = 32400
keepalive = 600
dpd = 90
mobile-dpd = 1800
switch-to-tcp-timeout = 25
try-mtu-discovery = false
cert-user-oid = 0.9.2342.19200300.100.1.1
tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-VERS-SSL3.0:-VERS-TLS1.0:-VERS-TLS1.1:-VERS-TLS1.3"
auth-timeout = 240
min-reauth-time = 300
max-ban-score = 80
ban-reset-time = 1200
cookie-timeout = 300
deny-roaming = false
rekey-time = 172800
rekey-method = ssl
use-occtl = true
pid-file = /var/run/ocserv.pid
log-level = 3
device = vpns
predictable-ips = true
default-domain = example.local
ipv4-network = 192.168.100.0
ipv4-netmask = 255.255.255.0
dns = 8.8.8.8
dns = 1.1.1.1
ping-leases = false
route = 10.0.0.0/8
route = 172.16.0.0/12
route = 192.168.0.0/16
cisco-client-compat = true
dtls-legacy = true
cisco-svc-client-compat = false
client-bypass-protocol = false
camouflage = false
camouflage_secret = "mysecretkey"
camouflage_realm = "Restricted Content"
included-http-headers = Strict-Transport-Security: max-age=31536000 ; includeSubDomains
included-http-headers = X-Frame-Options: deny
included-http-headers = X-Content-Type-Options: nosniff
included-http-headers = Content-Security-Policy: default-src 'none'
included-http-headers = X-Permitted-Cross-Domain-Policies: none
included-http-headers = Referrer-Policy: no-referrer
included-http-headers = Clear-Site-Data: "cache","cookies","storage"
included-http-headers = Cross-Origin-Embedder-Policy: require-corp
included-http-headers = Cross-Origin-Opener-Policy: same-origin
included-http-headers = Cross-Origin-Resource-Policy: same-origin
included-http-headers = X-XSS-Protection: 0
included-http-headers = Pragma: no-cache
included-http-headers = Cache-control: no-store, no-cache

11. Получаем валидный SSL сертификат от Let's Encrypt:
certbot certonly --standalone -d vpn.example.com

12. Проверим наличие ошибок в конфиге и запустим сервис:
ocserv -t
systemctl enable --now ocserv

13. Подключим модуль pam_google_authenticator для PAM:
vi /etc/pam.d/ocserv
#%PAM-1.0
auth 	   required 	pam_google_authenticator.so
auth       include	password-auth
account    required	pam_nologin.so
account    include	password-auth
session    include	password-auth

14. Включаем форвардинг пакетов между интерфейсами:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf 
sysctl -p

15. Теперь необходимо войти в консоль сервера с использованием доменной учетной записи и получить QR-код для приложения:
su - [email protected]
google-authenticator
Похожие новости
Поднимаем ocserv с аутентификацией LDAP

Поднимаем VPN сервер OpenConnect (ocserv) в контейнере Docker с аутентификацией пользователей из Microsoft...

Подробнее
How to install Docker and Compose on AlmaLinux

Quick setup docker and docker-compose with a simple bash script....

Подробнее
Интеграция Jira с AD на основе групп пользователей

Настроим аутентификацию пользователей Jira с Active Directory....

Подробнее
How to install Apache Cassandra 3.11 on AlmaLinux 8

Quick setup Apache Cassandra with a simple bash script....

Подробнее
Настройка RADIUS в SoftEther VPN Server

Авторизация VPN-пользователей с помощью Network Policy Server (NPS) на сервере SoftEther....

Подробнее
Поднимаем мультипротокольный VPN SoftEther на Ubuntu 22.04

Поднимаем мультипротокольное VPN решение для удаленного доступа — SoftEther VPN Server, а также настроим...

Подробнее
Комментарии (0)
Новые комментарии
sobir8 ноября 2024 12:42

Цитата: FidoNet Цитата: sobir Цитата: FidoNet Спасибо за статью. Остальные

img
К комментарию
FidoNet7 ноября 2024 03:26

Цитата: sobir Цитата: FidoNet Спасибо за статью. Остальные статьи что находил

img
К комментарию
sobir27 октября 2024 19:02

Цитата: FidoNet Цитата: sobir Цитата: FidoNet Можт быть дело в

img
К комментарию
FidoNet25 октября 2024 22:04

Цитата: sobir Цитата: FidoNet Можт быть дело в dnsmasq.service? Ошибка Failed

img
К комментарию
sobir25 октября 2024 16:48

Цитата: FidoNet Цитата: sobir Цитата: FidoNet Спасибо за статью. Остальные

img
К комментарию
FidoNet20 октября 2024 12:12

Можт быть дело в dnsmasq.service? Ошибка Failed to set DNS configuration: Unit

img
К комментарию
Все комментарии
Какой дистрибутив Linux вы часто используете?
Календарь
«    Декабрь 2024    »
ПнВтСрЧтПтСбВс
 1
2345678
9101112131415
16171819202122
23242526272829
3031 
Подпишись на канал