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 ;-)
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
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