add docs for slapd and dmzrsaccount
This commit is contained in:
parent
5e4f55af5b
commit
9be97947b5
13
docs/dmzrsaccount/README.md
Normal file
13
docs/dmzrsaccount/README.md
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
install luser.deb
|
||||||
|
change /var/luser/luser/config.ini
|
||||||
|
|
||||||
|
add ldap.krov.dmz.rs to /etc/hosts with the IP address op slapd vm by adding a line like "192.168.1.205 ldap.krov.dmz.rs"
|
||||||
|
|
||||||
|
config.ini should contain following:
|
||||||
|
|
||||||
|
LDAPHOST = ldap.krov.dmz.rs
|
||||||
|
LDAPADMINNAME = cn=admin,dc=dmz,dc=rs
|
||||||
|
LDAPPASS = <admin password set during installation of slapd program and dpkg-reconfigure on slapd vm>
|
||||||
|
USERBASE = ou=Users,dc=dmz,dc=rs
|
||||||
|
|
||||||
|
run prepare.py
|
12
docs/dmzrsaccount/listuserskralizec.py
Executable file
12
docs/dmzrsaccount/listuserskralizec.py
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import ldap3
|
||||||
|
|
||||||
|
LDAPADMINNAME='uid=krovslapd,ou=xmpp,dc=dmz,dc=rs'
|
||||||
|
LDAPPASS='<krovslapd password>'
|
||||||
|
USERATTRIBUTES=['cn' , 'sn', 'givenName', 'uid', 'uidNumber' , 'gidNumber', 'homeDirectory', 'loginShell', 'gecos' , 'shadowLastChange', 'shadowMax', 'userPassword', 'mail']
|
||||||
|
|
||||||
|
|
||||||
|
ldapserver=ldap3.Server('2001:470:1f1a:1a4:0:1:0:1d',use_ssl=True)
|
||||||
|
ldapconnection = ldap3.Connection(ldapserver, LDAPADMINNAME,LDAPPASS, auto_bind=True)
|
||||||
|
ldapconnection.search(search_base=f'ou=xmpp,dc=dmz,dc=rs',search_filter='(objectClass=person)', attributes=USERATTRIBUTES)
|
||||||
|
print(str(ldapconnection.response))
|
17
docs/dmzrsaccount/listuserskrov.py
Executable file
17
docs/dmzrsaccount/listuserskrov.py
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import ldap3
|
||||||
|
import configparser
|
||||||
|
|
||||||
|
CONFIG_PATH = '/var/luser/luser/config.ini'
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
config.read(CONFIG_PATH)
|
||||||
|
LDAPHOST = config.get('credentials', 'LDAPHOST')
|
||||||
|
LDAPADMINNAME = config.get('credentials', 'LDAPADMINNAME')
|
||||||
|
LDAPPASS = config.get('credentials', 'LDAPPASS')
|
||||||
|
USERBASE = config.get('credentials', 'USERBASE')
|
||||||
|
USERATTRIBUTES=['cn' , 'sn', 'givenName', 'uid', 'uidNumber' , 'gidNumber', 'homeDirectory', 'loginShell', 'gecos' , 'shadowLastChange', 'shadowMax', 'userPassword', 'mail']
|
||||||
|
|
||||||
|
ldapserver=ldap3.Server(LDAPHOST,use_ssl=True)
|
||||||
|
ldapconnection = ldap3.Connection(ldapserver, LDAPADMINNAME,LDAPPASS, auto_bind=True)
|
||||||
|
ldapconnection.search(search_base=f'{USERBASE}',search_filter='(objectClass=person)', attributes=USERATTRIBUTES)
|
||||||
|
print(str(ldapconnection.response))
|
18
docs/dmzrsaccount/prepare.py
Executable file
18
docs/dmzrsaccount/prepare.py
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import ldap3
|
||||||
|
import configparser
|
||||||
|
|
||||||
|
CONFIG_PATH = "/var/luser/luser/config.ini"
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
config.read(CONFIG_PATH)
|
||||||
|
LDAPHOST = config.get('credentials', 'LDAPHOST')
|
||||||
|
LDAPADMINNAME = config.get('credentials', 'LDAPADMINNAME')
|
||||||
|
LDAPPASS = config.get('credentials', 'LDAPPASS')
|
||||||
|
USERBASE = config.get('credentials', 'USERBASE')
|
||||||
|
|
||||||
|
ldapserver=ldap3.Server(LDAPHOST,use_ssl=True)
|
||||||
|
ldapconnection = ldap3.Connection(ldapserver, LDAPADMINNAME, LDAPPASS, auto_bind=True)
|
||||||
|
rcode1=ldapconnection.add(f'{USERBASE}', ['dcObject', 'organization'], {'o' : "dmz", 'dc' : "dmz"})
|
||||||
|
rcode2=ldapconnection.add(USERBASE, ['top', 'organizationalUnit'], {'ou' : "Users"})
|
||||||
|
print(str(rcode1))
|
||||||
|
print(str(rcode2))
|
18
docs/dmzrsaccount/testanon.py
Executable file
18
docs/dmzrsaccount/testanon.py
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import ldap3
|
||||||
|
import configparser
|
||||||
|
|
||||||
|
CONFIG_PATH = '/var/luser/luser/config.ini'
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
config.read(CONFIG_PATH)
|
||||||
|
LDAPHOST = config.get('credentials', 'LDAPHOST')
|
||||||
|
USERBASE = config.get('credentials', 'USERBASE')
|
||||||
|
USERATTRIBUTES=['cn' , 'sn', 'givenName', 'uid', 'uidNumber' , 'gidNumber', 'homeDirectory', 'loginShell', 'gecos' , 'shadowLastChange', 'shadowMax', 'userPassword', 'mail']
|
||||||
|
|
||||||
|
LDAPADMINNAME=''
|
||||||
|
LDAPPASS=""
|
||||||
|
|
||||||
|
ldapserver=ldap3.Server(LDAPHOST,use_ssl=True)
|
||||||
|
ldapconnection = ldap3.Connection(ldapserver, LDAPADMINNAME,LDAPPASS, auto_bind=True)
|
||||||
|
ldapconnection.search(search_base=f'{USERBASE}',search_filter='(objectClass=person)', attributes=USERATTRIBUTES)
|
||||||
|
print(str(ldapconnection.response))
|
18
docs/dmzrsaccount/testuser.py
Executable file
18
docs/dmzrsaccount/testuser.py
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import ldap3
|
||||||
|
import configparser
|
||||||
|
|
||||||
|
CONFIG_PATH = '/var/luser/luser/config.ini'
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
config.read(CONFIG_PATH)
|
||||||
|
LDAPHOST = config.get('credentials', 'LDAPHOST')
|
||||||
|
USERBASE = config.get('credentials', 'USERBASE')
|
||||||
|
USERATTRIBUTES=['cn' , 'sn', 'givenName', 'uid', 'uidNumber' , 'gidNumber', 'homeDirectory', 'loginShell', 'gecos' , 'shadowLastChange', 'shadowMax', 'userPassword', 'mail']
|
||||||
|
|
||||||
|
LDAPADMINNAME="uid=korisnik,ou=Users,dc=dmz,dc=rs"
|
||||||
|
LDAPPASS="<password of korisnik>"
|
||||||
|
|
||||||
|
ldapserver=ldap3.Server(LDAPHOST,use_ssl=True)
|
||||||
|
ldapconnection = ldap3.Connection(ldapserver, LDAPADMINNAME,LDAPPASS, auto_bind=True)
|
||||||
|
ldapconnection.search(search_base=f'{USERBASE}',search_filter='(objectClass=person)', attributes=USERATTRIBUTES)
|
||||||
|
print(str(ldapconnection.response))
|
18
docs/slapd/README.md
Normal file
18
docs/slapd/README.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
Create ldap users at dmz.rs/account for users in the servicesaccounts.txt
|
||||||
|
these accounts should be listed in /root/ldifs/addacl.ldif
|
||||||
|
to generate addacl.ldif run generateacl.sh
|
||||||
|
|
||||||
|
add tls keys in /etc/ssl/certs/ldap.krov.dmz.rs
|
||||||
|
|
||||||
|
# Generate password for admin user on this server only and add it when asked during installation
|
||||||
|
apt install slapd
|
||||||
|
|
||||||
|
# For domain set dmz.rs for Organization set Users for admin password use previously generated password
|
||||||
|
dpkg-reconfigure slapd
|
||||||
|
|
||||||
|
# change /etc/default/slapd to replace ldap:// with ldaps:// under SLAPD_SERVICES
|
||||||
|
service slapd restart
|
||||||
|
./setup.sh
|
||||||
|
|
||||||
|
dmzrsaccount vm should run prepare.py
|
||||||
|
ldapsync vm should run sync.py
|
18
docs/slapd/acladd-template.ldif
Normal file
18
docs/slapd/acladd-template.ldif
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
dn: olcDatabase={1}mdb,cn=config
|
||||||
|
add: olcAccess
|
||||||
|
olcAccess: {1}to attrs=userPassword by self write by anonymous auth
|
||||||
|
|
||||||
|
dn: olcDatabase={1}mdb,cn=config
|
||||||
|
add: olcAccess
|
||||||
|
#olcAccess: {2}to * by * none
|
||||||
|
olcAccess: {2}to * by self write READUSERS by anonymous none
|
||||||
|
|
||||||
|
dn: olcDatabase={-1}frontend,cn=config
|
||||||
|
add: olcAccess
|
||||||
|
olcAccess: {1}to attrs=userPassword by self write by anonymous auth
|
||||||
|
|
||||||
|
dn: olcDatabase={-1}frontend,cn=config
|
||||||
|
add: olcAccess
|
||||||
|
#olcAccess: {2}to * by * none
|
||||||
|
olcAccess: {2}to * by self READUSERS by anonymous none
|
||||||
|
|
9
docs/slapd/generateacl.sh
Executable file
9
docs/slapd/generateacl.sh
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
READUSERS=""
|
||||||
|
for i in $(cat servicesaccounts.txt); do READUSERS="$READUSERS by dn=\"$i\" read" ; done
|
||||||
|
|
||||||
|
sed 's/READUSERS/$READUSERS/g' acladd-template.ldif > acladd.ldif
|
||||||
|
|
||||||
|
for i in $(cat list) ; do printf "%s\n" $(echo -n $i | cut -d"," -f 1 | cut -d"=" -f2 ; genpass) | gpg -e -r fram3d@dmz.rs -r sienna@dmz.rs --output $(echo -n $i | cut -d"," -f 1 | cut -d"=" -f2).gpg ; done
|
||||||
|
|
6
docs/slapd/generatecreds.sh
Executable file
6
docs/slapd/generatecreds.sh
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
GENPASS=$( echo $(shuf ../../scripts/shared/english.txt | head) | sed "s/ //g")
|
||||||
|
|
||||||
|
for i in $(cat servicesaccounts.txt) ; do printf "%s\n" $(echo -n $i | cut -d"," -f 1 | cut -d"=" -f2 ; $(GENPASS)) | gpg -e -r fram3d@dmz.rs -r sienna@dmz.rs --output $(echo -n $i | cut -d"," -f 1 | cut -d"=" -f2).gpg ; done
|
||||||
|
|
9
docs/slapd/servicesaccounts.txt
Normal file
9
docs/slapd/servicesaccounts.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
uid=readonlykrov,ou=Users,dc=dmz,dc=rs
|
||||||
|
uid=wikildapkrov,ou=Users,dc=dmz,dc=rs
|
||||||
|
uid=forumldapkrov,ou=Users,dc=dmz,dc=rs
|
||||||
|
uid=gitealdapkrov,ou=Users,dc=dmz,dc=rs
|
||||||
|
uid=xmppldapkrov,ou=Users,dc=dmz,dc=rs
|
||||||
|
uid=dovecotldapkrov,ou=Users,dc=dmz,dc=rs
|
||||||
|
uid=postfixldapkrov,ou=Users,dc=dmz,dc=rs
|
||||||
|
uid=smtpdldapkrov,ou=Users,dc=dmz,dc=rs
|
||||||
|
uid=kralizecslapd,ou=Users,dc=dmz,dc=rs
|
45
hosts/krov/slapd12/etc/default/slapd
Normal file
45
hosts/krov/slapd12/etc/default/slapd
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
# Default location of the slapd.conf file or slapd.d cn=config directory. If
|
||||||
|
# empty, use the compiled-in default (/etc/ldap/slapd.d with a fallback to
|
||||||
|
# /etc/ldap/slapd.conf).
|
||||||
|
SLAPD_CONF=
|
||||||
|
|
||||||
|
# System account to run the slapd server under. If empty the server
|
||||||
|
# will run as root.
|
||||||
|
SLAPD_USER="openldap"
|
||||||
|
|
||||||
|
# System group to run the slapd server under. If empty the server will
|
||||||
|
# run in the primary group of its user.
|
||||||
|
SLAPD_GROUP="openldap"
|
||||||
|
|
||||||
|
# Path to the pid file of the slapd server. If not set the init.d script
|
||||||
|
# will try to figure it out from $SLAPD_CONF (/etc/ldap/slapd.d by
|
||||||
|
# default)
|
||||||
|
SLAPD_PIDFILE=
|
||||||
|
|
||||||
|
# slapd normally serves ldap only on all TCP-ports 389. slapd can also
|
||||||
|
# service requests on TCP-port 636 (ldaps) and requests via unix
|
||||||
|
# sockets.
|
||||||
|
# Example usage:
|
||||||
|
# SLAPD_SERVICES="ldap://127.0.0.1:389/ ldaps:/// ldapi:///"
|
||||||
|
SLAPD_SERVICES="ldaps:/// ldapi:///"
|
||||||
|
|
||||||
|
# If SLAPD_NO_START is set, the init script will not start or restart
|
||||||
|
# slapd (but stop will still work). Uncomment this if you are
|
||||||
|
# starting slapd via some other means or if you don't want slapd normally
|
||||||
|
# started at boot.
|
||||||
|
#SLAPD_NO_START=1
|
||||||
|
|
||||||
|
# If SLAPD_SENTINEL_FILE is set to path to a file and that file exists,
|
||||||
|
# the init script will not start or restart slapd (but stop will still
|
||||||
|
# work). Use this for temporarily disabling startup of slapd (when doing
|
||||||
|
# maintenance, for example, or through a configuration management system)
|
||||||
|
# when you don't want to edit a configuration file.
|
||||||
|
SLAPD_SENTINEL_FILE=/etc/ldap/noslapd
|
||||||
|
|
||||||
|
# For Kerberos authentication (via SASL), slapd by default uses the system
|
||||||
|
# keytab file (/etc/krb5.keytab). To use a different keytab file,
|
||||||
|
# uncomment this line and change the path.
|
||||||
|
#export KRB5_KTNAME=/etc/krb5.keytab
|
||||||
|
|
||||||
|
# Additional options to pass to slapd
|
||||||
|
SLAPD_OPTIONS=""
|
4
hosts/krov/slapd12/root/aclupdate.sh
Executable file
4
hosts/krov/slapd12/root/aclupdate.sh
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
./modify.sh ldifs/acldel.ldif
|
||||||
|
./modify.sh ldifs/acladd.ldif
|
18
hosts/krov/slapd12/root/ldifs/acladd.ldif
Normal file
18
hosts/krov/slapd12/root/ldifs/acladd.ldif
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
dn: olcDatabase={1}mdb,cn=config
|
||||||
|
add: olcAccess
|
||||||
|
olcAccess: {1}to attrs=userPassword by self write by anonymous auth
|
||||||
|
|
||||||
|
dn: olcDatabase={1}mdb,cn=config
|
||||||
|
add: olcAccess
|
||||||
|
#olcAccess: {2}to * by * none
|
||||||
|
olcAccess: {2}to * by self write by dn="uid=readonlykrov,ou=Users,dc=dmz,dc=rs" read by dn="uid=wikildapkrov,ou=Users,dc=dmz,dc=rs" read by dn="uid=forumldapkrov,ou=Users,dc=dmz,dc=rs" read by dn="uid=gitealdapkrov,ou=Users,dc=dmz,dc=rs" read by dn="uid=xmppldapkrov,ou=Users,dc=dmz,dc=rs" read by dn="uid=dovecotldapkrov,ou=Users,dc=dmz,dc=rs" read by dn="uid=postfixldapkrov,ou=Users,dc=dmz,dc=rs" read by dn="uid=smtpdldapkrov,ou=Users,dc=dmz,dc=rs" read by dn="uid=kralizecslapd,ou=Users,dc=dmz,dc=rs" read by anonymous none
|
||||||
|
|
||||||
|
dn: olcDatabase={-1}frontend,cn=config
|
||||||
|
add: olcAccess
|
||||||
|
olcAccess: {1}to attrs=userPassword by self write by anonymous auth
|
||||||
|
|
||||||
|
dn: olcDatabase={-1}frontend,cn=config
|
||||||
|
add: olcAccess
|
||||||
|
#olcAccess: {2}to * by * none
|
||||||
|
olcAccess: {2}to * by self write by dn="uid=readonlykrov,ou=Users,dc=dmz,dc=rs" read by dn="uid=wikildapkrov,ou=Users,dc=dmz,dc=rs" read by dn="uid=forumldapkrov,ou=Users,dc=dmz,dc=rs" read by dn="uid=gitealdapkrov,ou=Users,dc=dmz,dc=rs" read by dn="uid=xmppldapkrov,ou=Users,dc=dmz,dc=rs" read by dn="uid=dovecotldapkrov,ou=Users,dc=dmz,dc=rs" read by dn="uid=postfixldapkrov,ou=Users,dc=dmz,dc=rs" read by dn="uid=smtpdldapkrov,ou=Users,dc=dmz,dc=rs" read by dn="uid=kralizecslapd,ou=Users,dc=dmz,dc=rs" read by anonymous none
|
||||||
|
|
5
hosts/krov/slapd12/root/ldifs/acldel.ldif
Normal file
5
hosts/krov/slapd12/root/ldifs/acldel.ldif
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
dn: olcDatabase={-1}frontend,cn=config
|
||||||
|
delete: olcAccess
|
||||||
|
|
||||||
|
dn: olcDatabase={1}mdb,cn=config
|
||||||
|
delete: olcAccess
|
10
hosts/krov/slapd12/root/ldifs/tls.ldif
Normal file
10
hosts/krov/slapd12/root/ldifs/tls.ldif
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
dn: cn=config
|
||||||
|
changetype: modify
|
||||||
|
replace: olcTLSCertificateFile
|
||||||
|
olcTLSCertificateFile: /etc/ssl/certs/ldap.krov.dmz.rs/cert.pem
|
||||||
|
-
|
||||||
|
replace: olcTLSCertificateKeyFile
|
||||||
|
olcTLSCertificateKeyFile: /etc/ssl/certs/ldap.krov.dmz.rs/privkey.pem
|
||||||
|
-
|
||||||
|
replace: olcTLSCACertificateFile
|
||||||
|
olcTLSCACertificateFile: /etc/ssl/certs/ldap.krov.dmz.rs/chain.pem
|
3
hosts/krov/slapd12/root/modify.sh
Executable file
3
hosts/krov/slapd12/root/modify.sh
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
ldapmodify -H ldapi:/// -Y EXTERNAL -f $1
|
4
hosts/krov/slapd12/root/setup.sh
Executable file
4
hosts/krov/slapd12/root/setup.sh
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
ldapmodify -H ldapi:/// -Y EXTERNAL -f ldifs/tls.ldif
|
||||||
|
./aclupdate.sh
|
Loading…
Reference in New Issue
Block a user