chii.homedns.org auf ldap umziehen

Bestimmt eine gute Idee morgens vor der Arbeit mal kurz zum ersten Mal auf ldap umzuziehen aber was solls :-D

Ok,

1. Versuch :-D

  • vi /etc/migrationtools/migrate_common.ph
  • $DEFAULT_MAIL_DOMAIN = "chii.homedns.org";
    $DEFAULT_BASE = "dc=chii,dc=homedns,dc=org";
  • setzen von EXTENDED_SCHEMA = 1
  • ldapadd -h localhost -x -W -D "cn=admin,dc=chii,dc=homedns,dc=org" -c -f base.ldif
  • hat geklappt ohne Fehler.
  •  /etc/migrationtools/migrate_all_online.sh

    adding new entry

  • "ou=Hosts,dc=chii,dc=homedns,dc=org"
    ldap_add: Already exists (68)
  • /usr/bin/ldapadd: returned non-zero exit status: saving failed LDIF to /tmp/nis.ldif.XXXXXX
  • Hmmmm, base.ldif hatte doch schon Hosts erstellt.

    Mal schauen was den eigentlich schon migriert ist.

  • Tja, und gerade bemerke ich das ich schon wieder Drupal gekillt habe :-D
  • Der WYSIWYG Editor ist weg, das inline Tag kennt er nicht mehr. Ok, ich glaub das wird nix mehr beim Kaffetrinken.
    -> verschoben erstmal

     


 



 

Zweiter Tag

WYSIWYG gefixed



Hmmm, das ist schon da. Vielleicht doch nicht zuerst Base adden sollen ? Gibts da kein --force-all ? :-D

Ok, weiter gehts :-D

Wie man oben sieht, gibts nen ou=people, keine Ahnung wo das herkommt. 

Aber der Output von den migrationtools gibt an ou=People. Und Samba will ou=Users. Öhm, viel Auswahl wenn man keine Ahnung hat. 

Ich entscheide mich jetzt mal für den Debian default und nehme People. Mal sehen ob ichs bereue :-D


Also rm people weggelöscht und diesmal das  /tmp/nis.ldif.XXXXXX eingespielt.

Sieht schon besser aus.

Also nen bischen was hat er mal importiert. 

Peoples mal gar keine. 

Also testweise mal einen user als ldif erstellen und adden. 

Das File sieht in etwa so aus:

dn: uid=daniel,ou=People,dc=chii,dc=homedns,dc=org
uid: daniel
cn: daniel
sn: daniel
mail: daniel@chii.homedns.org
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: krb5Principal
objectClass: shadowAccount
userPassword: {crypt}sicheristsicherauchwenndenhashzuwisseneigentlichnichtsbringensollte

shadowLastChange: 14643
shadowMax: 99999
shadowWarning: 7
krb5PrincipalName: daniel@CHII.HOMEDNS.ORG
loginShell: /bin/bash
uidNumber: 1003
gidNumber: 1004
homeDirectory: /home/daniel
gecos: ,,,


Aha, adden failed.

Grund:  
objectClass: krb5Principal <- kennt er nicht. 

Denke mal das Schema fehlt, aber ich hab den Ticketwauwau (Kerberos) auch noch gar nicht eingerichtet. 

Naja, bevor ich per Suchen/Ersetzen das Zeug bei allen Usern lösche, schau ich mal ob ich das Schema einbinden kann. Später soll ja krb laufen (Win AD).


apt-get install krb5-kdc-ldap

und

nutte:/home/dominik# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: cn=config

dn: cn=module{0},cn=config

dn: cn=schema,cn=config

dn: cn={0}core,cn=schema,cn=config

dn: cn={1}cosine,cn=schema,cn=config

dn: cn={2}inetorgperson,cn=schema,cn=config

dn: cn={3}openldap,cn=schema,cn=config

dn: cn={2}nis,cn=schema,cn=config

dn: cn={5}misc,cn=schema,cn=config

dn: cn={6}samba3,cn=schema,cn=config

dn: cn={7}gosystem,cn=schema,cn=config

dn: cn={8}gofon,cn=schema,cn=config

dn: cn={9}gofax,cn=schema,cn=config

dn: cn={10}goto,cn=schema,cn=config

dn: cn={11}goserver,cn=schema,cn=config

dn: cn={12}gosa-samba3,cn=schema,cn=config

dn: cn={13}trust,cn=schema,cn=config

dn: olcBackend={0}hdb,cn=config

dn: olcDatabase={-1}frontend,cn=config

dn: olcDatabase={0}config,cn=config

dn: olcDatabase={1}hdb,cn=config

 

Hmmm also krb ist noch nicht drin aber das viele goXX Zeug erklärt vielleicht wo das people klein herkommt. Sieht nach Gosa aus. Ist auch installiert, aber auch nicht eingerichtet bisher :-D Ich befürchte ich muss irgendwann mal "apt-get install alleswasmitldapzutunhat" eingetippert habe. 

Egal erstmal. 

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/

dann schema_convert.conf erstellen mit Inhalt:

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/samba.schema
include /etc/ldap/schema/kerberos.schema

dann 

slaptest -f schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={12}kerberos,cn=schema,cn=config" > /tmp/cn=kerberos.ldif

(slaptest -f schema_convert.conf -F /tmp/ldif_output)

kerberos.ldif editieren:

Kop abändern auf:

dn: cn=kerberos,cn=schema,cn=config
...
cn: kerberos

und Block am Ende ab:

structuralObjectClass: olcSchemaConfig

weglöschen und mit 

ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/cn\=kerberos.ldif reinschiessen.

Total einfach oder ? LOL


Hmmm nebenbei fällt mir auf das ich mit dem weglöschen von people klein auch gleich den admin mitgelöscht habe. Sehr schlau von mir :-D

Immerhin war ich so schlau das people als ldif vorher zu exportieren. Also den Prt für den Admin rausnehmen, people auf People abändern und wieder reinschiessen.

dn: cn=System Administrator-admin,ou=People,dc=chii,dc=homedns,dc=org
cn: System Administrator-admin
givenname: System
objectclass: top
objectclass: person
objectclass: gosaAccount
objectclass: organizationalPerson
objectclass: inetOrgPerson
sn: Administrator
uid: admin
userpassword: {CRYPT}Sagichnicht

Keine Ahnung welcher Admin das ist. Ob nur für Gosa oder ldap admin, für dc=chii oder dc=admin,dc=config oder oder.. Ich hab in der config von slapd nochmal ein Adminaccount. Egal, sicher ist sicher und kostet erstmal nix. Ich befürchte das ich das auch noch an anderer Stelle auf People umstellen muss. Zumindest mal in Gosa aber erstmal will ich ein populated ldap tree. 

gosa, pam, nscd, kerberos, samba, und und und kommt später...

Also die ldapmodify ist übrigens ein Superbeispiel warum ich mit 10 Usern ein ldap haben will :-D

Ich hab die Schnautz so voll von 20 Millionen Authmethoden, ich will EINE. 

ldapmodify will ohne Parameter erstmal über sasl authentifizieren, sasl nutzt bei mir saslauthd, das wiederrum pam benutzt das via pam-ldap auf ldap zugreift.

Gehts komplizierter ? Ich glaube nicht. :-D

Vor allem SASL finde ich persönlich den größten Dreck. Wenn schon kein flat (passwd like) dann gleich ldap. Aber cyrus ist kompliziert und Mist meiner Meinung nach:-D


Ok, in cn=config noch den index für kerberos aufgenommen.  [inline:krbACL.ldif] [inline:krbindex.ldif]

Mal sehen ob der Testuser daniel von oben jetzt reingeht.

ldap_add: Invalid syntax (21)
additional info: objectClass: value #5 invalid per syntax

War ja klar, nö.

Schnauze voll erstmal. To be continued irgendwann....


Öhm wer ins File guckt, ist klar im Vorteil. In kerberus.schema gibts  
krb5Principal auch nicht. 

Da aber schon: /usr/share/doc/gosa-plugin-mit-krb5/contrib/hdb.schema

Also das ganze von oben nochmal und zusätzlich hdb.schema als ldif ab in den slapd. 

Und siehe da es funzt. Was heimdal und kerberus vom MIT mit unterscheidet, lese ich mal nach wenn ich mich mit kerberus beschäftige (20 Jahren wenn es weiter so geht)


 

AnhangGröße
Binärdaten krbACL.ldif351 Bytes
Binärdaten krbindex.ldif90 Bytes

Dritter Tag

Ok, Feiertag, guter Anlass weiter an ldap rumzuspielen. 

Kurzer Zwischenstand. 

ldapsearch -x -W -D 'cn=admin,dc=chii,dc=homedns,dc=org' '*'

geht und zeigt mir den kompletten ldap tree. OK


ldapsearch -x -D 'uid=dominik,ou=People,dc=chii,dc=homedns,dc=org' -W

Zumindest die AUTH klappt mit dem Passwort für dominik das im ldap steht aber Result 0. 

Hmmm keine Ahnung ob das ok :-D


Logging für slapd

olcLogLevel auf 256 in /etc/ldap/slapd.d/cn=config.ldif gesetzt und slapd restarted. 

