bionic-Client: adsso.conf, Icons und verschlüsselte Verbindung mit Zertifkat

Hej,
ich bin jetzt wieder zu Hause. Und kann den ersten Teil (Anpassung der 00_userinfo.sh) von hier aus schlecht testen. Ich habe aber gestern viel dazu ausprobiert - und das mit den Kontexten war auch ein Problem wenn ich das Skript dadurch ausgeführt habe, dass ich mich ab- und wieder angemeldet habe.
Ich fand dann jeweils Dateien. /tmp/krb5cc_0_rAndOM , also mit der Null für root in der Mitte…

BTW: Ich bekomme über sudo -u USER env die Variable $KBRCCNAME. Es sind zwar deutlich weniger Umgebungsvariablen per sudo, aber $KBRCCNAME war dabei. Habe das aber nicht weiter verfolgt.

Egal stellen wir das mal beiseite, weil das ja auch nicht @Michael s Problem zu sein scheint.

Danke, dass Du dich der Sache annehmen willst.

Also: Ich habe externe Domain = interne Domain. Ich lasse das LE-Zertifikat mit certbot direkt auf dem pädagogischen Server erstellen. Ein deploy-hook (/etc/letsencrypt/renewal-hooks/deploy/copy_certs.sh) schiebt die Zertifikate an die richtige Stelle. Das Script habe ich von @Michael für meine Zwecke angepasst…

#!/bin/bash
#set -x

################################################
# Scriptname :    copy_certs.sh
# Author     :    Michael_Hagedorn, Michael Sedding
# Date       :    2020-09-05
# Category   :    geeignet für linuxmuster 7.x
# Version    :    VER='1'

# Dieses Script kopiert die vom certbot erstellten Zertifikatsdateien in das Standard-LMN-Verzeichnis für Zertifikate.
# Anschließend wird die WebUI neu gestartet, so dass eine gesicherte Verbindung zum Server mit gültigem Zertifikat möglich ist.
# Das Skript sollte beim von certbot als "deploy-hook" aufgerufen werden.
# Dafür sollte es reichen, das Script in /etc/letsencrypt/renewal-hooks/deploy/ abzulegen
# Altenativ kann man auch den Cronjob anpassen.  /etc/cron.d/certbot ist so anzupassen:
# 0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew --deploy-hook /path/to/the/script/copy_certs.sh

################################################

#Variablen:
host="server.meine-domain.de"
lepath="/etc/letsencrypt/live/"
lmncertpath="/etc/linuxmuster/ssl"
filenameprefix="server.le"

# Let's go:
cd $lepath/$host/

# Make bundle for ajenti
cat fullchain.pem privkey.pem > $lmncertpath/$filenameprefix.cert.bundle.pem

# Make copies of the relevant files for samba
cp fullchain.pem $lmncertpath/$filenameprefix.fullchain.pem
cp chain.pem $lmncertpath/$filenameprefix.chain.pem
cp privkey.pem $lmncertpath/$filenameprefix.privkey.pem
#cp chain.pem /var/lib/samba/sysvol/$host/tls/cacert.pem

# Adjust group and filepermissions
chown root:ssl-cert $lmncertpath/$filenameprefix.*
chmod 640 $lmncertpath/$filenameprefix.cert.bundle.pem
chmod 640 $lmncertpath/$filenameprefix.fullchain.pem
chmod 640 $lmncertpath/$filenameprefix.chain.pem
chmod 600 $lmncertpath/$filenameprefix.privkey.pem



# Restart WebUI
systemctl restart linuxmuster-webui

#EOF

Die Zertifikate sind über die /etc/samba/smb.conf.admin-include-Datei in Samba eingetragen. Siehe oben: bionic-Client: adsso.conf, Icons und verschlüsselte Verbindung mit Zertifkat - #33 von sedding

In der WebUI hatte ich das damals auch „scharfgeschaltet“. In der /etc/ajenti/config.yml steht deshalb u.a. das:

