OpenSSH chroot

Version 0.1

Indhold

  1. Download og kompilering
  2. Opret root-environment
  3. Konfigurere brugere
  4. Links
  5. TODO

Download og kompiler

Hent og kompiler en patched udgave af openssh fra:
http://chrootssh.sourceforge.net/download/

Opret root-environment

Et root-environment er den struktur som brugeren har adgang til naar systemet benyttes. Dette environment starter fra en rod '/', som man kender det under almindelig brug af *nix-systemer. Normalt benytter man sig af systemets root-environment, men det er muligt at aendre dette for brugere. Dette giver mulighed for at lade en bruger leve i en underdel af det egentlige system - isoleret fra omverdenen. Det er dette openssh-chroot udnytter ved at henvise udvalgte brugere til et isoleret environment, og dermed, i princippet, forhindre adgang til den resterende del af systemet.

Foerst oprettes en mappe, som skal indeholde det nye environment (herefter $CHROOTPATH$). Herefter Kopieres de kommandoer som skal vaere tilgaengelige fra det nye environment ind i den nye mappe, saa de ligger efter rette struktur.

F.eks. cp /bin/ls /bin/cp $CHROOTPATH$/bin/

Hvis det oenskes at brugere kun skal have adgang gennem sftp, skal sftp-serveren ogsaa kopieres ind i det environment. Stien til sftp-server kan findes i 'sshd_config' i linien som starter med prefikset 'Subsystem sftp'. Brug stien som efterfoelger dette.

	f.eks. Subsystem sftp /usr/lib/openssh/sftp-server). 

Brug blot den nyligt kompilerede 'sftp-server'.

f.eks. cp $OPENSSHCHROOTPATH$/sftp-server $CHROOTPATH$/usr/lib

Herefter skal alle libraries som kommandoer i de nye environment afhaenger af tilfoejes til det nye environment. Disse findes med 'ldd' (man ldd).

	f.eks. ldd $CHROOTPATH$/bin/ls

Giver foelgende output:

      linux-gate.so.1 =>  (0xffffe000)
      librt.so.1 => /lib/tls/librt.so.1 (0xb7f2d000)
      libacl.so.1 => /lib/libacl.so.1 (0xb7f25000)
      libselinux.so.1 => /lib/libselinux.so.1 (0xb7f11000)
      libc.so.6 => /lib/tls/libc.so.6 (0xb7dd9000)
      libpthread.so.0 => /lib/tls/libpthread.so.0 (0xb7dc7000)
      /lib/ld-linux.so.2 (0xb7f4d000)
      libattr.so.1 => /lib/libattr.so.1 (0xb7dc2000)
      libdl.so.2 => /lib/tls/libdl.so.2 (0xb7dbe000)
      libsepol.so.1 => /lib/libsepol.so.1 (0xb7d84000)

Dette giver en liste over de libraries og deres korrekte sti. Kopier disse ind i environmentet efter samme fremgangsmaade som benyttet ovenfor, hvor kommandoer blev tilfoejet. Husk at det er _alle_ noedvendige libraries som skal tilfoejes, altsaa ogsaa dem f.eks. /usr/lib/sftp-server afhaenger af.

Naar dette beskidte arbejde er gjort kan det nye environment testes. Skift til en super user, og koer kommandoen:

	chroot $CHROOTPATH$ $KOMMANDOER SOM SKAL UDFOERES$

f.eks. chroot /home/chroot /bin/sh
eller  chroot /home/chroot /usr/lib/sftp-server

Hvis dette virker skulle dit nye environment vaere klar til brug.

Konfigurere brugere

Openssh-chroot benytter sig af et magisk token '.' (et punktum) for at bestemme hvornaar en bruger skal overfoeres til et andet environment ved login. Det magiske token indsaettes i den sti som henviser til brugerens home dir. Formatet er som foelger:

$CHROOTPATH$/.$USER_HOMEDIR$

f.eks. /home/chroot/./home/chroot/home/my_user

Naar brugeren er oprettet, som man normalt vil foretraekke det (se 'man adduser'). For at aendre en bruges home dir aendres der i filen '/etc/passwd', som indeholder diverse informationer om de forskellige brugere (se 'man 5 passwd'). Et eksempel paa linier fra filen er foelgende:

	root:x:0:0:root:/root:/bin/bash
	nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
	nemo:x:1000:1000::/home/nemo:/bin/bash
	sshd:x:100:65534::/var/run/sshd:/bin/false

Den - i dette tilfaelde - interessante del er stien umiddelbart foer det sidste ':', der peger paa den tilsvarende brugers home dir.

Denne sti aendres nu til en som overholder formatet omtalt ovenfor.

	f.eks. nemo:x:1000:1000::/home/nemo:/bin/bash
til    nemo:x:1000:1000::/home/chroot/./home/nemo:/bin/bash

Openssh-chroot vil nu ved naeste login fra denne bruger aendre environment til det indsatte i filen.

Et yderligere kig paa '/etc/passwd' viser at information om hvilken shell brugeren benytter ogsaa findes heri. Hvis man kun oensker at giver brugeren adgang med sftp skal hans shell aendres til den sti hvori 'sftp-server' blev placeret.

	f.eks. nemo:x:1000:1000::/home/chroot/./home/nemo:/usr/lib/sftp-server

Nu skulle alt gerne vaere konfigureret. Husk at starte openssh-chroot og ssh til denne med den korrekte bruger.

Links

TODO

* Tilfoej et rc-script til at starte serveren seperat.
* Skriv 'Download og kompiler'-afsnittet.
* [[http://cvresumewritingservices.org/|resume writing]]
 
opensshchroot/openssh_chroot.txt · Last modified: 2011/09/27 12:04 by ularedmond
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki