Bug 20138 - Normalen Benutzern den Zugriff auf Domänencontroller verweigern
Normalen Benutzern den Zugriff auf Domänencontroller verweigern
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: PAM
UCS 2.3
Other Linux
: P5 enhancement (vote)
: UCS 3.0 - MS1
Assigned To: Felix Botner
Janek Walkenhorst
:
: 6446 (view as bug list)
Depends on: 23001 23383
Blocks:
  Show dependency treegraph
 
Reported: 2010-09-27 14:14 CEST by Moritz Muehlenhoff
Modified: 2023-09-07 15:01 CEST (History)
4 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Moritz Muehlenhoff univentionstaff 2010-09-27 14:14:01 CEST
Standardmässig kann sich jeder UCS-Benutzer auf jedem Domänencontroller anmelden. Ich denke es wäre sinnvoll mittelfristig in der Grundeinstellung die Anmeldung per SSH und lokal nur noch für root und die Mitglieder der Gruppe "Domain Admins" zu erlauben. Das ganze könnte per UCR konfigurierbar sein, so dass etwa auf UCS-Terminalservern die Anmeldung wieder erlaubt wird.

Dies macht es deutlich schwieriger einen lokalen root-Exploit auszunutzen.
Comment 1 Stefan Gohmann univentionstaff 2011-05-06 15:08:28 CEST
Bitte auch direkt univention-pam übernehmen.
Comment 2 Felix Botner univentionstaff 2011-05-09 12:51:07 CEST
univention-pam nach 3.0 übernommen
Comment 3 Felix Botner univentionstaff 2011-05-09 15:41:13 CEST
Ziel: Benutzern Zugriff per ssh auf DomainController verhindern. Es müssen aber ,z.B. für den Join von Rechnern, spezielle Gruppen weiterhin Zugriff haben (Computers).

Es gibt bereits die Möglichkeit den ssh Zugriff auf "Admin" Benutzer einzuschränken -> auth/admin/services (es wird dann für das Modul "admin-account" mit der Access Konfiguration "access-admin.conf" verwendet). Dann haben jedoch die Rechner-Gruppen keinen Zugriff mehr und das Joinen schlägt fehl.

Die Rechner-Gruppen kann man aber auch nicht in die allgemeine "access-admin.conf" eintragen, da dies dann für alle Dienste aktiv wäre.

Variante 1

Wir geben eine "auth/sshd/accessfile" Datei vor, die den Zugriff für die Rechner-Gruppen erlaubt. Diese Datei wird unabhängig von auth/admin/services bzw. auth/user/services eingebunden. Dann braucht man aber wieder eine extra Konfiguration für das default "auth/sshd/accessfile", es soll ja weiterhin die Möglichkeit geben, Benutzern den Zugriff per ssh zu erlauben. Außerdem wäre dann die ssh Einstellung in auth/admin/services bzw. auth/user/services sinnlos. 

Variante 2

Für den ssh Dienst wird im "Admin Modus" eine eigene "admin-account" mit einer eigenen "access-admin.conf" verwendet, die dann den Zugriff für Administratoren und Rechner-Gruppen zulässt. Das hätte den Vorteil, dass weiterhin "auth/admin/services" bzw. "auth/user/services" verwendet werden könnte. In normalen Modus darf jeder ssh verwenden, im "Admin" Modus dann alle Administratoren und Rechner. Alle anderen Dienste verwenden aber weiterhin die Standard "admin-account" Konfiguration. Nachteil hier: Eigenes Pam Konfiguration/anderes Template für den ssh Dienst.

Variante 3

...
Comment 4 Felix Botner univentionstaff 2011-05-09 15:44:54 CEST
Vielleicht schmeißt man diese PAM admin/common Konfiguration für die Dienste auch komplett weg und macht alles über UCR