ssl:
  certificate: /etc/linuxmuster/ssl/server.le.cert.bundle.pem
  client_auth:
    certificates: []
    enable: false
    force: false
  enable: true
  fqdn_certificate: /etc/linuxmuster/ssl/server.le.cert.bundle.pem

Was nicht automatisch passiert, ist dass die chain.pem auch noch nach /var/lib/samba/sysvol/[FQDN]/tls/cacert.pem kopiert wird. Weil:
a) war mir nicht klar, dass sich das CA-Zertifikat manchmal ändert.
b) kommt das m.W. eh nur auf den Client, wenn man ein linuxmuster-client-adsso-setup ausführt… Korrekt?

Soweit viele Grüße
Michael

Hallo,

Schnell gelesen kann das Skript nicht so funktionieren : zumindest soll samba neu starten um das veränderte Zertifikat neu zu laden.

Gruß

Arnaud

Das wäre natürlich suuuuper, wenn es daran liegt!! Kann es gerade nicht ändern – bin afk.
Aber das würde manche Seltsamkeit erklären, auch das „mal geht’s und mal nicht“…

Hallo,

Ich habe mal ein LE-Zertifikat bei mir getestet, und ich kann folgende bestätigen :

  • nach Änderung von smb.conf auf dem Server, muss der Samba Service neu gestartet sein,
  • die Rechte von privkey.pem müssen 0600 sein, ansonstens „startet“ LDAPS nicht,
  • mit dieser Änderung ist ldbsearch nicht mehr fähig ein Ldaps Anfrage am Server zu machen : als Konzequenz sind die Share gemountet, aber adsso kann nicht die symbolische Linke erstellen, und die Shares tauchen nicht mehr auf im User’s Home,
  • um es zu korrigieren, soll man chain.pem auf dem Linuxclient als /var/lib/samba/private/tls/DOMAIN.pem kopieren mit richtigen Rechte. Dieser Datei chain.pem ändert sich bei LE kaum, kann man im cloop lassen.

Natürlich müssen auch die Uhrzeit + DNS stimmen.

Damit hat bei mir alles geklappt.

Letztens : das ist nach meiner Meinung kein Bug von adsso, aber eher eine persönnliche Anpassung, die nicht richtig konfiguriert ist.

Gruß

Arnaud

1 „Gefällt mir“

Super, dass du das nachvollziehen konntest und den Fehler finden konntest.

Hallo,

sprach ich … und machte ich.
Dummerweise hab ich ein echt schlechtes Gedächtnis: so war ich doch überrascht, als mir Ende Januar gemeldet wurde, dass sich niemand mehr in der Schulkonsole(WebUI) anmelden konnte …
Da ging dann das Suchen los. Zum Glück half mir Arnaud und nach ein paar Tagen fanden wir dann den Eintrag.
Ich hab wieder „no“ reingeschrieben und die WebUI funktionierte wieder…
… für euch zur Info: nur falls auch mal jemand da auf „yes“ stellen will …

LG

Holger

Hi.
Dieser Thread wird „allmählich“ etwas unübersichtlich … aber ich versuche mein Glück.

Holger (@baumhof) , ich habe bei mir auch weiterhin „No“ in der smb.conf stehen. Das ist in Ordnung so.

Arnaud (@arnaud),

  • ich habe das Script, das die LE-Zertifikate an die richtigen Stellen schiebt, vorhin um den Eintrag systemctl restart samba-ad-dc.service erweitert. Das Script läuft hier nachts einmal im Monat.
  • Die Rechte der Keys (0600) macht das Script ja schon richtig.
  • Dass ldbsearch mit gültigem LE-Cert das s nicht mehr verträgt, ist nicht so schlimm – wenn man es weiß. Aber es wäre schon interessant zu erfahren, ob die Anmeldescripte in der Paketverwaltung da künftig das s drin haben sollten oder nicht? Ich weiß nicht, wie viele Installationen hier mit und wie viele ohne TLD als Domainname installiert wurden. (Als ich die v7 Ende 2019 installiert habe, hieß es, dass man ein paar Vorteile hat, wenn man das so macht – aber im Nachhinein betrachtet, hätte ich das besser lassen sollen…)
  • Und nur so aus Interesse: Warum klappt es mit s, wenn man ein Snakeoil-Cert nimmt?
  • Deinen letzten Punkt verstehe noch nicht ganz: Kannst du das mit der chain.pem nochmal genauer sagen?
  • Uhrzeit und DNS müssten hier passen – die Abweichungen, die Michael (@sedding) bei sich festgestellt hatte, habe ich hier imho nicht.