rsyslog geadded: Anscheined printed sonst slapd das auf LOCAL4

local4.* /var/log/ldap.log

rsyslog restart. 

Soooo, logging klappt. 


Noch spezifischer:

ldapsearch -h localhost -p 389 -x -D "uid=dominik,ou=People,dc=chii,dc=homedns,dc=org" -b "uid=dominik,ou=People,dc=chii,dc=homedns,dc=org" -W

AUTH klappt und result ist weiter 0.

Sollte ich nicht mindestens meinen eigenen Eintrag lesen können ? Ich glaube da stimmt was nicht an den ACLs.

ldapmodify will als cn=admin,dc=config mein Passwort nicht.

/etc/ldap/cn=config/olcDatabase={0}config.ldif RootPW fehlt.

Hinzugefügt. 


ACLs anschauen:

ldapsearch -xLLL -b cn=config -D cn=admin,cn=config -W olcDatabase=hdb olcAccess
Enter LDAP Password:
dn: olcDatabase={1}hdb,cn=config
olcAccess: {0}to attrs=userPassword,shadowLastChange,krbPrincipalKey by dn="cn
=admin,dc=chii,dc=homedns,dc=org " write by anonymous auth by self write by *
none

Ok, in deutsch: Admin darf userPassword schreiben, anonymous darf authen und der user selbst darf passwort schreiben. 

Sonst gibts keine Regeln. 

Bischen radikal find ich. Sowas wie nonanonymous dürfen zumindest ou=People uid, mail und anders nicht sicherheitskritisches lesen. 









 





4. Tag

Puuuuh, schon scheisse wenn man keine Ahnung hat. 

Alsooooo, ldap auth von drupal löppt. (daniel und thomas haben das verifiziert :-D)

ldapsearch geht nur per auth, sonst return 0. Genau so solls sein. 

phpldapadmin und ldap-account-manager sind ebenfalls am laufen. 


Das nächste Ziel wäre es Postfix / Dovecot (oder Cyrus wenn Dovecot doof ist) ldap beizubringen.

  • Mails aus ou=People zugestellt werden
  • Mails für ou=Aliases sollen dem jeweiligen Usern in ou=People weitergeleitet werden

Wenn das mal läuft, soll postfix mails die unter  der Mailadresse "chii.homedns.org"  via Relay über chii.homedns.org@gmx.de verschickt werden. 

Damit sich User bei Drupal, Fusionforge, Mailinglist usw. anmelden können, müssen diese Emails verschicken können. 

Dank der SPAMer nimmt kein Mailserver mehr Mails aus dem dynamisches IP Bereich der Provider an.

  • Also Relay über einen GMX Account
  • und via fetchmail wieder holen


Ok, Startpunkt:

Die Migration Tools von Debian haben mir die Alias Adressen wie logcheck usw unter ou=Aliases abgelegt. 

Und unter rfc822blah (s.u.) liegt der Wert wohin die Mails wirklich soll. 

Also mal sehen wie wir das postfix beibringen. 




Uiii, das ging ja easy

/etc/postfix/ldap-aliases.cf 

search_base = ou=Aliases,dc=chii,dc=homedns,dc=org
scope = sub
query_filter = (cn=%s)
result_attribute = rfc822MailMember

und fertig. 

Gleiches Spiel für People :-D

search_base = ou=People,dc=chii,dc=homedns,dc=org
scope = sub
query_filter = (uid=%s)
result_attribute = mail


Ich kriege immer mehr Bauchschmerzen ob ich gosa am Schluss so angepasst kriege das es mit meinem Tree löppt, aber egal "vi *.ldif" geht immer, wer braucht schon GUI's  :-D

Aber eigentlich sollte gosa an Debian anpassbar sein und nicht andersrum. Abwarten...

/etc/fetchmailrc 

set postmaster "dominik"
set bouncemail
set no spambounce
set softbounce
set properties ""
set daemon 300
set invisible
poll pop.gmx.net with proto POP3
  user 'chii.homedns.org@gmx.de' there with password 'X' is 'chii.homedns.org' here options ssl sslcertck

Sooo, funzt:

Mail von dominik an chii.homedns.org geht.  (Alias chii.homedns.org wird wieder zurück auf dominik gemapped.

Mail von irgendwas@irgendwo.de an chii.homedns.org@gmx.de wird von fetchmail geholt und über den Alias chii.homedns zu dominik weitergeleitet. 


Nächster Step wäre jetzt Mails mit Absender chii.homedns.org via RELAY über gmx versenden. 

Für heute reichts mir erstmal :-D




AnhangGröße
Bild Icon AliasesDebianvsPostfixMaildrop.png122.5 KB