Dobrý den, dnes vytvoříme uvězněného ssh uživatele s Jailkit na Debian Wheezy boxu. Jailkit je sada nástrojů pro omezení uživatelských účtů na konkrétní soubory pomocí chroot() a/nebo specifických příkazů. Nastavení chroot shellu, shellu omezeného na nějaký konkrétní příkaz nebo démona uvnitř chroot jailu je mnohem snazší a lze ho pomocí těchto utilit zautomatizovat.
Je známo, že Jailkit se používá v zařízeních pro zabezpečení sítí od několika předních firem v oblasti IT, internetových serverů od několika velkých podnikových organizací, internetových serverů od poskytovatelů internetových služeb a také mnoha menších společností a soukromých uživatelů, kteří potřebují zabezpečit cvs, sftp, shell nebo procesy démona.
1. Instalace JailKit
Nejprve si stáhneme a nainstalujeme Jailkit.
$ cd /tmp
$ wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz
$ tar xvfz jailkit-2.17.tar.gz
$ cd jailkit-2.17
Poznámka:Nahraďte prosím jailkit-2.17 verzí jailkitu, kterou chcete nainstalovat.
Protože Jailkit vyžaduje před instalací nějaké balíčky, nainstalujeme je následovně:
$ sudo apt-get install build-essential autoconf automake1.9 libtool flex bison debhelper binutils-gold python
Nyní je náš systém připraven k instalaci Jailkitu, nainstalujte jej následovně:
$ ./debian/rules binary
$ cd ..
$ dpkg -i jailkit_2.17-1_i386.deb
Nainstaluje Jailkit na Debian Server, můžeme odstranit další balíčky z /tmp:
$ rm -rf /tmp/jailkit*
2. Konfigurace prostředí věznice
Musí existovat adresář, kde bude nastaveno celé prostředí věznice. Udělejme to v /opt/jail. To může být cokoliv.
$ sudo mkdir /opt/jail
Root by měl vlastnit tento adresář. Tak to vykašlete.
$ sudo chown root:root /opt/jail
3. Povolení, aby byly programy dostupné ve vězení
Všechny programy, které musí být k dispozici ve vězení, je třeba do něj zkopírovat pomocí příkazu jk_init.
Příklad
$ sudo jk_init -v /opt/jail netutils basicshell jk_lsh openvpn ssh sftp
Názvy jako basicshell , editory , netutils jsou skupiny, které obsahují více programů. Každá skupina je sada spustitelných souborů, knihoven atd., které se mají zkopírovat do shellu. Například sekce basicshell poskytuje ve vězení mnoho programů jako bash, ls, cat, chmod, mkdir, cp, cpio, date, dd, echo, egrep atd.
Úplný seznam sekcí, které lze nastavit, naleznete v /etc/jailkit/jk_init.ini.
4. Vytvořte uživatele, který bude uvězněn
Potřebuji uživatele, který se dostane do vězení. Pojďme si jeden vytvořit
$ sudo adduser arun
Všimněte si, že se jedná o normálního uživatele, který je vytvořen ve skutečném souborovém systému a nikoli ve vězení.
V dalším kroku bude tento uživatel uvězněn ve vězení.
V tomto okamžiku, když se podíváte na /etc/passwd, uvidíte na konci záznam, který vypadá takto
arun:x:1006:1005:,,,:/home/arun:/bin/bash
Toto je náš nový uživatel a poslední část /bin/bash označuje, že uživatel má normální shellový přístup k systému, pokud se přihlásí.
5. Uvěznit uživatele
Nyní je čas dostat uživatele do vězení.
$ sudo jk_jailuser -m -j /opt/jail/ arun
Tímto způsobem byl uživatel arun nyní uvězněn.
Nyní, když se podíváte na /etc/passwd, poslední záznam bude vypadat takto
arun:x:1006:1005:,,,:/opt/jail/./home/arun:/usr/sbin/jk_chrootsh
Všimněte si, že se změnily poslední 2 části, které označují domácího uživatele a typ shellu. Domovský adresář uživatele je nyní v prostředí věznice /opt/jail. Shell uživatele je nyní speciální program nazvaný jk_chrootsh, který poskytne uvězněný shell.
Je to tento konkrétní shell s názvem jk_chrootsh, který zavede uživatele do vězení pokaždé, když se přihlásí do systému.
Nastavení věznice je nyní téměř hotové. Ale pokud se pokusíte připojit k id z ssh, selže to takto:
$ ssh arun@localhost
Spojení se uzavře. K tomu dochází, protože uživatel má ve skutečnosti omezený shell.
6. Dejte bash shell uživateli ve vězení
Nyní je důležitá věc, kterou musíme udělat, je poskytnout uživateli správný bash shell, ale uvnitř vězení.
Otevřete následující soubor
$ sudo nano /opt/jail/etc/passwd
Je to soubor s hesly ve vězení. Vypadalo by to nějak takto
root:x:0:0:root:/root:/bin/bash
arunp:x:1006:1001:arun pyasi,001,,:/home/arunp:/usr/sbin/jk_lsh
Změňte /usr/sbin/jk_lsh na /bin/bash
root:x:0:0:root:/root:/bin/bash
arun:x:1006:1005:,,,:/home/arun:/bin/bash
Uložte soubor a ukončete.
7. Přihlaste se do vězení
Nyní je tedy čas znovu se přihlásit do vězení
$ ssh arun@localhost
Nyní máme plně funkční bash shell, ale uvnitř vězení. Nyní zkontrolujte prostředí pohybem. Kořen / uvězněného prostředí je /opt/jail skutečného souborového systému. Ale to víme jen my, ne uvězněný uživatel.
Také v tomto vězení budou dostupné pouze příkazy, které byly zkopírovány prostřednictvím sekcí jk_cp . Pokud se přihlášení nezdaří, zkontrolujte /var/log/auth.log, zda neobsahuje chybové zprávy.
Nyní zkuste spustit nějaký síťový příkaz jako wget nebo něco podobného.
$ wget http://www.google.com/
Pokud se zobrazí tato chyba:
$ wget http://www.google.com/
--2012-06-23 12:56:43-- http://www.google.com/
Resolving www.google.com (www.google.com)... failed: Name or service not known.
wget: unable to resolve host address `www.google.com'
Opravte to spuštěním následujících 2 příkazů:
$ sudo jk_cp -v -j /opt/jail /lib/x86_64-linux-gnu/libnss_files.so.2
$ sudo jk_cp -v -j /opt/jail /lib/x86_64-linux-gnu/libnss_dns.so.2
Přesné umístění souborů libnss_files.so a libnss_dns.so se může lišit, proto zkontrolujte.
8. Spouštění programů nebo služeb ve vězení
Nyní je nastavení dokončeno. Věznice jsou užitečné pro spouštění programů nebo služeb v omezených/zabezpečených prostředích. Ke spuštění programu nebo démona uvnitř vězení použijte příkaz jk_chrootlaunch.
$ sudo jk_chrootlaunch -j /opt/jail -u arun -x /some/command/in/jail
Obslužný program jk_chrootlaunch lze použít ke spuštění konkrétního procesu v prostředí věznice s oprávněními určeného uživatele. Pokud se démon nespustí, zkontrolujte /var/log/syslog, zda neobsahuje chybové zprávy.
Chcete-li spustit program ve vězení, program musí být nejprve plně zkopírován uvnitř vězení pomocí příkazu jk_cp.
jk_cp – nástroj pro kopírování souborů včetně oprávnění a knihoven do vězení
Závěr
Nakonec jsme vytvořili funkční uvězněné ssh s pomocí Jailkit na našem serveru Debian/Ubuntu. Omezuje se na nějaký konkrétní příkaz nebo démona v chrootovém vězení s automatickými nástroji. Další informace o různých příkazech jailkit najdete v dokumentaci na webu olivier. Máte-li jakékoli dotazy nebo dotazy, prosím komentujte.