User Tools

Site Tools


it:bezpecnost:ssh_chroot

This is an old revision of the document!


SSHD – chroot jail

Konfigurace

Pokud dáváme přístup dalším osobám, u kterých je nebezpečí zneužití informací o systému, je vhodné je uzamknout ve vybraném adresáři a umožnit jim přístup pouze k některým binárkám. V tomto případě použijeme chroot jail.

Vytvoříme uživatele, který bude vyvíjet například web, webadmin. A dáme mu příslušná práva. Nebo již existujícího uživatele přidáme do skupiny apache.

useradd -G apache webadmin
usermod -G apache webadmin
passwd webadmin
id webadmin

Vytvoříme adresář(v našem případě využijeme již existující /var), který bude emulovat uživatelův / a zajistíme, aby byl vlastněn rootem. Zde vytvoříme adresářovou strukturu a nakopírujeme potřebné soubory. V tomto adresáři bude ve finále uživatel uzamčen. Zvolen byl adresář /var, aby měl webadmin přístup i k logům webu. Nabízí se i adresář /var/www, který je však u web serveru vhodné z bezpečnostních důvodů montovat s parametrem noexec, takže by zde nebylo možné spouštět námi nakopírované binárky.

chown root.root /var
mkdir -p /var/{dev,etc,usr,home}
mkdir -p /var/usr/{bin,lib64}
mkdir /var/home/webadmin
chown webadmin.webadmin /var/home/webadmin
ln -s /var/usr/bin /var/bin
ln -s /var/usr/lib64 /var/lib64

Pokud se objeví při přihlášení chyba /bin/bash: No such file or direktory, pak jsou třeba výše zmíněné linky nahradit kopií celého adresáře.

mknod -m 666 /var/dev/null c 1 3
cp /etc/ld.so.cache /var/etc
cp /etc/ld.so.conf /var/etc
cp /etc/nsswitch.conf /var/etc
cp /etc/hosts /var/etc
cp /etc/passwd /var/etc/
cp /etc/group /var/etc/

Následně překopírujeme binárky příkazů, které bude moci takto omezený uživatel používat. Včetně jimi používaných knihoven.

cp /bin/bash /var/bin
cp /bin/ls /var/bin
cp /bin/mkdir /var/bin
cp /bin/rm /var/bin
cp /usr/bin/scp /var/usr/bin/scp
cp /usr/bin/vim /var/usr/bin/
cp /usr/bin/chgrp /var/usr/bin/chgrp
cp /usr/bin/chmod /var/usr/bin/chmod
ldd /var/usr/bin/*
ldd /var/bin/*
cp <knihovny> /var/lib64
cp /lib64/libnss_files.so.2 /var/lib64 

Pokud používáme SSHD alespoň ve verzi OpenSSH 4.8p1, vytvoříme pro uživatele osobní konfiguraci v konfiguračním souboru /etc/ssh/sshd_config.

Match User webadmin
    ChrootDirectory /var
    AllowTCPForwarding no
    X11Forwarding no

Troubleshoot

  1.   -bash-4.1$ scp
        unknown user 501

Chybný překlad mezi uid a jménem ⇒ chybí knihovna /lib64/libnss_files.so.

  1. unable to resolve host address
  Chybí knihovny a konfigurační soubor:
  /var/lib64/libnss_dns.so
  /var/lib64/libnss_files.so
  /var/etc/resolve.conf

winscp prerequisites

/usr/bin/scp /usr/libexec/openssh/sftp-server

it/bezpecnost/ssh_chroot.1521630404.txt.gz · Last modified: 2019/08/02 11:18 (external edit)