freeipa+openvpn


Сервер на centos7 ставится штатно из epel
yum install ipa-server
Днс не ставлю,мне не нужно.
После установки пакета и зависимотей проверяем,чтобы хостнейм нормально резолвился на сервере.Через hosts,или днс.Например ip.domain.com.В идеале и ptr тоже.
запускаем
ipa-server-install
Отвечаем на вопросы,задаем пароли.Памяти нужно больше 1Гб,иначе крашится при настройке.
дальше проще через веб морду,там все просто.Создаем пользователя,группы пользователей и хостов,hbac правила для ssh и openvpn.
По умолчанию к ldap разрешен анонимный доступ.Закрываем его
ldapmodify -x -D "cn=Directory Manager" -W -h ipa.domain.com -p 389 -ZZ
Enter LDAP Password:
dn: cn=config
changetype: modify
replace: nsslapd-allow-anonymous-access
nsslapd-allow-anonymous-access: rootdse

Это нужно делать на всех серверах,в том случае,если у нас работают реплики,т.к. cn=config не реплицируется!!!

Клиента я собирал в ручную,чтобы избавится от зависимостей,в частности от rpcbind.Поэтому оставшиеся зависимости для запуска ставим на клиента в ручную
yum install sssd sssd-ipa xmlrpc-c-client krb5-workstation python2-ipaclient python2-ipalib ipa-python
Исходники берем тут https://releases.pagure.org/freeipa/freeipa-4.6.3.tar.gz это крайняя версия,которая собирается на центоси без бубна.Дальше перешли на python 3 и при сборке лезут сказочные проблемы.Старшие версии собираются уже на федоре,примерно так
Зависимости для сборки с гит
git clone https://github.com/freeipa/freeipa.git

yum install dh-autoreconf nspr-devel nss-devel krb5-devel openldap-devel openssl-devel python36 popt-devel xmlrpc-c-devel libini_config-devel 389-ds-base-devel libsss_idmap-devel libsss_nss_idmap-devel libuuid-devel libtalloc-devel libtevent-devel samba-devel libunistring-devel python36-setuptools nodejs uglify-js

ln -s /usr/bin/python36 /usr/bin/python3

cp ./ipaplatform/redhat ./ipaplatform/centos
./autogen.sh
cd ./asn1
make
cd ../util
make
cd ../client
make

Так же при установке сервера на федору отключить ipv6 ТОЛЬКО на основном интерфейсе,на петле оставить.
net.ipv6.conf.ens3.disable_ipv6=1

И складываем собранные файлы клиента в /usr/sbin (позже возможно сделаю rpm)
Запускаем
ipa-client-install
Отвечаем на вопросы,вводим логин/пароль для добавления хоста на ipa сервер.
Если все правильно,то наш клиент появится в веб морде на ipa сервере.
—-openvpn——
Ставим штатно,по любой инструкции.Генерируем все сертификаты,клиентский файл,проверяем,что впн как предмет работает.
Теперь нужно,чтобы аутентификация происходила через pam и создадим отдельный сервис,чтобы можно было разграничивать доступа на ipa сервере.
На клиенте создаем «сервис»
cd /etc/pam.d/
ln -s system-auth openvpn

В конфиг впн сервера добавляем
plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn
В конфиг впн клиента
auth-user-pass
Проверяем.Если после ввода логина/пароля получаем ошибку авторизации,то проверяем все ли правильно на ipa сервере.Проверить можно примерно так
ipa hbactest --user=USER --host=vpn.domain.com --service=openvpn