Jetzt habe ich hoffentlich alle offenen Fragen erwischt.
Bis später – viele Grüße,
Michael

Hallo Michael,

ldbsearch verwendet sein eigener Mechanismus um die Ldapverbindung aufzubauen und soll das Zertifikat überprüfen, dafür braucht er den CAFile von Let’s Encrypt, d.h. chain.pem.
Das funktioniert wahrscheinlich mit dem Snake-Oil ( ich weiß nicht genau was Snake-Oil ist ), weil es auch ein Art selbst-signiert ist, und dafür reicht vielleicht den cacert.pem als CAfile.

Man kann die Anfrage per ldap anstatt ldaps machen, aber muss es per Kerberos-Authentifizierung laufen, ansonstens ist es nicht sicher.

Gruß

Arnaud

Hallo Michael,

SSH-Tunnel + VNC machen es möglich von zu Hause, aber da steht die Gefahr, seine Wochenende zu zerschiessen.

Gruß

Arnaud

Hej,

Ich denke, den Punkt verstehe ich. Das heißt die CA-Zertifikatstkette von LE muss auf den Client.

Das passiert bei einer Domänenaufnahme automatisch, da wird die Datei vom Server (/var/lib/samba/sysvol/meine-schule.de/tls/cacert.pem) auf dem Client abgelegt (als /var/lib/samba/private/tls/meine-schule.pem).

Bitte korrigiert mich, wenn ich das falsch verstanden habe.

Das cacert sollte sich eigentlich nicht sehr oft ändern, tut es aber halt zumindest manchmal.
Deshalb wäre es vermutlich sinnvoll, dass man das richtige Zertifikat noch direkt auf den Client bringt.
Entweder manuell, was @Arnaud empfiehlt, oder vielleicht automatisiert per Postsync…

Ich habe gerade meine Version des Scripts um diese Zeilen ergänzt

# Make copies of the CA-certificate for the client
cp chain.pem /var/lib/samba/sysvol/$domain/tls/cacert.pem
if [ ! -d "/srv/linbo/linuxmuster-client/$cloopname/var/lib/samba/private/tls/" ]; then
  mkdir -p /srv/linbo/linuxmuster-client/$cloopname/var/lib/samba/private/tls/
fi
cp chain.pem /srv/linbo/linuxmuster-client/$cloopname/var/lib/samba/private/tls/$domain.pem

Bitte um Kontrollblick. Funktioniert so natürlich erst mal nur mit einem einzelnen cloop. Sind die Dateiberechtigungen hier wichtig? Auf dem Client hat die /var/lib/samba/private/tls/$domain.pem derzeit 755.

Grüße
Michael

Hej, kurz OT:

Da sagst Du was! Das ist die nächste Baustelle. Im Moment tunnele ich mich per SSH zu einem XOA im grünen Netz durch und habe dort einen virtuellen Testclient. Aber das zeigt ganz komische Effekte (Z.B. kann ich den Client nicht mit Linbo syncen, weil der abrupt und unvermittelt aufhört sich das Image zu holen)
Langer Rede kurzer Sinn. Sobald Zeit ist, will ich das VNC aufsetzen.
Grüße und nochmal Danke für die Antworten.
Michael

Hier steht, woher der Begriff kommt

Hallo,

für Arnaud:

https://woerterbuch.reverso.net/deutsch-franzosisch/Schlangenöl

Also: remède miracle

LG

Holger

Hi Michael.
Ok – dann passt aber noch etwas nicht zusammen, denn die Datei unter
[root@server:/var/lib/samba/sysvol/meine-schule.de/tls]$ cacert.pem ist bei mir von 2019 und stammt von daher von der Erstinstallation.

Ich müsste daher vorher vermutlich noch eine Kopie (oder reicht auch ein Symlink?) von /etc/linuxmuster/ssl/cacert.pem (aktuell vom 15.02.) --> /var/lib/samba/sysvol/meine-schule.de/tls/ anlegen, richtig??

Da bin ich aber wirklich froh, dass wir nah an einer Lösung des Problems sind!
Viele Grüße,
Michael

Hej,

Ich habe das noch nicht getestet. Aber genauso hatte ich das:

verstanden.

Es spricht vermutlich nichts gegen einen Symlink. Ich habe es in unserem Skript (siehe oben) einfach kopiert:

cp chain.pem /var/lib/samba/sysvol/$domain/tls/cacert.pem

Das eigentliche Problem ist ja aber, dass die Datei zeitnah nach einem renewal auf die Clients muss… Falls dir da was besseres einfällt als wie oben per postsync, dann sag Bescheid…

Das Ganze würde tatsächlich auch erklären, warum unser Problem am Anfang des Jahres aufgetreten ist. Die cacert.pem hat sich bei mir auf dem Server am 31.12. geändert… Auf den Clients war noch die alte…

Grüße
Michael

Ok – ich habe es gerade auch so gemacht und wundere mich nur noch über Rechte und Besitzer. Der Vergleich zeigt:

-rwxrwx---+ 1 root BUILTIN\administrators 1359 Sep 14  2019 cacert.pem
wohingegen 
-rw-r-----+ 1 root root                   1587 Feb 20 17:49 cacert.pem

Hast du die Gruppenmitgliedschaft und Leserechte auch geändert?

Ja, das stimmt – das würde bedeuten, dass man häufig/immer sync. starten muss. Vielleicht wäre für diesen speziellen Fall ja auch die neue Möglichkeit des Pre-Start möglich, die Thomas neulich im discourse vorgestellt hatte?? Wenn ich das richtig verstanden habe, könnte man das vor einem Sync nutzen…?

Was meinst du?
Viele Grüße,
Michael

Hej,

Darüber habe ich mich auch gewundert. Allerdings hatte schon mein letztes Zertifikat schon root:root
weshalb ich dem keine Bedeutung zugemessen habe.
Dateirechte hatte ich wohl mal geändert…

-rwxrwx---+ 1 root root                   1586 Feb 20 11:38 cacert.pem*
-rwxrwx---+ 1 root root                   1359 Sep  8 06:54 cacert.pem.bkp-ms*

Hmm. Vermutlich. Aber auch das löst das Problem nicht - denn am Kabel muss man das Gerät ja dann trotzdem starten, oder geht inzwischen WLAN-Linbo und ich habe das verpasst…?

Grüße
Michael

… was mich an der Sache noch wundert: Wir sprechen hier von der Datei cacert.pem – aber Dominik meint im Parallelthread offenbar eigentlich die chain.pem (den Dateinamen habe ich so nicht im LE-Bundle dabei!)

Hej,
das gehört m.W. so. Dominik hat das so absichtlich geschrieben: die chain.pem aus dem LE-Dateien in das …/sysvol/…/tls-Verzeichnis als cacert.pem` kopieren.

Auf den Inhalt kommt es an:. Es handelt sich beidesmal um das CA-Zertifikat aus der keychain.
Grüße
Michael

Ok, – nur um es nochmal gegen zu checken:
ich habe im LE-Zertifikat die Datei ca.cer die in cacert.pem umbenannt wird. Genau diese Datei ist gemeint, ja? Das wundert mich etwas, da Dominik von der chain.pem schreibt …