Difference between revisions of "OpenLDAP"

From HackerNet
Jump to: navigation, search
Line 1: Line 1:
 
[[Category:Guider]] [[Category:Sparco]]
 
[[Category:Guider]] [[Category:Sparco]]
OpenLDAP är en central inloggnings server typ som Active directory är. Det ökar användarvänligheten om man kan använda samma lösenord till flera platser. OBS det är viktigt att klockorna är synkade på maskinerna som ska använda LDAP och att namnuppslag för LDAP-servern kan göras på alla klienter.
+
OpenLDAP är en central inloggnings server precis som Active directory är. Det ökar användarvänligheten om man kan använda samma lösenord till flera platser. OBS det är viktigt att klockorna är synkade på maskinerna som ska använda LDAP och att namnuppslag för LDAP-servern kan göras på alla klienter.
  
== Server ==
+
== Installera ==
Veriferat på Debian 7 (Wheezy)
 
 
  apt-get update && apt-get install slapd ldap-utils
 
  apt-get update && apt-get install slapd ldap-utils
Slå sedan in det lösenord du vill att admin kontot ska ha.
+
Slå in ett lösenord.
  
Öppna filen
+
Kör sedan,
  vim /etc/ldap/ldap.conf
+
  dpkg-reconfigure slapd
Och ändra <code>BASE</code> och <code>URI</code> , spara sedan filen.  
+
 
#
+
Svara följande på frågorna som kommer.
<nowiki># LDAP Defaults
+
{| class="wikitable"
  #
+
|-
 +
|Omit OpenLDAP server configuration? || No || Detta kommer starta wizarden.
 +
|-
 +
|DNS domain name: || example.se || Namnet på din LDAP domän. (Detta namnet kommer skapa ditt BaseDN dc=example,dc=se)
 +
|-
 +
|Organization name: || example || Ett namn på din organisation
 +
|-
 +
|Administrator password: || secret || Nytt lösenord för din LDAP administratör. (cn=admin,dc=example,dc=se)
 +
|-
 +
|Database backend to use: || HDB || Bygger på Oracle Berkeley databas(BDB) men är mer effektiv.
 +
|-
 +
|Remove database when slapd is purged? || No || Spara databasen även om OpenLDAP avinstalleras.
 +
|-
 +
|Move old database? || Yes || Ta bort den gammla databasen så att den inte stör den nya.
 +
|-
 +
|Allow LDAPv2 protocol? || No || Om du inte måste ha LDAPv2 men det är rekommenderat att ha det avstängt.
 +
|}
 +
 
 +
Gör en test query och kolla att LDAP servern fungerar.
 +
  ldapsearch -x -W -D cn=admin,dc=example,dc=se -b dc=example,dc=se -LLL
 
   
 
   
  #</nowiki> See ldap.conf(5) for details
+
  # x = simple bind/authentication
  <nowiki>#</nowiki> This file should be world readable but not world writable.
+
# W = ask for password
   
+
  # D = user DN
  BASE    dc=example,dc=com
+
  # b = search base
URI    ldap://192.168.0.100 ldap://192.168.0.100:666
+
  # LLL = omit comments
+
 
<nowiki>#</nowiki>SIZELIMIT      12
+
==Konfigurera==
<nowiki>#</nowiki>TIMELIMIT      15
+
Det finns tre olika sätt att konfigurera OpenLDAP.
<nowiki>#</nowiki>DEREF          never
+
*Man ändrar i själv i mappen <code>/etc/ldap/slapd.d</code>. Detta är inte rekommenderat att göra.
+
*Man använder ldap-utils(ldapadd, ldapdelete, ldapmodify, etc).
<nowiki>#</nowiki> TLS certificates (needed for GnuTLS)
+
*Eller så använder man ett GUI för att skapa användare, grupper eller importera LDIF. [http://phpldapadmin.sourceforge.net/wiki/index.php/Main_Page phpLDAPadmin], [https://directory.apache.org/studio/download/download-linux.html Apache Directory Studio], [http://www.ldapadmin.org LDAP Admin].
TLS_CACERT      /etc/ssl/certs/ca-certificates.crt
+
 
Sedan kör
+
'''LDIF''' är text filer som används för att skapa användare, grupper eller för att göra ändringar på din LDAP server.
  dpkg-reconfigure slapd
+
För att importera en LDIF fil kör kommandot,
 +
  ldapadd -W -D "cn=admin,dc=example,dc=se" -f filename.ldif
 +
 
 +
===Skapa en organizational unit===
  
Svara följande på frågorna som kommer.
+
Skapa en ldif fil med följande info i och importera till OpenLDAP.
# No.
+
dn: ou=users,dc=example,dc=se
# Fyll i samma som på <code>BASE</code>
+
changetype: add
# Fyll i ett namn på vad du vill kalla din domän.
+
objectClass: organizationalUnit
# Fyll i ditt adminlösenord.
+
objectClass: top
# Fyll i samma lösenord.
+
ou: users
# HDB.
 
# Yes.
 
# Yes.
 
# Nej.
 
För att skapa användare och grupper enkelt använd programmet [http://www.ldapadmin.org/ LDAP Admin]
 
  
== Client ==
+
===Skapa en användare===
=== Installera ===
+
dn: uid=user1,ou=users,dc=example,dc=se
Autentisera login mot LDAP servern. Veriferat på Debian 7 (Wheezy)
+
objectClass: inetOrgPerson
  apt-get update && apt-get install libnss-ldap libpam-ldap ldap-utils
+
objectClass: posixAccount
# Specifera URL till din ldap server.
+
objectClass: top
# Skriv in din base dn. Samma som BASE i <code>/etc/ldap/ldap.conf</code>
+
cn: user1
# Välj V3.
+
  givenName: User
# Fyll i hela suffixen till adminkontot.
+
sn: Usersson
# Lösenordet för adminkontot.
+
homeDirectory: /home/user1
# Välj ok. Vi ska ändra i den filen senare.
+
loginshell: /bin/bash
# Välj vad du vill.
+
uidNumber: 51397
# Välj vad du vill.
+
gidNumber: 0
# Fyll i hela suffixen till ditt LDAP adminkonto. Oftast samma som i steg 4.
+
uid: user1
# Lösenordet för adminkontot.
+
userPassword: secret
  
Öppna sedan filen,
+
Om du vill kryptera lösenordet skriv
  vim /etc/nsswitch.conf
+
  slappasswd -s secret
På linje #7 lägg till,
 
passwd: compat ldap
 
group: compat ldap
 
shadow: compat ldap
 
  
På linje #19 ändra till,
+
Och kopiera in SSHA nykeln i ldif filen efter <code>userPassword:</code>
netgroup:ldap
 
Öppna sedan filen,
 
vim /etc/pam.d/common-password
 
På linje #26 ta bort <code>use_authtok</code> och lägg till,
 
password     [success=1 user_unknown=ignore default=die]     pam_ldap.so try_first_pass
 
  
I filen /etc/pam_ldap.conf. Leta upp kommandot pam_password och ändra till exop. Om du byter lösenord med passwd så väljer Debian default att skicka över lösenordet krypterat med Crypt. Crypt klarar max 8 tecken och är inte säkert. Väljer man exop så sköter OpenLDAP krypteringen av lösenordet.
+
===Skapa grupper===
pam_password exop
+
Den finns olika sorters grupper man kan skapa.
Man kan skippa detta steget om man inte vill att en hemmapp ska skapas automatiskt lokalt på datorn,
+
*posixGroup - Lik en vanlig Unix grupp och har ett gidNumber.
vim /etc/pam.d/common-session
+
*groupOfNames - Används default av [[OpenLDAP#memberOf|memberOf]] overlayen och sparar varje användares FDN.  
Och lägga till denna raden i slutet.
+
*groupOfUniqueNames - Samma som groupOfNames fast man kan skilja på användare som har samma uid genom att lägga till en extra unique identifier.
session optional        pam_mkhomedir.so skel=/etc/skel umask=077
 
  
Starta sedan om datorn och prova att logga in med ett domänkonto.
+
====posixGroup====
 +
Denna sortens grupp syns om du har LDAP kopplat dina användare på en Linux maskin.
 +
dn: cn=sudo,dc=hackernet,dc=se
 +
objectclass: posixGroup
 +
objectclass: top
 +
cn: sudo
 +
description: Group description
 +
memberUid: user1
  
=== Sudo med LDAP ===
+
====groupOfNames====
Skapa en grupp som heter sudo. Lägg sedan till användarna som du vill ska få sudo rättigheter i den.
+
dn: cn=groupname,dc=hackernet,dc=se
Verifiera att din användare finns med i sudo gruppen genom att logga in och skriva groups.
+
objectclass: groupofnames
  sparco@jumpoff:~$ groups
+
  cn: groupname
  root wiki owncloud sudo
+
  description: Group desc
 +
member: uid=user1,ou=users,dc=example,dc=se
  
Lägg sedan till denna raden i <code>/etc/sudoers</code>
+
====groupOfUniqueNames====
  %sudo  ALL=(ALL:ALL) ALL
+
Om du har LDAP kopplat din [[VMware_vCenter|vCenter]] så behöver användarna ligga i en sån här grupp.
== GUI ==
+
  dn: cn=vcenter,dc=example,dc=se
I felsökningssyfte kan ett GUI vara användbart för man kan snabbt skapa sig en överblick och navigera i strukturen. LdapAdmin är ett simplet GUI som kan fetcha DN:s.
+
objectclass: groupOfUniqueNames
  http://ds.karen.hj.se/~cameljoe/LdapAdmin.exe
+
objectclass: top
 +
cn: vcenter
 +
description: vcenter group
 +
  uniqueMember: cn=user1,ou=users,dc=example,dc=se
  
==memberOf==
+
===memberOf===
 
För enkelt göra ställa frågor och se vilken grupp en användare är med i så behöver man aktivera <code>memberOf</code>.
 
För enkelt göra ställa frågor och se vilken grupp en användare är med i så behöver man aktivera <code>memberOf</code>.
  
Line 146: Line 163:
 
För att testa att det funkar kan du ställa denna frågan.
 
För att testa att det funkar kan du ställa denna frågan.
 
  ldapsearch -h <ip> -x -b "dc=example,dc=se" '(uid=testuser)' memberOf
 
  ldapsearch -h <ip> -x -b "dc=example,dc=se" '(uid=testuser)' memberOf
 +
 +
== Client ==
 +
=== Installera ===
 +
Autentisera login mot LDAP servern. Veriferat på Debian 7 (Wheezy)
 +
apt-get update && apt-get install libnss-ldap libpam-ldap ldap-utils
 +
# Specifera URL till din ldap server.
 +
# Skriv in din base dn. Samma som BASE i <code>/etc/ldap/ldap.conf</code>
 +
# Välj V3.
 +
# Fyll i hela suffixen till adminkontot.
 +
# Lösenordet för adminkontot.
 +
# Välj ok. Vi ska ändra i den filen senare.
 +
# Välj vad du vill.
 +
# Välj vad du vill.
 +
# Fyll i hela suffixen till ditt LDAP adminkonto. Oftast samma som i steg 4.
 +
# Lösenordet för adminkontot.
 +
 +
Öppna sedan filen,
 +
vim /etc/nsswitch.conf
 +
På linje #7 lägg till,
 +
passwd: compat ldap
 +
group: compat ldap
 +
shadow: compat ldap
 +
 +
På linje #19 ändra till,
 +
netgroup:ldap
 +
Öppna sedan filen,
 +
vim /etc/pam.d/common-password
 +
På linje #26 ta bort <code>use_authtok</code> och lägg till,
 +
password     [success=1 user_unknown=ignore default=die]     pam_ldap.so try_first_pass
 +
 +
I filen /etc/pam_ldap.conf. Leta upp kommandot pam_password och ändra till exop. Om du byter lösenord med passwd så väljer Debian default att skicka över lösenordet krypterat med Crypt. Crypt klarar max 8 tecken och är inte säkert. Väljer man exop så sköter OpenLDAP krypteringen av lösenordet.
 +
pam_password exop
 +
Man kan skippa detta steget om man inte vill att en hemmapp ska skapas automatiskt lokalt på datorn,
 +
vim /etc/pam.d/common-session
 +
Och lägga till denna raden i slutet.
 +
session optional        pam_mkhomedir.so skel=/etc/skel umask=077
 +
 +
Starta sedan om datorn och prova att logga in med ett domänkonto.
 +
 +
=== Styr Sudo med LDAP grupp ===
 +
Skapa en [[OpenLDAP#posixGroup|posixGroup]] som heter sudo. Lägg sedan till användarna som du vill ska få sudo rättigheter i den.
 +
Verifiera att din användare finns med i sudo gruppen genom att logga in och skriva groups.
 +
sparco@jumpoff:~$ groups
 +
root wiki sudo
 +
 +
Lägg sedan till denna raden i <code>/etc/sudoers</code> på din server.
 +
%sudo  ALL=(ALL:ALL) ALL
  
  
=== Förslag på möjliga rubriker ===
+
== Förslag på möjliga rubriker ==
  
 
==== LDAP med TLS ====
 
==== LDAP med TLS ====
  
 
==== LDAP-replikering ====
 
==== LDAP-replikering ====

Revision as of 23:39, 4 October 2015

OpenLDAP är en central inloggnings server precis som Active directory är. Det ökar användarvänligheten om man kan använda samma lösenord till flera platser. OBS det är viktigt att klockorna är synkade på maskinerna som ska använda LDAP och att namnuppslag för LDAP-servern kan göras på alla klienter.

Installera

apt-get update && apt-get install slapd ldap-utils

Slå in ett lösenord.

Kör sedan,

dpkg-reconfigure slapd

Svara följande på frågorna som kommer.

Omit OpenLDAP server configuration? No Detta kommer starta wizarden.
DNS domain name: example.se Namnet på din LDAP domän. (Detta namnet kommer skapa ditt BaseDN dc=example,dc=se)
Organization name: example Ett namn på din organisation
Administrator password: secret Nytt lösenord för din LDAP administratör. (cn=admin,dc=example,dc=se)
Database backend to use: HDB Bygger på Oracle Berkeley databas(BDB) men är mer effektiv.
Remove database when slapd is purged? No Spara databasen även om OpenLDAP avinstalleras.
Move old database? Yes Ta bort den gammla databasen så att den inte stör den nya.
Allow LDAPv2 protocol? No Om du inte måste ha LDAPv2 men det är rekommenderat att ha det avstängt.

Gör en test query och kolla att LDAP servern fungerar.

ldapsearch -x -W -D cn=admin,dc=example,dc=se -b dc=example,dc=se -LLL 

# x = simple bind/authentication
# W = ask for password
# D = user DN
# b = search base
# LLL = omit comments

Konfigurera

Det finns tre olika sätt att konfigurera OpenLDAP.

  • Man ändrar i själv i mappen /etc/ldap/slapd.d. Detta är inte rekommenderat att göra.
  • Man använder ldap-utils(ldapadd, ldapdelete, ldapmodify, etc).
  • Eller så använder man ett GUI för att skapa användare, grupper eller importera LDIF. phpLDAPadmin, Apache Directory Studio, LDAP Admin.

LDIF är text filer som används för att skapa användare, grupper eller för att göra ändringar på din LDAP server. För att importera en LDIF fil kör kommandot,

ldapadd -W -D "cn=admin,dc=example,dc=se" -f filename.ldif

Skapa en organizational unit

Skapa en ldif fil med följande info i och importera till OpenLDAP.

dn: ou=users,dc=example,dc=se
changetype: add
objectClass: organizationalUnit
objectClass: top
ou: users

Skapa en användare

dn: uid=user1,ou=users,dc=example,dc=se
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
cn: user1
givenName: User
sn: Usersson
homeDirectory: /home/user1
loginshell: /bin/bash
uidNumber: 51397
gidNumber: 0
uid: user1
userPassword: secret

Om du vill kryptera lösenordet skriv

slappasswd -s secret

Och kopiera in SSHA nykeln i ldif filen efter userPassword:

Skapa grupper

Den finns olika sorters grupper man kan skapa.

  • posixGroup - Lik en vanlig Unix grupp och har ett gidNumber.
  • groupOfNames - Används default av memberOf overlayen och sparar varje användares FDN.
  • groupOfUniqueNames - Samma som groupOfNames fast man kan skilja på användare som har samma uid genom att lägga till en extra unique identifier.

posixGroup

Denna sortens grupp syns om du har LDAP kopplat dina användare på en Linux maskin.

dn: cn=sudo,dc=hackernet,dc=se
objectclass: posixGroup
objectclass: top
cn: sudo
description: Group description
memberUid: user1

groupOfNames

dn: cn=groupname,dc=hackernet,dc=se
objectclass: groupofnames
cn: groupname
description: Group desc
member: uid=user1,ou=users,dc=example,dc=se

groupOfUniqueNames

Om du har LDAP kopplat din vCenter så behöver användarna ligga i en sån här grupp.

dn: cn=vcenter,dc=example,dc=se
objectclass: groupOfUniqueNames
objectclass: top
cn: vcenter
description: vcenter group
uniqueMember: cn=user1,ou=users,dc=example,dc=se

memberOf

För enkelt göra ställa frågor och se vilken grupp en användare är med i så behöver man aktivera memberOf.

Skapa tre filer med följande kod i. memberof.ldif

dn: cn=module,cn=config
cn: module
objectClass: olcModuleList
olcModuleLoad: memberof
olcModulePath: /usr/lib/ldap

dn: olcOverlay={0}memberof,olcDatabase={1}hdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf

refint1.ldif

dn: cn=module{1},cn=config
add: olcmoduleload
olcmoduleload: refint

refint2

dn: olcOverlay={1}refint,olcDatabase={1}hdb,cn=config
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
objectClass: top
olcOverlay: {1}refint
olcRefintAttribute: memberof member manager owner

Ladda sedan in filerna i OpenLDAP servern med följande kommandon.

ldapadd -Q -Y EXTERNAL -H ldapi:/// -f memberof.ldif
ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f refint1.ldif
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f refint2.ldif

Skapa sedan en grupp och lägg till användare.

add_group.ldif

dn: cn=testgrupp,dc=example,dc=se
objectClass: groupofnames
cn: testgrupp
description: All users
member: uid=testuser,ou=users,dc=example,dc=se
ldapadd -x -D cn=admin,dc=example,dc=se -W -f add_group.ldif

För att testa att det funkar kan du ställa denna frågan.

ldapsearch -h <ip> -x -b "dc=example,dc=se" '(uid=testuser)' memberOf

Client

Installera

Autentisera login mot LDAP servern. Veriferat på Debian 7 (Wheezy)

apt-get update && apt-get install libnss-ldap libpam-ldap ldap-utils
  1. Specifera URL till din ldap server.
  2. Skriv in din base dn. Samma som BASE i /etc/ldap/ldap.conf
  3. Välj V3.
  4. Fyll i hela suffixen till adminkontot.
  5. Lösenordet för adminkontot.
  6. Välj ok. Vi ska ändra i den filen senare.
  7. Välj vad du vill.
  8. Välj vad du vill.
  9. Fyll i hela suffixen till ditt LDAP adminkonto. Oftast samma som i steg 4.
  10. Lösenordet för adminkontot.

Öppna sedan filen,

vim /etc/nsswitch.conf

På linje #7 lägg till,

passwd: compat ldap
group: compat ldap
shadow: compat ldap

På linje #19 ändra till,

netgroup:ldap

Öppna sedan filen,

vim /etc/pam.d/common-password

På linje #26 ta bort use_authtok och lägg till,

password     [success=1 user_unknown=ignore default=die]     pam_ldap.so try_first_pass

I filen /etc/pam_ldap.conf. Leta upp kommandot pam_password och ändra till exop. Om du byter lösenord med passwd så väljer Debian default att skicka över lösenordet krypterat med Crypt. Crypt klarar max 8 tecken och är inte säkert. Väljer man exop så sköter OpenLDAP krypteringen av lösenordet.

pam_password exop

Man kan skippa detta steget om man inte vill att en hemmapp ska skapas automatiskt lokalt på datorn,

vim /etc/pam.d/common-session

Och lägga till denna raden i slutet.

session optional        pam_mkhomedir.so skel=/etc/skel umask=077

Starta sedan om datorn och prova att logga in med ett domänkonto.

Styr Sudo med LDAP grupp

Skapa en posixGroup som heter sudo. Lägg sedan till användarna som du vill ska få sudo rättigheter i den. Verifiera att din användare finns med i sudo gruppen genom att logga in och skriva groups.

sparco@jumpoff:~$ groups
root wiki sudo

Lägg sedan till denna raden i /etc/sudoers på din server.

%sudo   ALL=(ALL:ALL) ALL


Förslag på möjliga rubriker

LDAP med TLS

LDAP-replikering