Server ldap1
| Netzwerk | |
|---|---|
| IPv4 | 172.23.195.70, 45.11.17.233 (NAT) |
| IPv6 | 2a01:367:ff1f:100::70 |
| Hostname | ldap1.hsmr.cc |
Der Hackspace betreibt einen LDAP-Server zur Authentifizierung, u.a. genutzt vom Zammad.
Ein LdapCherry ist unter https://ldap.hsmr.cc/ zu erreichen.
Auf der Maschine läuft ein Arch Linux. Das Webinterface, LdapCherry, ist unmaintained und basiert auf Python 2.7. Wer hier updated, muss es danach auch wieder zum Laufen bringen, viel Erfolg ;-)
Benutzer anlegen
wenn man neue Benutzer via LdapCherry anlegt, müssen *ALLE* Felder ausgefüllt werden, egal was drin steht, ansonsten schlägt das Anlegen fehl.
SSH-Zugang
Für den root-User sind für folgende User SSH Public Keys von hadar hinterlegt.
root@ldap1 ~ # grep '^PermitRootLogin' /etc/ssh/sshd_config
PermitRootLogin prohibit-password
root@ldap1 ~ # awk '{ print $3 }' < ~root/.ssh/authorized_keys
alvar
binbash
oleander
oleander
xkey
leisefuxx
OpenLDAP
root@ldap1 ~ # grep '^TLS' /etc/openldap/slapd.conf TLSCertificateFile /etc/dehydrated/certs/ldap1.hsmr.cc/cert.pem TLSCertificateKeyFile /etc/dehydrated/certs/ldap1.hsmr.cc/privkey.pem TLSCACertificateFile /etc/dehydrated/certs/ldap1.hsmr.cc/fullchain.pem TLSCACertificatePath /usr/share/ca-certificates/trust-source root@ldap1 ~ # id ldap uid=439(ldap) gid=439(ldap) groups=439(ldap),33(http)
Der ldap-User ist in der http-Gruppe, für welche die Zertifikate lesbar sind, siehe unten.
slapd neuladen
OpenLDAP lauscht auf allen Interfaces mit SSL, siehe ArchWiki und FS#73008.
root@ldap1 ~ # cat /etc/conf.d/slapd SLAPD_URLS="ldaps:///" SLAPD_OPTIONS=
Das Neustarten des OpenLDAP-Servers, slapd, ist z.B. nach dem Erneuern des TLSZertifikats (LE) notwendig.
/etc/openldap/reload.sh
Dies sollte auch nach dehydrated ausgeführt werden, siehe unten.
root@ldap1 ~ # cat /etc/openldap/reload.sh #!/bin/sh chmod 0640 /etc/dehydrated/certs/ldap1.hsmr.cc/* rm -rf /etc/openldap/slapd.d/* slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/ chown -R ldap:ldap /etc/openldap/slapd.d systemctl restart slapd nginx
Bind DN hinzufügen
# Passwort-Hash generieren, schreibt auf stdout
$ slappasswd
# Hier exemplarisch am bbb
$ cat /root/bbb.ldif
dn: cn=bbb,dc=hsmr,dc=cc
objectClass: top
objectClass: person
objectClass: inetOrgPerson
cn: Big Blue Button
sn: BBB
userPassword: {SSHA}XXX
$ ldapadd -x -D 'cn=root,dc=hsmr,dc=cc' -W -f /root/bbb.ldif
# Lese- oder Schreibberechtigung setzen
# Im Block "access to *" neuen Eintrag setzen
$ cat /etc/openldap/slapd.conf
[snip]
access to *
by self read
by dn.base="cn=root,dc=hsmr,dc=cc" write
by dn.base="cn=zammad,dc=hsmr,dc=cc" read
by dn.base="cn=bbb,dc=hsmr,dc=cc" read
by * none
[snip]
$ /etc/openldap/reload.sh
LdapCherry
Leider ist das Projekt tot und basiert auf Python 2, welchem Arch bereits den Todesstoß verpasst hat. Mit OpenLDAP 2.6 ist besondere Leichenfledderei von Nöten:
root@ldap1 ~ # ls -l /usr/lib/libldap_r-2.4.so.2 lrwxrwxrwx 1 root root 19 Jun 5 19:47 /usr/lib/libldap_r-2.4.so.2 -> /usr/lib/libldap.so root@ldap1 ~ # ldconfig
Somit sollte dies dringendst ersetzt werden, nächstes Jahr oder so also.
Web, ACME
Das LdapCherry bindet lokal an den Port 8080. Als HTTPS-Proxy arbeitet dann ein nginx.
Um ACME kümmert sich dehydrated, welches sich per systemd timer aktuell hält.
root@ldap1 ~ # cat /etc/nginx/sites-available/ldap_hsmr_cc.conf
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate_key /etc/dehydrated/certs/ldap1.hsmr.cc/privkey.pem;
ssl_certificate /etc/dehydrated/certs/ldap1.hsmr.cc/fullchain.pem;
ssl_trusted_certificate /etc/dehydrated/certs/ldap1.hsmr.cc/fullchain.pem;
server_name ldap1.hsmr.cc ldap.hsmr.cc;
location / {
proxy_pass http://127.0.0.1:8080/;
}
}
server {
listen 80;
listen [::]:80;
server_name ldap1.hsmr.cc ldap.hsmr.cc;
location / {
rewrite ^(.*)$ https://$host$1 permanent;
}
location ^~ /.well-known/acme-challenge {
alias /etc/dehydrated/well-known;
}
}
root@ldap1 ~ # cat /etc/dehydrated/config
DEHYDRATED_USER=http
DEHYDRATED_GROUP=http
CHALLENGETYPE="http-01"
BASEDIR="/etc/dehydrated"
DOMAINS_TXT="${BASEDIR}/domains.txt"
CERTDIR="${BASEDIR}/certs"
ACCOUNTDIR="${BASEDIR}/accounts"
WELLKNOWN="${BASEDIR}/well-known"
KEY_ALGO=rsa
CONTACT_EMAIL=mail@hsmr.cc
root@ldap1 ~ # cat /etc/dehydrated/domains.txt
ldap1.hsmr.cc ldap.hsmr.cc
root@ldap1 ~ # systemctl cat dehydrated.service
# /usr/lib/systemd/system/dehydrated.service
[Unit]
Description=Check and renew ACME TLS certificates
[Service]
Type=oneshot
ExecStart=/usr/bin/dehydrated -c
# /etc/systemd/system/dehydrated.service.d/override.conf
[Service]
ExecStartPost=/etc/openldap/reload.sh