Jailed - Chrooted SSH Git Repository unter Debian 8 mit User-Gruppen-Rechteverwaltung

Aus Carl-Christian Sautter - Wiki
Wechseln zu: Navigation, Suche

Git Jail Installieren

  • Git installieren
  • Verzeichnisse /var/git-auth und /var/git-jail erstellen
  • Datei /etc/ssh/sshd_config anpassen
Match Group git
    PasswordAuthentication no
    ChrootDirectory /var/git-jail/
    X11Forwarding no
    AllowTcpForwarding no
    AuthorizedKeysFile  /var/git-auth/%u.key
  • Jailkit als Debian Paket installiern (Immer die aktuellste Version verwenden!)
$ sudo apt-get install build-essential autoconf automake libtool flex bison debhelper binutils-gold
wget http://olivier.sessink.nl/jailkit/jailkit-2.XX.tar.gz
tar -vxzf jailkit-2.16.tar.gz
$ cd jailkit-2.16/
$ sudo ./debian/rules binary
$ cd ..
$ sudo dpkg -i jailkit_2.16-1_amd64.deb
  • Jailkit Config bearbeiten
[git]
paths = /usr/bin/git*, /usr/lib/git-core*, /usr/share/git-core*, /usr/bin/basename, /bin/uname, /usr/bin/pager, /var/lib/git*
......
[locales]
paths = /usr/share/locale*, /usr/share/i18n/charmaps*, /usr/share/i18n/locales*, /usr/share/i18n/locales, /usr/share/i18n/SUPPORTED, /usr/lib/locale, /usr/sbin/locale-gen, /etc/locale.alias, /usr/bin/locale, /var/lib/locales*, /var/lib/belocs*
  • Jail initalisieren
jk_init -v /var/git-jail netutils basicshell jk_lsh ssh sftp extendedshell editors git scp locales

Git Repository vorbereiten

  • Gruppe für neues Git Repository erstellen z.B. „git-group“
groupadd git-group
  • User „git-user“ mit der Primären Gruppe Git erstellen und die sekundäre Gruppe „git-group“ hinzufügen
adduser --home /home/git-exasol --ingroup git --no-create-home --shell /usr/bin/git-shell --disabled-password git-exasol
usermod -aG git-group git-user
  • Homeverzeichnis im Jail anlegen z.B. „/var/git-jail/home/git-user“
  • Homeverzeichnis für User „git-user“ auf /home/git-user setzen
  • Standard Shell auf die git-shell setzen „/usr/bin/git-shell“
  • Verzeichnis „/var/git-jail/home/git-user/git-shell-commands“ anlegen

Git Reypository initalisieren

  • Git Repository Verzeichnis anlegen z.B. „/var/git-jail/repos/git-group“
  • Rechte setzen:
mkdir git-group
chown root:git-group git-group
chmod 770 git-group
chmod og+s git-group
setfacl -Rdm u:root:rw,g:git-group:rw,o:- git-group
  • Rechte auf Sticky setzen und den User root und die Gruppe git-group setzen, anderen Usern die Rechte entziehen (besser mit ACL)
  • Git Verzeichnis initalisieren (übliche Befehle)

SSH Key Authentifizierung

  • Public Key vom entfernten Host in die Datei „/var/git-auth/git-user.key“ kopieren.
  • Nun kann der Login über das Kommando ssh git-user@gitserver.test geprüft werden.