ssh Zertifikate

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

ssh Zertifikate

Beitrag von scientific » 02.08.2019 21:00:37

Hi Leute!

Kennt ihr schon das relativ neue Feature von ssh - die Certifikate und Principals?

Leider findet man dazu relativ wenig im Netz. Ein paar gute Seite hab ich schon gefunden
https://ef.gy/hardening-ssh
https://framkant.org/2017/07/scalable-a ... tificates/
https://access.redhat.com/documentation ... entication Die hier verwendete Version von ssh-keygen verwendet die Option -Z statt -n wie bei Debian und Fedora um die Principals im Zertifikat festzulegen.

Auf Basis dieser 3 Seiten hab ich mich in das Thema einmal eingearbeitet. Und ich muss sagen, dass klappt ziemlich gut. Ich hab mir ein paar Ansible-Rollen gebaut, um die Hostkeys und auch die Userkeys von ein paar Standardusern auf meinen Servern zu erneuern und zu zertifizieren.

Jetzt bin ich allerdings mit git und gitosis auf ein Problem gestoßen. Gitosis https://github.com/tv42/gitosis arbeitet mit normalen Pubkeys um die Zugriffe auf die Repos eines selbst gehosteten Git-Repos zu organisieren. Man verwaltet die Zugriffe über ein separates Repo und die Konfig darin. Funktioniert ziemlich gut.
Allerdings mit Zertifikaten und Principals geht das nicht. Deshalb hab ich Gitosis aufgebohrt und um Principals erweitert: https://github.com/xundeenergie/gitosis. Damit kann man auch Principals mit Zertifikaten parallel dazu verwenden.

Allerdings gibt es eine Einschänkung an der ich gerade scheitere...

In der sshd_config kann ich entweder

Code: Alles auswählen

AuthorizedPrincipalsFile /etc/ssh/userprincipals/%u
oder

Code: Alles auswählen

AuthorizedPrincipalsCommand    /usr/local/bin/gitosis-authorized-principals %i
verwenden.

Ich hab das auf meinem Git-Server momentan so (nicht funktionierenderweise) implementiert

Code: Alles auswählen

...
...
...
Match User git
    AuthorizedPrincipalsCommandUser git
    AuthorizedPrincipalsCommand    /usr/local/bin/gitosis-authorized-principals %i

Match Host *
    TrustedUserCAKeys /etc/ssh/trusted_usercas
    AuthorizedPrincipalsFile /etc/ssh/userprincipals/%u
EOF
Damit hab ich keine Zugriffe auf meine Git-Repos, da die Option AuthorizedPrincipalsFile zieht und AuthorizedPrincipalsCommand überstimmt.
Selbst wenn das File /etc/ssh/userprincipals/%u leer ist, hab ich keine Zugriffe auf das Git-Repo.
Erst wenn ich AuthorizedPrincipalsFile auskommentiere, kann ich meine git-Repos erreichen. Aber dann kann ich die Principals nicht mehr für den normalen ssh-Zugriff verwenden...

Verschiebe ich AuthorizedPrincipalsFile nach oben, vor die Match-Sections klappt es auch nicht.

Wie müsste ich die sshd_config für den Git-Server gestalten, dass wirklich nur für den User git die AuthorizedPrincipalsCommand ziehen, und für alle anderen User von allen anderen Hosts die AuthorizedPrincipalsFile...

Ich steh grad ein bisserl an...

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: ssh Zertifikate

Beitrag von scientific » 01.09.2019 16:55:14

Übrigens, das ist die Lösung.
Der User git wird mit dem PrincipalsCommand behandelt, alle anderen User greifen auf ein für sie angelegtes AuthorizedPrincipalsFile zu.

Code: Alles auswählen

Match User git
    AuthorizedPrincipalsCommandUser git
    AuthorizedPrincipalsCommand    /usr/local/bin/gitosis-authorized-principals %i

Match User !git,*
    AuthorizedPrincipalsFile /etc/ssh/userprincipals/%u
lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Antworten