
jail と chroot の扱いは、私にとって少しわかりにくいです。これらは、リスクのあるプログラムを安全に実行するために使用されますが、ユーザーが開始する必要があります。Android や iOS のようにユーザーを jail にする方法を探しています。これはリモート ログイン用に設定できますが、ホーム ログイン用に設定するにはどうすればよいでしょうか。
デスクトップ PC に Ubuntu がインストールされていると仮定します。ユーザーは 4 人います: 管理者、user1、user2、および guest。最初のユーザーは通常のアカウントと同じようにログインします。2 番目と 3 番目のユーザーは jail にログインします。4 番目のユーザーは 2 番目と 3 番目のユーザーよりも制限の厳しい jail にログインします。これらの jail アカウントは、ある種の仮想化環境にアクセスできますか? これらにはコア バイナリのコピーが含まれていますか、それともすべてのインターフェイスに組み込まれていますか? これらは初期化スクリプトまたは他の方法で実行されますか?
答え1
Chroot jail の設定
投獄されるユーザーを作成します。
$sudo adduser acer
chroot を設定するには、ユーザーに sudo 権限を設定する必要があります。
sudoグループにユーザーを追加する
$sudo adduser acer sudo
jail内のユーザーを設定するためのフォルダを作成する
$sudo mkdir /chroot
jailユーザーは/chrootフォルダ内のみにアクセスできます
つまり、ユーザーが空のフォルダしか見ることができない限り、そこに何かを提供する必要があるということです。
基本的な必要なものだけを作る
$cd /chroot
$ sudo mkdir bin dev etc home lib usr var
$sudo mkdir etc/pam.d home/acer lib/security var/log usr/bin
jailユーザーが使用できるソフトウェアを/chrootにコピーしたい
Bashコマンド
$which bash
/bin/bash
$sudo cp /bin/bash /chroot/bin
$ldd /bin/bash
#This ldd command is used to list the library function
linux-gate.so.1 => (0xb772d000)
libtinfo.so.5 => /lib/i386-linux-gnu/libtinfo.so.5 (0xb76f0000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb76eb000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb753c000)
/lib/ld-linux.so.2 (0xb772e000)
Copy this lib file to chroot lib directory
$sudo cp /lib/i386-linux-gnu/libtinfo.so.5 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libdl.so.2 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libc.so.6 /chroot/lib
$sudo cp /lib/ld-linux.so.2 /chroot/lib
ls コマンド
$which ls
/bin/ls
$sudo cp /bin/ls /chroot/bin
$ldd /bin/ls
linux-gate.so.1 => (0xb771f000)
libselinux.so.1 => /lib/i386-linux-gnu/libselinux.so.1 (0xb76e1000)
libacl.so.1 => /lib/i386-linux-gnu/libacl.so.1 (0xb76d8000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7529000)
libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb74eb000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb74e6000)
/lib/ld-linux.so.2 (0xb7720000)
libattr.so.1 => /lib/i386-linux-gnu/libattr.so.1 (0xb74e0000)
このlibファイルをchroot libディレクトリにコピーします
$sudo cp /lib/i386-linux-gnu/libselinux.so.1 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libacl.so.1 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libc.so.6 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libpcre.so.3 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libdl.so.2 /chroot/lib
$sudo cp lib/i386-linux-gnu/libattr.so.1 /chroot/lib
$sudo cp /lib/ld-linux.so.2 /chroot/lib
su コマンド
$which su
/bin/su
$sudo cp /bin/su /chroot/su
$ldd /bin/su
linux-gate.so.1 => (0xb7737000)
libpam.so.0 => /lib/i386-linux-gnu/libpam.so.0 (0xb770d000)
libpam_misc.so.0 => /lib/i386-linux-gnu/libpam_misc.so.0 (0xb7709000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb755a000)
libaudit.so.1 => /lib/i386-linux-gnu/libaudit.so.1 (0xb7535000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb7530000)
/lib/ld-linux.so.2 (0xb7738000)
Copy this lib file to chroot lib directory
$sudo cp /lib/i386-linux-gnu/libpam.so.0 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libpam_misc.so.0 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libc.so.6 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libaudit.so.1 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libdl.so.2 /chroot/lib
$sudo cp /lib/ld-linux.so.2 /chroot/lib
いくつかのシステム設定ファイルと追加のライブラリをchrootに追加する
$cat /etc/passwd | grep acer > /chroot/etc/passwd
$cat /etc/passwd | grep root >> /chroot/etc/passwd
$cat /etc/group | grep acer > /chroot/etc/group
$cat /etc/group | grep root >> /chroot/etc/group
$cat /etc/shadow | grep acer > /chroot/etc/shadow
nsswitch.confファイルを/chrootにコピーする
$sudo cp /etc/nsswitch.conf /chroot/etc/nsswitch.conf
nsswitchの内部は次のようになります
passwd: files
group: files
shadow: files
hosts: files
networks: files
protocols: files
services: files
ethers: files
rpc: files
netgroup: files
PAMシステムが動作するために必要な設定ファイルをコピーして、刑務所内の認証が機能できるようにします。
$sudo cp /etc/pam.d/common-account /chroot/etc/pam.d/
$sudo cp /etc/pam.d/common-auth /chroot/etc/pam.d/
$sudo cp /etc/pam.d/common-session /chroot/etc/pam.d/
$sudo cp /etc/pam.d/su /chroot/etc/pam.d/
PAMとネームサービススイッチ機能に必要な追加ライブラリをいくつか追加します。
$sudo cp /lib/libnss_files.so.2 /chroot/lib
$sudo cp /lib/libnss_compat.so.2 /chroot/lib
$sudo cp /lib/libnsl.so.1 /chroot/lib
$sudo cp -fa /lib/security/ /chroot/lib
/chroot/etc/ディレクトリにlogin.defsファイルを作成する必要があります。このファイルはログインプロセスの設定を定義します。
$sudo vim /chroot/etc/login.defs
login.defsファイルに次の行を追加します。
SULOG_FILE /var/log/sulog
これを行わないと、su コマンドは jail セットアップでは使用できない syslog ユーティリティの使用を試みるため、プロセス全体が失敗します。
ユーザーがシステムにログインするたびに刑務所に入れるスクリプトを作成します
jailの外の/binディレクトリにjailshellファイルを作成します
$sudo vim /bin/jailshell
そのファイルに次のスクリプトを追加します
#!/bin/bash
sudo chroot /chroot /bin/su acer
実行可能にする
$sudo chmod +x /bin/jailshell
スクリプトを実行するには、/etc/passwd ファイル (jail の外部にある) を編集する必要があります。
ユーザー acer で /bin/bash を /bin/jailshell に変更します。
$sudo vim /etc/passwd
acer:x:1003:1003:,,,:/home/acer:/bin/jailshell
jailのホームディレクトリにユーザーacerを設定する
$cd /home/acer
$sudo cp -fa ./ /chroot/home/acer
以下も役に立つかもしれません
$sudo cp /etc/bash.bashrc /chroot/etc/
$sudo cp /etc/localtime /chroot/etc/
$sudo cp /etc/services /chroot/etc/
$sudo cp /etc/protocols /chroot/etc/
$sudo cp /usr/bin/dircolors /chroot/usr/bin/
$sudo cp /usr/bin/groups/ /chroot/usr/bin/
すべて完了しました。ログインをテストします
$su – acer
password:xxxx
[sudo]password for acer:xxxx
acer@Snovabits:/$ ls
bin dev etc home lib usr var