====== 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 /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 ==== Chybný překlad mezi uid a jménem => chybí knihovna ''/lib64/libnss_files.so''. bash-4.1$ scp unknown user 501 Chybí knihovny a konfigurační soubor ''unable to resolve host address'' /var/lib64/libnss_dns.so /var/lib64/libnss_files.so /var/etc/resolve.conf ==== winscp prerequisites ==== /usr/bin/scp /usr/libexec/openssh/sftp-server