GNU/Linux >> Znalost Linux >  >> Ubuntu

Nastavte uvězněný shell s jailkit na ubuntu

Uvězněný Shell a Jailkit

Uvězněný shell je druh omezeného shellu, který uživateli poskytuje velmi reálně vypadající shell, ale neumožňuje mu manipulovat/prohlížet/upravovat jakékoli části skutečných souborových systémů. Souborový systém uvnitř shellu se liší od skutečného souborového systému základního systému. Taková funkce je dosažena prostřednictvím chrootu a nachází mnoho druhů aplikací. Například nastavit linuxový shell pro uživatele, aby si s ním mohli jen „hrát“. Nebo spusťte nějaký program s plnou funkčností, ale v omezeném prostředí a tak dále.

V tomto tutoriálu budeme hovořit o rychlém nastavení uvězněného shellu s jailkit na ubuntu. Jailkit je pomocný program, který umožňuje rychle nastavit uvězněný shell, uvěznit v něm uživatele a nakonfigurovat programy tak, aby se spouštěly z uvězněného prostředí.

Jailkit lze stáhnout z
http://olivier.sessink.nl/jailkit/

Již jsme diskutovali o instalaci jailkitu na ubuntu, takže se podívejte na tento příspěvek.

Nastavení uvězněného shellu

1. Nastavte 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 tento adresář vlastnit. Tak to vykašlete.

$ sudo chown root:root /opt/jail

2. Nastavte programy, které budou 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 /jail basicshell
$ sudo jk_init -v /jail editors
$ sudo jk_init -v /jail extendedshell
$ sudo jk_init -v /jail netutils
$ sudo jk_init -v /jail ssh
$ sudo jk_init -v /jail sftp
$ sudo jk_init -v /jail jk_lsh

Nebo najednou

$ 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 základní prostředí poskytuje mnoho programů jako bash, ls, cat, chmod, mkdir, cp, cpio, date, dd, echo, egrep atd. ve vězení.

Pro úplný seznam sekcí, které lze nastavit, se podívejte na /etc/jailkit/jk_init.ini .

jk_lsh (Jailkit limited shell) - is an important section, and must be added.

3. 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 robber
Adding user `robber' ...
Adding new group `robber' (1005) ...
Adding new user `robber' (1006) with group `robber' ...
Creating home directory `/home/robber' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for robber
Enter the new value, or press ENTER for the default
        Full Name []: 
        Room Number []: 
        Work Phone []: 
        Home Phone []: 
        Other []: 
Is the information correct? [Y/n] y

Všimněte si, že toto je normální uživatel, který je vytvořen ve skutečném souborovém systému a ne 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

robber:x:1006:1005:,,,:/home/robber:/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í.

4. Uvěznit uživatele

Nyní je čas dostat uživatele do vězení.

$ sudo jk_jailuser -m -j /opt/jail/ robber

Tímto způsobem byl uživatel lupič nyní uvězněn.
Když se nyní podíváte do /etc/passwd, poslední záznam bude vypadat takto

robber:x:1006:1005:,,,:/opt/jail/./home/robber:/usr/sbin/jk_chrootsh

Všimněte si, že poslední 2 části, které označují domácího uživatele a typ shellu, se změnily. Domovský adresář uživatele je nyní v prostředí vězení na /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:

Heslo
$ ssh [email protected]
[email protected]'s password:
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-25-generic x86_64)
 * Documentation:  https://help.ubuntu.com/
13 packages can be updated.
0 updates are security updates.
*** /dev/sda7 will be checked for errors at next reboot ***
*** /dev/sda8 will be checked for errors at next reboot ***
Last login: Sat Jun 23 12:45:13 2012 from localhost
Connection to localhost closed.
$

Spojení se uzavře. To se děje, protože uživatel má ve skutečnosti omezený shell.

5. Dejte bash shell uživateli ve vězení

Další důležitá věc, kterou musíte udělat, je poskytnout uživateli řádný bash shell, ale uvnitř vězení.
Otevřete následující soubor

/opt/jail/etc/passwd

Je to soubor s hesly uvnitř vězení. Vypadalo by to nějak takto

root:x:0:0:root:/root:/bin/bash
robber:x:1006:1005:,,,:/home/robber:/usr/sbin/jk_lsh

Změňte /usr/sbin/jk_lsh na /bin/bash

root:x:0:0:root:/root:/bin/bash
robber:x:1006:1005:,,,:/home/robber:/bin/bash

Uložte soubor a ukončete.

6. Přihlaste se do vězení

Nyní je tedy čas znovu se přihlásit do vězení

Heslo
$ ssh [email protected]
[email protected]'s password:
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-25-generic x86_64)
 * Documentation:  https://help.ubuntu.com/
13 packages can be updated.
0 updates are security updates.
*** /dev/sda7 will be checked for errors at next reboot ***
*** /dev/sda8 will be checked for errors at next reboot ***
Last login: Sat Jun 23 12:46:01 2012 from localhost
bash: groups: command not found
I have no [email protected]:~$

Vězení říká 'Nemám jméno!' , ha ha. 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.

I have no [email protected]:~$ cd /
I have no [email protected]:/$ ls
bin  dev  etc  home  lib  lib64  run  usr  var
I have no [email protected]:/$

V tomto vězení budou také dostupné pouze příkazy, které byly zkopírovány přes sekce 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.

Spouštění programů nebo služeb ve vězení

Nyní je nastavení dokončeno. Vězení 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 jk_chrootlaunch příkaz.

$ sudo jk_chrootlaunch -j /opt/jail -u robber -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 nepodaří spustit démona, 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 - a utility to copy files including permissions and libraries into a jail

Další informace o různých příkazech jailkit naleznete v dokumentaci na adrese

http://olivier.sessink.nl/jailkit/
Ubuntu
  1. Používáte Ubuntu s nastavením na dvou obrazovkách?

  2. Nainstalovat Ubuntu se specifickým Uid?

  3. Jak nastavit Django s Postgres, Nginx a Gunicorn na Ubuntu 20.04

  1. Počáteční nastavení serveru s Ubuntu 14.04

  2. Jak vytvořit uvězněného uživatele SSH s Jailkit na Debian 9 (Stretch)

  3. Jak nastavit IP Failover s KeepAlived na Ubuntu a Debianu

  1. Jak nastavit FTP server s VSFTPD na Ubuntu 20.04

  2. Nastavte Linux Container s LXC na Ubuntu 16.04

  3. Nastavte chroot prostředí na Ubuntu pomocí debootstrap