Tento dokument popisuje, jak nainstalovat a nakonfigurovat Jailkit na serveru Debian 9 (Stretch). 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 předběžná poznámka
Tento výukový program je založen na serveru Debian 9, takže před pokračováním v tomto výukovém programu byste měli nastavit základní instalaci serveru Debian. Systém by měl mít statickou IP adresu. V tomto návodu používám jako svou IP adresu 192.168.0.100 a jako název hostitele server1.example.com.
2 Instalace Jailkit
Nejprve si stáhneme a nainstalujeme Jailkit. V době psaní této příručky je nejnovější dostupná verze Jailkitu 2.20. Stáhnu si ho a nainstaluji následovně:
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz
tar xvfz jailkit-2.20.tar.gz
cd jailkit-2.20
Jailkit vyžaduje před instalací nějaké balíčky, nainstalujeme je následovně:
apt-get install build-essential autoconf automake1.11 libtool flex bison debhelper binutils-gold python
Nyní je náš systém připraven k instalaci Jailkitu, nainstalujte jej následovně:
echo 5 > debian/compat
./debian/rules binary
cd ..
dpkg -i jailkit_2.20-1_amd64.deb
Nainstaluje Jailkit na Debian Server, můžeme odstranit další balíčky z /tmp:
rm -rf /tmp/jailkit*
3 Uvěznění uživatele
Nyní vytvoříme uživatele, který bude uvězněn pomocí Jailkit jako:
adduser srijan
[e-mail chráněný]:~#adduser srijan
Přidávání uživatele `srijan' ...
Přidávání nové skupiny `srijan' (1001) ...
Přidávání nového uživatele `srijan ' (1001) se skupinou `srijan' ...
Vytváření domovského adresáře `/home/srijan' ...
Kopírování souborů z `/etc/skel' ...
Zadejte nový Heslo pro UNIX:<--password
Znovu zadejte nové heslo UNIX:<--password
passwd:heslo bylo úspěšně aktualizováno
Změna informací o uživateli pro srijan
Zadejte novou hodnotu nebo stiskněte ENTER pro výchozí
Celé jméno []:<--ENTER
Číslo pokoje []:<--ENTER
Telefon do zaměstnání []:<--ENTER
Telefon domů []:<--ENTER
Jiné []:<--ENTER
Jsou informace správné? [A/n] <--Y
[e-mail chráněný]:~#
V mém případě vytvářím uživatele srijan, můžete použít jakékoli jméno.
Dále zkontrolujeme informace o uživateli srijan v /etc/passwd jako:
egrep srijan /etc/passwd[e-mail chráněný]:/tmp# egrep srijan /etc/passwd
srijan:x:1001:1001:,,,:/home/srijan:/bin/bash
[e-mail chráněný]:/tmp #
Dále uvězníme vytvořeného uživatele. Vytvořte adresář /jail pro prostředí Jail:
mkdir /jail
Nyní poskytneme věznici některé z výchozích programových prostředí jako:
jk_init -v /jail netutils basicshell jk_lsh openvpn ssh sftp
Můžeme zadat i jiné hodnoty, kompletní seznam prostředí Jail lze zkontrolovat v souboru
nano /etc/jailkit/jk_init.ini
Nyní je vězení připraveno, stačí přidat uživatele do prostředí:
jk_jailuser -m -j /jail/ srijan
Znovu zkontrolujte hodnoty v /etc/passwd pro uživatele srijan:
egrep srijan /etc/passwd[e-mail chráněný]:/tmp# egrep srijan /etc/passwd
srijan:x:1001:1001:,,,:/jail/./home/srijan:/usr/sbin/jk_chrootsh
[ email chráněný]:/tmp#
Nyní byl náš uživatel přidán do prostředí Jailed. Propojím server Debian s bash terminálem s jeho IP 192.168.0.100:
ssh [email protected][email protected]:~$ ssh [email protected]
Autentičnost hostitele '192.168.0.100 (192.168.0.100)' nelze zjistit.
Otisk klíče ECDSA je 3d:ca:91:67:96:39:15:b4:0f:6e:c8:2c:92:ef:25:d7.
Opravdu chcete pokračovat v připojování (ano/ne)? ano
Heslo uživatele [chráněno e-mailem]:
Linuxový server1 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64
Programy zahrnuté v systém Debian GNU/Linux je svobodný software;
přesné podmínky distribuce pro každý program jsou popsány v
jednotlivých souborech v /usr/share/doc/*/copyright.
Debian GNU/Linux je poskytován NAPROSTO ŽÁDNÁ ZÁRUKA v rozsahu
povoleném platnými zákony.
Připojení k 192.168.0.100 uzavřeno.
[e-mail chráněn]:~$
Připojení se uzavírá, protože uživatel nemá logovací shell, přidejte jej do konfiguračního souboru pro Jail:
nano /jail/etc/passwd
root:x:0:0:root:/root:/bin/bash nobody:x:65534:65534:nobody:/nonexistent:/bin/sh #srijan:x:1001:1001:,,,:/home/srijan:/usr/sbin/jk_lsh srijan:x:1001:1001:,,,:/home/srijan:/bin/bash
Přidá bash prompt pro uvězněného uživatele srijan. Nyní znovu zkuste přihlášení ssh s uživatelem srijan a budete se moci přihlásit:
ssh [email protected]
Nyní zkontrolujte obsah kořenového adresáře, všimnete si, že má obsah jako tento:
ls /[chráněno e-mailem]:~$ ls /
bin dev atd home lib lib64 usr
[chráněno e-mailem]:~$
4 Spouštění služeb a příkazů v uvězněném prostředí
Jail lze použít ke spouštění služeb v prostředí Jailed. Předpokládejme, že chceme spouštět jakoukoli službu v prostředí Jailed, pak k tomu použijeme příkaz jk_chrootlaunch:
jk_chrootlaunch -j /jail -u srijan -x 'service apache2 start'
Zde spouštím službu Apache. Podobně s ním můžete spouštět jakoukoli službu nebo démona v prostředí Jailed.
Předpokládejme, že chceme spustit konkrétní příkaz v prostředí Jail, pak použijeme jk_cp. Když spustíme cal, otestujeme to v prostředí Jailed, pak se ukáže následovně:
cal[e-mail chráněný]:~$ cal
bash:cal:příkaz nenalezen
[e-mail chráněn]:~$
To znamená, že prostředí Jail nezná příkaz cal, nyní jej přidám na server Debian takto:
jk_cp -v -j /jail/ /usr/bin/cal[e-mail chráněný]:~# jk_cp -v -j /jail/ /usr/bin/cal
Vytvoření symbolického odkazu /jail/usr/bin/cal do ncal
Kopírování /usr/bin/ncal do / jail/usr/bin/ncal
Vytvoření symbolického odkazu /jail/lib/x86_64-linux-gnu/libncurses.so.5 na libncurses.so.5.9
Kopírování /lib/x86_64-linux-gnu/libncurses .so.5.9 do /jail/lib/x86_64-linux-gnu/libncurses.so.5.9
/jail/lib/x86_64-linux-gnu/libtinfo.so.5 již existuje, nedotkne se ho
/jail/lib/x86_64-linux-gnu/libc.so.6 již existuje, nedotkne se ho
/jail/lib/x86_64-linux-gnu/libdl.so.2 již existuje, nebude dotknout se jej
/jail/lib64/ld-linux-x86-64.so.2 již existuje, nedotkne se jej
/jail/lib/x86_64-linux-gnu/libtinfo.so.5 již existuje, nedotkne se jej
/jail/lib/x86_64-linux-gnu/libc.so.6 již existuje, nedotkne se jej
/jail/lib/x86_64-linux-gnu/libdl. so.2 již existuje, nedotkne se ho
/jail/lib64/ld-linux-x86-64.so.2 již existuje, nedotkne se ho
Znovu spusťte příkaz cal v prostředí Jailed:
cal[e-mail chráněno]:~$ cal
duben 2019
Ne Po Út St Čt Pá So
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
[chráněno e-mailem]:~$
Takže jsme přidali příkaz pro prostředí Jailed. Gratulujeme! Nyní jsme úspěšně nakonfigurovali prostředí Jail v Debianu 9 :)
5 odkazů
- Debian:https://www.debian.org/
- Jailkit: https://olivier.sessink.nl/jailkit/