pam/ssh/allow
pam/ssh/deny
pam/ftp/...
pam/login/...
...
Comment 5 Stefan Gohmann univentionstaff 2011-05-10 08:26:56 CEST
Wir sollten hier den generischen Ansatz umsetzen:

Beispiele:

# nur root und Domain Admins und DC Backup Hosts dürfen sich per ssh anmelden
auth/ssh/restrict=yes
auth/ssh/user/root=allow
auth/ssh/group/Domain Admins=allow
auth/ssh/group/DC Backup Hosts=allow

# am GDM dürfen sich alle anmelden, access.conf-Datei wird in diesem Fall nicht eingebunden
auth/gdm/restrict=no

# per login darf sich nur root anmelden
auth/login/restrict=yes
auth/login/user/root=yes

Somit kann man einfach Gruppen den Zugriff erlauben bzw. verwehren und kann auch ganz einfach die Limitierung für einen Dienst global an- / abschalten.
Comment 6 Felix Botner univentionstaff 2011-06-03 09:54:15 CEST
Es soll nur noch ein PAM Schema common-* geben, admin-* und deny-* entfällt. Es gab ein paar kleinere Unterschiede zw. common- und admin- die nun in common- zusammengeführt wurden:

Aus admin-* nach common-* übernommene Änderungen:

* + auth requisite pam_securetty.so in common-auth
* + default "die" anstatt "bad" in 

    auth [default=die] pam_runasroot.so program=/usr/lib/univention-pam/lock-user

    in common-auth ("die" war default in admin.auth)

* + minlen=8 in

    password requisite  pam_cracklib.so minlen=8

    in common-password (wurde in admin-password gesetzt)

Nicht übernommene Änderungen:

* - für pam_krb5, pam_ldap und pam_winbind in common-auth ist der default wie 
    bisher "<unknown>",  nicht "<fail>" wie in admin-auth

* - die winbind und krb5 session wurde in admin-session nicht verwendet, bleibt 
    aber in common-session
Comment 7 Felix Botner univentionstaff 2011-06-03 09:58:49 CEST
aus auth/admin/methods und auth/user/methods wird auth/methods
Comment 8 Felix Botner univentionstaff 2011-06-03 10:03:53 CEST
minlen=8 in common-password entfällt (war nur für root, andere Benutzer bekommen die Passwort-Richtlinie der Domäne).
Comment 9 Felix Botner univentionstaff 2011-06-03 10:46:57 CEST
auth requisite pam_securetty.so in common-auth entfällt auch erstmal, da sich sonst root nicht per ssh anmelden kann. /etc/securetty ist i.M. noch kein Template, sodass dort erst händisch ssh aufgenommen werden müsste. Falls dies irgendwann ein Template wird und ssh dort standardmäßig aktiviert wird, könnte man pam_securetty.so in common-auth  wieder aufnehmen.
Comment 10 Felix Botner univentionstaff 2011-06-03 13:08:35 CEST
Alle (PAM) Dienste verwenden nun die common-* Dateien. Außerdem wird eine pam_access Konfiguration eingebunden, falls auth/DIENST/restrict gesetzt ist. Damit wird dann erstmal alles verboten. Mit auth/DIENST/group/GRUPPE=yes, auth/DIENST/user/USER=yes und auth/DIENST/accessfile kann man das verhalten dann anpassen.

Die Defaults wurden soweit aus 2.4 übernommen, außer bei sshd und login. Dies dürfen nun nur noch "Administrators", "Domain Admins", "root" und bei sshd "Computers" (domain join) verwenden.

Die Variablen auth/user/services und auth/admin/services gibt es nicht mehr. auth/user/methods und auth/admin/methods sind zu auth/methods zusammengeführt.

Es sind nun noch weitere Pakete anzupassen, die PAM Einstellungen setzen/erzeugen.
Comment 11 Felix Botner univentionstaff 2011-06-03 13:36:38 CEST
In univention-server debian/univention-mobile-client.postinst, debian/univention-managed-client.postinst und check_connection entsprechend abgepasst.
Comment 12 Felix Botner univentionstaff 2011-06-03 13:51:09 CEST
PAM Konfig Template in univention-management-console angepasst (auth/user/methods -> auth/methods).
Comment 13 Felix Botner univentionstaff 2011-06-06 11:04:10 CEST
Auf domaincontroller* Rechnern wird sshd nun per 

   univention-config-registry set \
        auth/sshd/restrict?"yes" \
        "auth/sshd/group/Domain Admins?yes" \
        auth/sshd/group/Computers?"yes" \
        auth/sshd/group/Administrators?"yes" \
        auth/sshd/user/root?"yes"

auf Admins beschränkt. Auf Terminalservern muss dann auth/sshd/restrict entsprechend auf no gesetzt werden.

Es sollte ausführliche Hinweise in den Release Notes geben. Changelog Eintrag vorhanden.
Comment 14 Janek Walkenhorst univentionstaff 2011-07-11 17:55:09 CEST
Wie ist die Migration beim Update von den alten UCRV auth/user/services auf die neuen UCRV zu lösen? (Automatisch im postinst, oder manuell? Im univention-pam oder in jedem Paket einzeln?)
Comment 15 Moritz Muehlenhoff univentionstaff 2011-07-12 08:30:40 CEST
(In reply to comment #14)
> Wie ist die Migration beim Update von den alten UCRV auth/user/services auf die
> neuen UCRV zu lösen? (Automatisch im postinst, oder manuell? Im univention-pam
> oder in jedem Paket einzeln?)

Am besten in univention-lib. Für die Migration von UCR-Variablen hatte ich bereits 22611 angelegt. Das werden wir auch in mehreren anderen 3.0-Paketen benötigen.
Comment 16 Janek Walkenhorst univentionstaff 2011-07-14 16:43:28 CEST
Im Moment funktioniert die ldap-Authentifizierung nicht, wenn Kerberos nicht läuft, weil die entsrpechenden Paramter auf "die" stehen.
Comment 17 Felix Botner univentionstaff 2011-07-14 17:18:56 CEST
(In reply to comment #16)
> Im Moment funktioniert die ldap-Authentifizierung nicht, wenn Kerberos nicht
> läuft, weil die entsrpechenden Paramter auf "die" stehen.

Das ist auch schon mit 2.4 so, daher sollte das (wenn überhaupt) über einen neuen Bug gelöst werden -> Bug #23024
Comment 18 Felix Botner univentionstaff 2011-07-25 11:46:07 CEST
(In reply to comment #14)
> Wie ist die Migration beim Update von den alten UCRV auth/user/services auf die
> neuen UCRV zu lösen? (Automatisch im postinst, oder manuell? Im univention-pam
> oder in jedem Paket einzeln?)

Wird alles per Doku / Release Notes gemacht.
Comment 19 Arvid Requate univentionstaff 2011-07-26 13:41:39 CEST
Der Join von Systemen des Typs domaincontroller_slave funktioniert damit zur Zeit nicht mehr, da diese nicht in der Gruppe "Computers" sind (Download der SSL-Zertifikate schlägt fehl).

Vermutlich wäre das Beste univention-server-join so anzupassen, dass Slaves zusätzlich in die Gruppe "Computers" aufgenommen werden, und für Update-Szenarien etwas ähnliches im Postup zu machen.

Wenn das aus irgendeinem Grund nicht sinnvoll sein sollte, dann müsste entweder branches/ucs-3.0/ucs/base/univention-pam/conffiles/etc/security/access-sshd.conf angepasst werden oder zumindest im postinst von univention-pam
  univention-config-registry set auth/sshd/group/"DC Slave Hosts"?true
gesetzt werden.
Comment 20 Felix Botner univentionstaff 2011-07-27 11:14:57 CEST
(In reply to comment #19)
> Der Join von Systemen des Typs domaincontroller_slave funktioniert damit zur
> Zeit nicht mehr, da diese nicht in der Gruppe "Computers" sind (Download der
> SSL-Zertifikate schlägt fehl).
> 
> Vermutlich wäre das Beste univention-server-join so anzupassen, dass Slaves
> zusätzlich in die Gruppe "Computers" aufgenommen werden, und für
> Update-Szenarien etwas ähnliches im Postup zu machen.
> 
> Wenn das aus irgendeinem Grund nicht sinnvoll sein sollte, dann müsste entweder
> branches/ucs-3.0/ucs/base/univention-pam/conffiles/etc/security/access-sshd.conf
> angepasst werden oder zumindest im postinst von univention-pam
>   univention-config-registry set auth/sshd/group/"DC Slave Hosts"?true
> gesetzt werden.

Ssh auf DC's wird nun auch für die Gruppen "DC Slave Hosts", "DC Backup Hosts" und Computers erlaubt.
Comment 21 Arvid Requate univentionstaff 2011-08-11 12:47:56 CEST
In UCS 3.0-0 MS1 funktioniert ssh per Kerberos-Ticket nicht mehr ohne Angabe der Client-Option "-K". Ursache ist, dass in /etc/univention/templates/files/etc/ssh/ssh_config noch auth/user/methods ausgelesen wird. Das müsste durch auth/methods ersetzt werden. Das Template kommt aus univention-base-files/conffiles/ssh/ssh_config.
Comment 22 Felix Botner univentionstaff 2011-08-15 09:35:32 CEST
(In reply to comment #21)
> In UCS 3.0-0 MS1 funktioniert ssh per Kerberos-Ticket nicht mehr ohne Angabe
> der Client-Option "-K". Ursache ist, dass in
> /etc/univention/templates/files/etc/ssh/ssh_config noch auth/user/methods
> ausgelesen wird. Das müsste durch auth/methods ersetzt werden. Das Template
> kommt aus univention-base-files/conffiles/ssh/ssh_config.

Wurde in univention-base-files entsprechend angepasst. Andere Stellen an denen auth/admin/methods und auth/user/methods noch verwendet werden, konnte ich nicht finden.
Comment 23 Janek Walkenhorst univentionstaff 2011-09-01 15:47:00 CEST
Funktioniert:

Join von Backup, Slave, Member, Managed, Mobile funktioniert.

Auf allen DC wird ssh für normale Benutzer abgelehnt.

Das root Passwort muss einen minimale Länge haben.

ssh per Kerberos funktioniert auch ohne -K.


Funktioniert nicht:
Die Beschreibungen der UCRV sind für auth/*/group/* etc.
Comment 24 Felix Botner univentionstaff 2011-09-01 17:30:14 CEST
(In reply to comment #23)
> Funktioniert:
> 
> Join von Backup, Slave, Member, Managed, Mobile funktioniert.
> 
> Auf allen DC wird ssh für normale Benutzer abgelehnt.
> 
> Das root Passwort muss einen minimale Länge haben.
> 
> ssh per Kerberos funktioniert auch ohne -K.
> 
> 
> Funktioniert nicht:
> Die Beschreibungen der UCRV sind für auth/*/group/* etc.

angepasst
Comment 25 Janek Walkenhorst univentionstaff 2011-09-01 17:54:26 CEST
(In reply to comment #24)
> (In reply to comment #23)
> > Funktioniert nicht:
> > Die Beschreibungen der UCRV sind für auth/*/group/* etc.
> angepasst
Stimmt

Changelog OK
Comment 26 Sönke Schwardt-Krummrich univentionstaff 2011-12-13 15:49:15 CET
UCS 3.0-0 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer
neueren Version von UCS erneut auftreten, so sollte dieser Bug dupliziert
werden: "Clone This Bug"
Comment 27 Stefan Gohmann univentionstaff 2012-06-07 11:54:37 CEST
*** Bug 6446 has been marked as a duplicate of this bug. ***