刑務所のシェルと刑務所キット
投獄されたシェルは一種の制限されたシェルであり、ユーザーに非常にリアルな外観のシェルを提供しますが、実際のファイルシステムのどの部分も混乱/表示/変更することはできません。シェル内のファイルシステムは、基盤となるシステムの実際のファイルシステムとは異なります。このような機能はchrootを介して実現され、さまざまな種類のアプリケーションが見つかります。たとえば、ユーザーが単に「遊ぶ」ためのLinuxシェルをセットアップする場合です。または、制限された環境などで、すべての機能を備えたプログラムを実行します。
このチュートリアルでは、ubuntuでjailkitを使用してjailedシェルをすばやく設定する方法について説明します。 Jailkitは、jailされたシェル、その中のjailユーザーをすばやくセットアップし、jailされた環境から実行するようにプログラムを構成できるヘルパープログラムです。
Jailkitは、
http://olivier.sessink.nl/jailkit/
ubuntuへのjailkitのインストールについてはすでに説明したので、その投稿を確認してください。
投獄されたシェルのセットアップ
1。刑務所環境をセットアップする
刑務所環境全体がセットアップされるディレクトリが必要です。 / opt/jailで実行しましょう。これは何でもかまいません。
$ sudo mkdir /opt/jail
ルートはこのディレクトリを所有する必要があります。だからそれをかき消す。
$ sudo chown root:root /opt/jail
2。刑務所内で利用できるようにプログラムを設定します
刑務所で利用可能である必要があるすべてのプログラムは、jk_initコマンドを使用して刑務所内にコピーする必要があります。
例
$ 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
または一度に
$ sudo jk_init -v /opt/jail netutils basicshell jk_lsh openvpn ssh sftp
basicshell、editors、netutilsなどの名前は、複数のプログラムを含むグループです。各グループは、シェルにコピーされる実行可能ファイル、ライブラリなどのセットです。たとえば、セクション basicshell 刑務所でbash、ls、cat、chmod、mkdir、cp、cpio、date、dd、echo、egrepなどの多くのプログラムを提供します。
設定できるセクションの完全なリストについては、/etc/jailkit/jk_init.ini
をご覧ください。 。
jk_lsh (Jailkit limited shell) - is an important section, and must be added.
3。投獄されるユーザーを作成する
刑務所の中に入れるユーザーが必要です。作成しましょう
$ 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
これは、刑務所内ではなく実際のファイルシステムで作成された通常のユーザーであることに注意してください。
次のステップでは、このユーザーは刑務所内に投獄されます。
この時点で/etc/ passwdを見ると、最後に次のようなエントリが表示されます
robber:x:1006:1005:,,,:/home/robber:/bin/bash
これは新しいユーザーであり、最後の部分/ bin / bashは、ユーザーがログインした場合、システム上で通常のシェルアクセス権を持っていることを示しています。
4。ユーザーを投獄する
次に、ユーザーを刑務所に入れます。
$ sudo jk_jailuser -m -j /opt/jail/ robber
これにより、ユーザー強盗は投獄されました。
/ etc / passwdを見ると、最後のエントリは次のようになります
robber:x:1006:1005:,,,:/opt/jail/./home/robber:/usr/sbin/jk_chrootsh
ホームユーザーとシェルタイプを示す最後の2つの部分が変更されていることに注意してください。これで、ユーザーのホームディレクトリは/ opt/jailのjail環境内にあります。ユーザーのシェルは、jailedシェルを提供するjk_chrootshと呼ばれる特別なプログラムになりました。
ユーザーがシステムにログオンするたびに、ユーザーを刑務所内に連れて行くのはjk_chrootshと呼ばれるこの特定のシェルです。
これで刑務所のセットアップはほぼ完了しました。しかし、sshからidに接続しようとすると、次のように失敗します:
$ 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. $
接続を閉じます。これは、ユーザーが実際にシェルを制限しているために発生します。
5。刑務所内のユーザーにbashシェルを与える
次に重要なことは、ユーザーに適切なbashシェルを提供することですが、刑務所内にあります。
次のファイルを開きます
/opt/jail/etc/passwd
刑務所内のパスワードファイル。少しこのようになります
root:x:0:0:root:/root:/bin/bash robber:x:1006:1005:,,,:/home/robber:/usr/sbin/jk_lsh
/ usr / sbin/jk_lshを/bin/ bash
に変更しますroot:x:0:0:root:/root:/bin/bash robber:x:1006:1005:,,,:/home/robber:/bin/bash
ファイルを保存して終了します。
6。刑務所にログインする
それでは、刑務所に再度ログインするときが来ました
$ 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]:~$
刑務所は「私には名前がない!」と言っています。 、ハハ。これで、完全に機能するbashシェルができましたが、刑務所内にあります。
次に、移動して環境を確認します。 jailされた環境のルート/は、実際のファイルシステムの/ opt/jailです。しかし、それを知っているのは私たちだけであり、投獄されたユーザーではありません。
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]:/$
また、jk_cpセクションを介してコピーされたコマンドのみがこのjailで使用可能になります。
ログインが失敗した場合は、/ var / log/auth.logでエラーメッセージを確認してください。
次に、wgetなどのネットワークコマンドを実行してみてください。
$ wget http://www.google.com/
このようなエラーが発生した場合:
$ 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'
次の2つのコマンドを実行して修正します:
$ 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
libnss_files.soとlibnss_dns.soの正確な場所は異なる可能性があるため、確認してください。
刑務所でのプログラムまたはサービスの実行
これでセットアップは完了です。 Jailsは、制限された/安全な環境でプログラムまたはサービスを実行するのに役立ちます。刑務所内でプログラムまたはデーモンを起動するには、 jk_chrootlaunchを使用します コマンド。
$ sudo jk_chrootlaunch -j /opt/jail -u robber -x /some/command/in/jail
jk_chrootlaunchユーティリティを使用して、指定されたユーザーの権限でjail環境内の特定のプロセスを起動できます。デーモンの起動に失敗した場合は、/ var / log/syslogでエラーメッセージを確認してください。
刑務所内でプログラムを実行するには、最初にjk_cpコマンドを使用してプログラムを刑務所内に完全にコピーする必要があります。
jk_cp - a utility to copy files including permissions and libraries into a jail
さまざまなjailkitコマンドの詳細については、
のドキュメントを確認してください。 http://olivier.sessink.nl/jailkit/