====ReOpenLdap====
Скачиваем последнюю версию [[https://github.com/leo-yuriev/ReOpenLDAP/|здесь]]
Для установки необходимо собрать пакет, но перед этим устанавливаем дополнительные пакеты:
- apt-get install pkg-config
- apt-get install uuid-dev
- apt-get install groff groff-base
- apt-get install gcc
- apt-get install autoconf automake libtool autotools-dev dpkg-dev fakeroot
./bootstrap autoreconf -ivf# Выполняем скрипт в архиве, устанавливаем git и создаем репозиторий git init.
./configure # Выполняем конфигурацию
make # Выполняем компиляцию
make install # устанавливаем пакет
Все содержимое должно установиться в /opt/reopenldap/
Устанавливаем openldap
- apt-get install slapd ldap-utils
Редактируем демон запуска, меняем строки:
nano /etc/init.d/slapd
SLAPD=/opt/reopenldap/sbin/slapd
...
# Load the default location of the slapd config file
if [ -z "$SLAPD_CONF" ]; then
if [ -e /etc/ldap/slapd.d ]; then
SLAPD_CONF=/etc/ldap/slapd.d
else
SLAPD_CONF=/opt/reopenldap/etc/slapd.conf
fi
fi
...
А так же закоментируем
# Source the init script configuration
#if [ -f "/etc/default/slapd" ]; then
# . /etc/default/slapd
#fi
Редактируем /opt/reopenldap/etc/slapd.conf меняем на свои значения:
#######################################################################
# MDB database definitions
#######################################################################
database mdb
maxsize 1073741824
suffix "dc=example,dc=com" # Суффикс базы
rootdn "cn=admin,dc=example,dc=com" # Администратор базы
# Cleartext passwords, especially for the rootdn, should
# be avoid. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw password # Пароль от базы
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory /opt/reopenldap/var/reopenldap-data # Место хранения базы
# Indices to maintain
index objectClass eq
#########################################################################
Создаем папку для базы
- mkdir /opt/reopenldap/var/reopenldap-data
Запускаем сервис
ПОЛЕЗНЫЕ КОМАНДЫ ДЛЯ ОТЛАДКИ ПРОБЛЕМ:
- service slapd status
- ps axf | grep slapd
- systemctl status slapd.service
- slapd -d -4
- /opt/reopenldap/sbin/slapd -d 4 -f /opt/reopenldap/etc/slapd.conf
- systemctl daemon-reload
- slappasswd
- ldapsearch -H [[ldapi://|ldapi://]] -Y EXTERNAL -b "cn=config" -LLL -Q "olcDatabase=*" dn
Проверяем BDB, HDB or MDB
&atention!
После выполнения всех махинаций, на reopenldap сервере не будет добавлена область DN, необходимо создать новую область DN:
nano add.ldif
dn: dc=example, dc=com
dc: example
o: example.com
objectclass: organization
objectclass: dcObject
objectclass: top
dn: cn=admin, dc=example, dc=com
objectclass: organizationalRole
objectclass: simpleSecurityObject
cn: admin
userPassword: password
ldapadd -x -D 'cn=admin,dc=example,dc=com' -W -f add.ldif
&atention! Необходимо в базу загрузить керберос схему: (Детальнее [[http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE_%D1%81%D0%B5%D1%82%D0%B8/kerberos_and_ldap|Здесь]])
1. Для загрузки схемы в LDAP, на сервере LDAP установите пакет krb5-kdc-ldap. В терминале введите:
sudo apt-get install krb5-kdc-ldap
- Далее распакуйте файл kerberos.schema.gz:
sudo gzip -d /usr/share/doc/krb5-kdc-ldap/kerberos.schema.gz
sudo cp /usr/share/doc/krb5-kdc-ldap/kerberos.schema /etc/ldap/schema/
- Схема kerberos должна быть добавлена к дереву cn=config. Процедура добавления новой схемы к slapd детально описана в секции Изменение базы данных настройки slapd.
Сначала создадим файл настроек с именем schema_convert.conf или другим значащим именем, содержащим следующие строки:
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/ppolicy.schema
include /etc/ldap/schema/kerberos.schema
Создадим временный каталог для хранения LDIF файлов:
mkdir /tmp/ldif_output
Теперь используем slapcat для конвертирования файлов схемы:
slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s
"cn={12}kerberos,cn=schema,cn=config" > /tmp/cn=kerberos.ldif
Измените имена файла и каталога выше для соответствия вашим именам, если они отличаются.
Отредактируйте созданный файл /tmp/cn=kerberos.ldif, изменив следующие атрибуты:
dn: cn=kerberos,cn=schema,cn=config
...
cn: kerberos
и удалите следующие строки в конце файла:
structuralObjectClass: olcSchemaConfig
entryUUID: 18ccd010-746b-102d-9fbe-3760cca765dc
creatorsName: cn=config
createTimestamp: 20090111203515Z
entryCSN: 20090111203515.326445Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20090111203515Z
Значения атрибутов могут отличаться, просто убедитесь, что атрибуты удалены.
Загрузите новую схему с помощью ldapadd:
ldapadd -x -D cn=admin,cn=config -W -f /tmp/cn=kerberos.ldif
Добавьте индекс для атрибута krb5principalname:
ldapmodify -x -D cn=admin,cn=config -W
Enter LDAP Password:
dn: olcDatabase={1}hdb,cn=config
add: olcDbIndex
olcDbIndex: krbPrincipalName eq,pres,sub
modifying entry "olcDatabase={1}hdb,cn=config"
РЕПЛИКАЦИЯ МАСТЕР-МАСТЕР (МУЛЬТИ-МАСТЕР)
1 Мастер:
nano /opt/reopenldap/etc/slapd.conf
# Generated from slapd.conf.in on 2017-09-11 11:53:10+00:00
#
ServerID 001
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include /opt/reopenldap/etc/schema/core.schema
include /opt/reopenldap/etc/schema/collective.schema
include /opt/reopenldap/etc/schema/corba.schema
include /opt/reopenldap/etc/schema/cosine.schema
include /opt/reopenldap/etc/schema/duaconf.schema
include /opt/reopenldap/etc/schema/dyngroup.schema
include /opt/reopenldap/etc/schema/inetorgperson.schema
include /opt/reopenldap/etc/schema/java.schema
include /opt/reopenldap/etc/schema/misc.schema
include /opt/reopenldap/etc/schema/nis.schema
include /opt/reopenldap/etc/schema/openldap.schema
include /opt/reopenldap/etc/schema/ppolicy.schema
include /opt/reopenldap/etc/schema/kerberos.schema
# Define global ACLs to disable default read access.
# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral ldap://root.openldap.org
pidfile /opt/reopenldap/var/run/slapd.pid
argsfile /opt/reopenldap/var/run/slapd.args
# Load dynamic backend modules:
# modulepath /opt/reopenldap/lib/reopenldap
# moduleload back_mdb.la
# moduleload back_ldap.la
moduleload syncprov.la
# Sample security restrictions
# Require integrity protection (prevent hijacking)
# Require 112-bit (3DES or better) encryption for updates
# Require 63-bit encryption for simple bind
# security ssf=1 update_ssf=112 simple_bind=64
# Sample access control policy:
# Root DSE: allow anyone to read it
# Subschema (sub)entry DSE: allow anyone to read it
# Other DSEs:
# Allow self write access
# Allow authenticated users read access
# Allow anonymous users to authenticate
# Directives needed to implement policy:
# access to dn.base="" by * read
# access to dn.base="cn=Subschema" by * read
# access to *
# by self write
# by users read
# by anonymous auth
#
# if no access controls are present, the default policy
#######################################################################
# MDB database definitions
#######################################################################
database mdb
maxsize 1073741824
suffix "dc=example,dc=com"
rootdn "cn=admin,dc=example,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoid. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw battle94
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory /opt/reopenldap/var/reopenldap-data
# разрешаем доступ на чтение всем потребителям
# подразумевается, что на всех главных серверах будет использоваться binddn с этим значением
# может понадобиться слияние с другими ACL
#access to *
# by dn.base="cn=admin,dc=example,dc=com" read
# by * break
#
# Простой уровень безопасности с паролем в открытом виде
syncrepl rid=000
provider=ldap://ldaps02.example.com
type=refreshAndPersist
retry="60 +"
searchbase="dc=example,dc=com"
scope=sub
schemachecking=off
bindmethod=simple
binddn="cn=admin,dc=example,dc=com"
credentials=battle94
# Indices to maintain
index objectclass,entryCSN,entryUUID eq
# зеркальный режим необходим для того, чтобы разрешить запись
# эта директива должна определяться после всех директив syncrepl
mirrormode TRUE
# указываем поставщику использовать наложение syncprov
# (заключительные директивы в разделе database)
overlay syncprov
# contextCSN сохраняется в базу данных
# через каждые 100 обновлений или 10 минут
syncprov-checkpoint 100 10
2 Мастер:
# Generated from slapd.conf.in on 2017-09-11 11:53:10+00:00
#
ServerID 002
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include /opt/reopenldap/etc/schema/core.schema
include /opt/reopenldap/etc/schema/collective.schema
include /opt/reopenldap/etc/schema/corba.schema
include /opt/reopenldap/etc/schema/cosine.schema
include /opt/reopenldap/etc/schema/duaconf.schema
include /opt/reopenldap/etc/schema/dyngroup.schema
include /opt/reopenldap/etc/schema/inetorgperson.schema
include /opt/reopenldap/etc/schema/java.schema
include /opt/reopenldap/etc/schema/misc.schema
include /opt/reopenldap/etc/schema/nis.schema
include /opt/reopenldap/etc/schema/openldap.schema
include /opt/reopenldap/etc/schema/ppolicy.schema
include /opt/reopenldap/etc/schema/kerberos.schema
# Define global ACLs to disable default read access.
# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral ldap://root.openldap.org
pidfile /opt/reopenldap/var/run/slapd.pid
argsfile /opt/reopenldap/var/run/slapd.args
# Load dynamic backend modules:
# modulepath /opt/reopenldap/lib/reopenldap
# moduleload back_mdb.la
# moduleload back_ldap.la
moduleload syncprov.la
# Sample security restrictions
# Require integrity protection (prevent hijacking)
# Require 112-bit (3DES or better) encryption for updates
# Require 63-bit encryption for simple bind
# security ssf=1 update_ssf=112 simple_bind=64
# Sample access control policy:
# Root DSE: allow anyone to read it
# Subschema (sub)entry DSE: allow anyone to read it
# Other DSEs:
# Allow self write access
# Allow authenticated users read access
# Allow anonymous users to authenticate
# Directives needed to implement policy:
# access to dn.base="" by * read
# access to dn.base="cn=Subschema" by * read
# access to *
# by self write
# by users read
# by anonymous auth
#
# if no access controls are present, the default policy
#######################################################################
# MDB database definitions
#######################################################################
database mdb
maxsize 1073741824
suffix "dc=example,dc=com"
rootdn "cn=admin,dc=example,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoid. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw battle94
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory /opt/reopenldap/var/reopenldap-data
#
#
# может понадобиться слияние с другими ACL
#access to *
# by dn.base="cn=admin,dc=example,dc=com" read
# by * break
#
# простой уровень безопасности с паролем в открытом виде
syncrepl rid=000
provider=ldap://ldaps01.example.com
type=refreshAndPersist
retry="60 +"
searchbase="dc=example,dc=com"
scope=sub
bindmethod=simple
schemachecking=off
binddn="cn=admin,dc=example,dc=com"
credentials=battle94
# Indices to maintain
index objectclass,entryCSN,entryUUID eq
#
# эта директива должна определяться после всех директив syncrepl
mirrormode TRUE
# (заключительные директивы в разделе database)
#
overlay syncprov
# contextCSN сохраняется в базу данных
# через каждые 100 обновлений или 10 минут
syncprov-checkpoint 100 10
ПОЛЕЗНЫЕ ССЫЛКИ:
https://habrahabr.ru/post/270635/
https://pro-ldap.ru/tr/zytrax/ch7/
http://wiki.enchtex.info/howto/openldap/syncrepl
====KERBEROS====
- Сначала установим необходимые пакеты, введя из терминала:
sudo apt-get install krb5-kdc krb5-admin-server krb5-kdc-ldap
- Теперь редактируем /etc/krb5.conf добавив следующие опции в соответствующие секции:
[libdefaults]
default_realm = EXAMPLE.COM
...
[realms]
EXAMPLE.COM = {
kdc = kdc01.example.com
kdc = kdc02.example.com
admin_server = kdc01.example.com
admin_server = kdc02.example.com
default_domain = example.com
database_module = openldap_ldapconf
}
...
[domain_realm]
.example.com = EXAMPLE.COM
...
[dbdefaults]
ldap_kerberos_container_dn = cn=admin,dc=example,dc=com
[dbmodules]
openldap_ldapconf = {
db_library = kldap
ldap_kdc_dn = "cn=admin,dc=example,dc=com"
# this object needs to have read rights on
# the realm container, principal container and realm sub-trees
ldap_kadmind_dn = "cn=admin,dc=example,dc=com"
# this object needs to have read and write rights on
# the realm container, principal container and realm sub-trees
ldap_service_password_file = /etc/krb5kdc/service.keyfile
ldap_servers = ldap://ldap01.example.com ldaps://ldap02.example.com
ldap_conns_per_server = 5
}
- Далее используем утилиту kdb5_ldap_util для создания области:
sudo kdb5_ldap_util -D cn=admin,dc=example,dc=com create -subtrees
dc=example,dc=com -r EXAMPLE.COM -s -H ldap://ldap01.example.com
- Создаем тайник для пароля, используемого для подключения к LDAP серверу. Этот пароль используется опциями ldap_kdc_dn и ldap_kadmin_dn в /etc/krb5.conf:
sudo kdb5_ldap_util -D cn=admin,dc=example,dc=com stashsrvpw -f
/etc/krb5kdc/service.keyfile cn=admin,dc=example,dc=com
Вы можете добавить учетные записи Kerberos в LDAP базу и они будут скопированы на все LDAP сервера, настроенные на репликацию. Для добавления учетной записи с использованием утилиты kadmin.local введите:
sudo kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local: addprinc -x dn="uid=steve,ou=people,dc=example,dc=com" steve
WARNING: no policy specified for steve@EXAMPLE.COM; defaulting to no policy
Enter password for principal "steve@EXAMPLE.COM":
Re-enter password for principal "steve@EXAMPLE.COM":
Principal "steve@EXAMPLE.COM" created.
Теперь будут добавлены атрибуты krbPrincipalName, krbPrincipalKey, krbLastPwdChange и krbExtraData к объекту пользователя uid=steve,ou=people,dc=example,dc=com. Используйте утилиты kinit и klist для проверки, что пользователю действительно выдали билет.
Настройку вторичного KDC делаем по [[http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE_%D1%81%D0%B5%D1%82%D0%B8/kerberos_and_ldap|ссылке]]
СОЗДАНИЕ ДОПОЛНИТЕЛЬНЫХ ОБЛАСТЕЙ В KERBEROS
Редактируем /etc/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 750,88
default_realm = EXAMPLE.COM
[realms]
EXAMPLE.COM = {
database_name = /var/lib/krb5kdc/principal
admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
acl_file = /etc/krb5kdc/kadm5.acl
key_stash_file = /etc/krb5kdc/.k5.EXAMPLE.COM
kdc_ports = 750,88
max_life = 10h 0m 0s
max_renewable_life = 7d 0h 0m 0s
master_key_type = des3-hmac-sha1
supported_enctypes = aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3
default_principal_flags = +preauth
}
TESTIK.COM = {
database_name = /var/lib/krb5kdc/principal
admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
acl_file = /etc/krb5kdc/kadm5.acl
key_stash_file = /etc/krb5kdc/.k5.TESTIK.COM
kdc_ports = 750,88
max_life = 10h 0m 0s
max_renewable_life = 7d 0h 0m 0s
master_key_type = des3-hmac-sha1
supported_enctypes = aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3
default_principal_flags = +preauth
}
[logging]
kdc = FILE:/var/log/krb5logs/kdc.log
admin_server = FILE:/var/log/krb5logs/kadmin.log
А так же /etc/krb5.conf
...
[realms]
EXAMPLE.COM = {
kdc = rekdc01.example.com
kdc = rekdc02.example.com
admin_server = rekdc01.example.com
admin_server = rekdc02.example.com
default_domain = example.com
database_module = openldap_ldapconf
}
TESTIK.COM = {
kdc = rekdc01.example.com
kdc = rekdc02.example.com
admin_server = rekdc01.example.com
admin_server = rekdc02.example.com
default_domain = testik.com
database_module = openldap_ldapconf
...
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
.testik.com = TESTIK.COM
...
[dbdefaults]
ldap_kerberos_container_dn = cn=admin,dc=example,dc=com
[dbmodules]
openldap_ldapconf = {
db_library = kldap
ldap_kdc_dn = "cn=admin,dc=example,dc=com"
# this object needs to have read rights on
# the realm container, principal container and realm sub-trees
ldap_kadmind_dn = "cn=admin,dc=example,dc=com"
# this object needs to have read and write rights on
# the realm container, principal container and realm sub-trees
ldap_service_password_file = /etc/krb5kdc/service.keyfile
ldap_servers = ldap://ldap01.example.com ldaps://ldap02.example.com
ldap_conns_per_server = 5
}
Для добавления принципалов в другой области:
kadmin.local -r TESTIK.COM
Настройка клиента kerberos:
sudo apt-get install krb5-user libpam-krb5 libpam-ccreds auth-client-config
nano /etc/krb5.conf
[libdefaults]
default_realm = EXAMPLE.COM
...
[realms]
EXAMPLE.COM = }
kdc = 192.168.0.1
admin_server = 192.168.0.1
}
Вы можете проверить настройки запросив билет с помощью утилиты kinit. Например:
kinit steve@EXAMPLE.COM
Password for steve@EXAMPLE.COM:
Когда билет будет предоставлен, детали можно увидеть с помощью klist:
klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: steve@EXAMPLE.COM
Valid starting Expires Service principal
07/24/08 05:18:56 07/24/08 15:18:56 krbtgt/EXAMPLE.COM@EXAMPLE.COM
renew until 07/25/08 05:18:57
/etc/init.d/krb5-admin-server restart
/etc/init.d/krb5-kdc restart
Схема подключения 1:
Создаем на KDC пользователя и приклепляем его билет уже существующему пользователю на другом сервере:
kinit ВАШ_ЛОГИН
Проверяем получил ли он билет:
klist
Добавляем запрос билета при входе пользователя:
sudo auth-client-config -a -p kerberos_example
Схема подключения 2:
Создаем на KDC пользователя, так же после поднятия kdc клиента на другом сервере, создаем там пользователя с аналогичным именем:
useradd -d /home/arch -m -s /bin/bash(shell) arch
Теперь можно зайти на сервер используя логин-arch и пароль из сервера KDC.
Соответсвенно если сервер KDC будет выключен то пользователь не сможет зайти.
В /etc/shadow должен быть пользователь с строкой такого типа:
123:!:17373:0:99999:7:::
Как добавить нового пользователя:
ank ЛОГИН_ЮЗВЕРЯ
useradd -d /home/arch -m -s /bin/bash arch
Как добавить локального пользователя:
useradd -r -d /home/user -m -s /bin/bash user
&atention! ЕСЛИ ВСТРЕЧАЕМ ОШИБКУ - kinit: Cannot contact any KDC for realm 'EXAMPLE.COM' while getting initial credentials
ТО ВКЛЮЧАЕМ СЕРВИС sudo /etc/init.d/krb5-kdc start
====OpenVPN + Kerberos (посредством PAM)====
Устанавливаем OpenVPN:
apt-get install openvpn
apt-get install easy-rsa
cp /usr/lib/openvpn/openvpn-plugin-auth-pam.so /etc/openvpn/
Редактируем конфигурационный файл:
nano /etc/openvpn/server.conf
port 1194
# Протокол может быть UDP или TCP, я выбрал 1-й вариант.
proto udp
# Если вы выберите протокол TCP, здесь должно быть устройство tap. Однако, это вариант я не проверял, поэтому ищите информацию отдельно. FIXME
dev tun
# Говорим openvpn использовать созданый нами файл openvpn(настройка ниже)
plugin /etc/openvpn/openvpn-plugin-auth-pam.so openvpn
client-cert-not-required # говорим не использовать сертификаты.
#auth MD5
#tmp-dir /etc/openvpn/tmp
username-as-common-name
management localhost 7505
#push "redirect-gateway def1"
#push "route-gateway 10.101.1.1"
push "route 10.10.0.0 255.255.255.0" # прописываем роут ко второму опенвпн серверу на этом же хосте, что бы они видели друг друга
# Указываем где искать ключи
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key # This file should be kept secret
dh /etc/openvpn/keys/dh2048.pem
# Для 12.04 dh1024.pem
# Задаем IP и маску виртуальной сети. Произвольно, но если не уверены лучше делайте как показано здесь
server 10.8.0.0 255.255.255.0
# Указыем, где хранятся файлы с настройками IP-адресов клиентов (создадим ниже)
#client-config-dir ccd
# Запоминать динамически выданные адреса для VPN-клиентов и при последующих подключениях назначать те же значения.
ifconfig-pool-persist ipp.txt
# Указываем сети, в которые нужно идти через туннель (сеть-клиента).
route 10.101.1.0 255.255.255.0
# Включаем TLS
#tls-server
#tls-auth /etc/openvpn/keys/ta.key 0
#tls-timeout 120
#auth SHA1
#cipher BF-CBC
# разрешение подключения нескольких клиентов под одним логином
duplicate-cn
# Если нужно, чтобы клиенты видели друг друга раскомментируйте
;client-to-client
keepalive 10 120
# Сжатие трафика
comp-lzo
# Максимум клиентов
max-clients 10
user nobody
group nogroup
# Не перечитывать ключи, не закрывать и переоткрывать TUN\TAP устройство, после получения SIGUSR1 или ping-restart
persist-key
persist-tun
status openvpn-status.log
log /var/log/openvpn.log
# Детальность логирования
verb 3
# Защита от повторов (максимум 20 одинаковых сообщений подряд)
mute 20
# Файл отозванных сертификатов. Разремить, когда такие сертификаты появятся.
# crl-verify /etc/openvpn/crl.pem
&atention! При такой конфигурации аутентификация в OpenVPN будет происходить только с помощью логина и пароля учетной записи в керберос. Из минусов можно выделить то чтобы закрыть доступ к openvpn определенной учетной записи необходимо ее полностью удалить из кербероса. Что бы избежать эту проблемы необходимо так же сделать аутентификация с ключами.
Подключаем наш OpenVPN к керберос посредством PAM: (Детальнее [[http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE_%D1%81%D0%B5%D1%82%D0%B8/kerberos|здесь]])
sudo apt-get install krb5-user libpam-krb5 libpam-ccreds auth-client-config
Создаем файл конфигурации для openvpn и говорим ему использовать только керберос для аунтификации.
nano /etc/pam.d/openvpn
#%PAM-1.0
auth sufficient pam_krb5.so minimum_uid=1000
account sufficient pam_permit.so
session sufficient pam_permit.so
#Внимание! Если Openvpn настроен на LXC то необходимо пробросить tun интерфейс:
Добавляем в /etc/pve/lxc/105.conf (для проксмокса) nano /var/lib/lxc/105/ (для lxc) самый низ строку:
lxc.cgroup.devices.allow = c 10:200 rwm
Создаем скрипт
nano /etc/init.d/tun.sh
#!/bin/bash
mkdir /dev/net
mknod /dev/net/tun c 10 200
chmod 0666 /dev/net/tun
systemctl restart openvpn@server1.service # после собаки конфиг сервера указан
Добавляем его в автозагрузку
systemctl enable tun.service
OpenVPN client:
apt-get install openvpn
Копируем ca.crt из сервера.
nano /etc/openvpn/client.conf
client
auth-user-pass
#auth MD5
dev tun
dev-type tun
proto udp
remote 10.0.3.160 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/keys/ca.crt
comp-lzo
verb 3
log /var/log/openvpn.log
Что бы закрыть сеанс пользователя нужно подключиться по телнету и кильнуть его по имени (user1) в конфиге обязательно добавить управляющий порт management localhost 7505.
Смотрим активные сеансы:
cat /var/log/openvpn-status.log
Подключаемся по телнету:
telnet localhost 7505
kill user1
Добавляем второй openvpn сервер на том же хосте:
Создаем аналогичный конфиг файл server1.conf, server2.conf, меняем порты, сети и прописываем роуты.
====Ejabberd + Kerberos (посредством PAM)====
Установка ejabberd: (необходимо собрать из исходников с включением PAM)
Качаем архив по [[https://www.process-one.net/en/ejabberd/downloads/|ссылке]]
Устанавливаем дополнительные пакеты для сборки ejabberd из исходников:
apt-get install dh-autoreconf
apt-get install uuid-dev -y
apt-get install groff groff-base -y
apt-get install gcc -y
apt-get install erl -y
apt-get install erlang -y
apt-get install libssl-dev -y
apt-get install openssl -y
apt-get install libexpat1-dev -y
apt-get install expat -y
apt-get install yaml.h -y
apt-get install libyaml-dev -y
apt-get install yum-devel -y
apt-get install pam -y
apt-get install libpam0g-dev -y
apt-get install gd.h -y
apt-get install libgd2-noxpm-dev -y
apt-get install libwebp-dev -y
apt-get install git
tar -xvzf downloads-action.php?file=%2Fejabberd%2F17.11%2Fejabberd-17.11.tgz
cd ejabberd-17.11/
./configure --enable-pam && make install
Установленный ejabberd будет находиться в: /usr/local/etc/ejabberd/ejabberd.yml
Редактируем его.
...
hosts:
- "localhost"
- "10.0.3.226"
...
auth_password_format: plain
auth_method: pam
pam_service: "ejabberd"
Проверяем пытаясь зайти на вэб морду под локальным пользователем: http://10.0.3.226:5280/admin/
Приступаем к редактированию PAM /etc/pam.d/common-auth
Добавляем строку выше всех остальных
auth sufficient pam_krb5.so minimum_uid=1000
Команды:
- Запуск сервиса - ejabberdctl start
- Остановка сервиса - ejabberdctl stop
- Статус - ejabberdctl status
Перед этим устанавливаем пакеты
sudo apt-get install krb5-user libpam-krb5 libpam-ccreds auth-client-config
И подключаемся к нашему керберосу
Вообще в теории PAM нужно настроить в отдельный конфигурационный файл так же как и OpenVPN, но на практике он почему то не захотел через него работать.
Качаем Gajim либо PSI(нужно править настройки)
И подключаемся принципалом user3@10.0.3.226
ПОЛЕЗНЫЕ ССЫЛКИ :
====ReOpenLdap====
Скачиваем последнюю версию [[https://github.com/leo-yuriev/ReOpenLDAP/|здесь]]
Для установки необходимо собрать пакет, но перед этим устанавливаем дополнительные пакеты:
./bootstrapautoreconf -ivf# Выполняем скрипт в архиве, устанавливаем git и создаем репозиторий git init. ./configure # Выполняем конфигурацию make # Выполняем компиляцию make install # устанавливаем пакетВсе содержимое должно установиться в /opt/reopenldap/
Устанавливаем openldap
Редактируем демон запуска, меняем строки:
А так же закоментируем
Редактируем /opt/reopenldap/etc/slapd.conf меняем на свои значения:
Создаем папку для базы
Запускаем сервис
ПОЛЕЗНЫЕ КОМАНДЫ ДЛЯ ОТЛАДКИ ПРОБЛЕМ:
Проверяем BDB, HDB or MDB
&atention!
После выполнения всех махинаций, на reopenldap сервере не будет добавлена область DN, необходимо создать новую область DN:
&atention! Необходимо в базу загрузить керберос схему: (Детальнее [[http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE_%D1%81%D0%B5%D1%82%D0%B8/kerberos_and_ldap|Здесь]])
1. Для загрузки схемы в LDAP, на сервере LDAP установите пакет krb5-kdc-ldap. В терминале введите:Сначала создадим файл настроек с именем schema_convert.conf или другим значащим именем, содержащим следующие строки:
Создадим временный каталог для хранения LDIF файлов:
Теперь используем slapcat для конвертирования файлов схемы:
Измените имена файла и каталога выше для соответствия вашим именам, если они отличаются.
Отредактируйте созданный файл /tmp/cn=kerberos.ldif, изменив следующие атрибуты:
и удалите следующие строки в конце файла:
Значения атрибутов могут отличаться, просто убедитесь, что атрибуты удалены.
Загрузите новую схему с помощью ldapadd:
Добавьте индекс для атрибута krb5principalname:
РЕПЛИКАЦИЯ МАСТЕР-МАСТЕР (МУЛЬТИ-МАСТЕР)
1 Мастер:
2 Мастер:
ПОЛЕЗНЫЕ ССЫЛКИ:
https://habrahabr.ru/post/270635/
https://pro-ldap.ru/tr/zytrax/ch7/
http://wiki.enchtex.info/howto/openldap/syncrepl
====KERBEROS====
Вы можете добавить учетные записи Kerberos в LDAP базу и они будут скопированы на все LDAP сервера, настроенные на репликацию. Для добавления учетной записи с использованием утилиты kadmin.local введите:
Теперь будут добавлены атрибуты krbPrincipalName, krbPrincipalKey, krbLastPwdChange и krbExtraData к объекту пользователя uid=steve,ou=people,dc=example,dc=com. Используйте утилиты kinit и klist для проверки, что пользователю действительно выдали билет.
Настройку вторичного KDC делаем по [[http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE_%D1%81%D0%B5%D1%82%D0%B8/kerberos_and_ldap|ссылке]]
СОЗДАНИЕ ДОПОЛНИТЕЛЬНЫХ ОБЛАСТЕЙ В KERBEROS
Редактируем /etc/krb5kdc/kdc.conf
А так же /etc/krb5.conf
Для добавления принципалов в другой области:
Настройка клиента kerberos:
Вы можете проверить настройки запросив билет с помощью утилиты kinit. Например:
Password for steve@EXAMPLE.COM:Когда билет будет предоставлен, детали можно увидеть с помощью klist:
Схема подключения 1:
Создаем на KDC пользователя и приклепляем его билет уже существующему пользователю на другом сервере:
kinit ВАШ_ЛОГИН
Проверяем получил ли он билет:
klist
Добавляем запрос билета при входе пользователя:
sudo auth-client-config -a -p kerberos_example
Схема подключения 2:
Создаем на KDC пользователя, так же после поднятия kdc клиента на другом сервере, создаем там пользователя с аналогичным именем:
useradd -d /home/arch -m -s /bin/bash(shell) arch
Теперь можно зайти на сервер используя логин-arch и пароль из сервера KDC.
Соответсвенно если сервер KDC будет выключен то пользователь не сможет зайти.
В /etc/shadow должен быть пользователь с строкой такого типа:
123:!:17373:0:99999:7:::
Как добавить нового пользователя:
Как добавить локального пользователя:
&atention! ЕСЛИ ВСТРЕЧАЕМ ОШИБКУ - kinit: Cannot contact any KDC for realm 'EXAMPLE.COM' while getting initial credentials
ТО ВКЛЮЧАЕМ СЕРВИС sudo /etc/init.d/krb5-kdc start
====OpenVPN + Kerberos (посредством PAM)====
Устанавливаем OpenVPN:
Редактируем конфигурационный файл:
&atention! При такой конфигурации аутентификация в OpenVPN будет происходить только с помощью логина и пароля учетной записи в керберос. Из минусов можно выделить то чтобы закрыть доступ к openvpn определенной учетной записи необходимо ее полностью удалить из кербероса. Что бы избежать эту проблемы необходимо так же сделать аутентификация с ключами.
Подключаем наш OpenVPN к керберос посредством PAM: (Детальнее [[http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE_%D1%81%D0%B5%D1%82%D0%B8/kerberos|здесь]])
Создаем файл конфигурации для openvpn и говорим ему использовать только керберос для аунтификации.
#Внимание! Если Openvpn настроен на LXC то необходимо пробросить tun интерфейс:
Добавляем в /etc/pve/lxc/105.conf (для проксмокса) nano /var/lib/lxc/105/ (для lxc) самый низ строку:
lxc.cgroup.devices.allow = c 10:200 rwm
Создаем скрипт
Добавляем его в автозагрузку
OpenVPN client:
Копируем ca.crt из сервера.
Что бы закрыть сеанс пользователя нужно подключиться по телнету и кильнуть его по имени (user1) в конфиге обязательно добавить управляющий порт management localhost 7505.
Смотрим активные сеансы:
Подключаемся по телнету:
Добавляем второй openvpn сервер на том же хосте:
Создаем аналогичный конфиг файл server1.conf, server2.conf, меняем порты, сети и прописываем роуты.
====Ejabberd + Kerberos (посредством PAM)====
Установка ejabberd: (необходимо собрать из исходников с включением PAM)
Качаем архив по [[https://www.process-one.net/en/ejabberd/downloads/|ссылке]]
Устанавливаем дополнительные пакеты для сборки ejabberd из исходников:
Установленный ejabberd будет находиться в: /usr/local/etc/ejabberd/ejabberd.yml
Редактируем его.
Проверяем пытаясь зайти на вэб морду под локальным пользователем: http://10.0.3.226:5280/admin/
Приступаем к редактированию PAM /etc/pam.d/common-auth
Добавляем строку выше всех остальных
auth sufficient pam_krb5.so minimum_uid=1000Команды:
Перед этим устанавливаем пакеты
И подключаемся к нашему керберосу
Вообще в теории PAM нужно настроить в отдельный конфигурационный файл так же как и OpenVPN, но на практике он почему то не захотел через него работать.
Качаем Gajim либо PSI(нужно править настройки)
И подключаемся принципалом user3@10.0.3.226
ПОЛЕЗНЫЕ ССЫЛКИ :