こんにちは。今日は、DebianWheezyボックスでJailkitを使用してjailedsshユーザーを作成します。 Jailkitは、chroot()や特定のコマンドを使用してユーザーアカウントを特定のファイルに制限するためのユーティリティのセットです。 chrootシェル、特定のコマンドに限定されたシェル、またはchroot jail内のデーモンのセットアップははるかに簡単で、これらのユーティリティを使用して自動化できます。
Jailkitは、いくつかの大手ITセキュリティ会社のネットワークセキュリティアプライアンス、いくつかの大企業組織のインターネットサーバー、インターネットサービスプロバイダーのインターネットサーバー、およびcvs、sftp、shellを保護する必要のある多くの中小企業や個人ユーザーで使用されていることが知られています。またはデーモンプロセス。
1。 JailKitのインストール
まず、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
注:jailkit-2.17を、インストールするバージョンのjailkitに置き換えてください。
Jailkitはインストール前にいくつかのパッケージを必要とするため、次のようにインストールします。
$ sudo apt-get install build-essential autoconf automake1.9 libtool flex bison debhelper binutils-gold python
これで、システムでJailkitをインストールする準備が整いました。次のようにインストールしてください。
$ ./debian/rules binary
$ cd ..
$ dpkg -i jailkit_2.17-1_i386.deb
DebianサーバーにJailkitがインストールされます。/tmpから余分なパッケージを削除できます:
$ rm -rf /tmp/jailkit*
2。刑務所環境の構成
刑務所環境全体がセットアップされるディレクトリが必要です。 / opt/jailで実行しましょう。これは何でもかまいません。
$ sudo mkdir /opt/jail
ルートはこのディレクトリを所有する必要があります。だからそれをかき消す。
$ sudo chown root:root /opt/jail
3。プログラムを刑務所内で利用できるようにする
jailで使用可能である必要があるすべてのプログラムは、jk_initコマンドを使用してjail内にコピーする必要があります。
例
$ 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をご覧ください。
4。投獄されるユーザーを作成する
刑務所の中に入れるユーザーが必要です。作成しましょう
$ sudo adduser arun
これは、刑務所内ではなく、実際のファイルシステムで作成された通常のユーザーであることに注意してください。
次のステップでは、このユーザーは刑務所内に投獄されます。
この時点で/etc/ passwdを見ると、最後に次のようなエントリが表示されます
arun:x:1006:1005:,,,:/ home / arun:/ bin / bash
これは新しいユーザーであり、最後の部分/ bin / bashは、ユーザーがログインした場合、システム上で通常のシェルアクセス権を持っていることを示しています。
5。ユーザーを投獄する
次に、ユーザーを刑務所に入れます。
$ sudo jk_jailuser -m -j /opt/jail/ arun
これを行うことにより、ユーザーarunは投獄されました。
/ etc / passwdを見ると、最後のエントリは次のようになります
arun:x:1006:1005:,,,:/ opt / jail /./ home / arun:/ usr / sbin / jk_chrootsh
ホームユーザーとシェルタイプを示す最後の2つの部分が変更されていることに注意してください。これで、ユーザーのホームディレクトリは/ opt/jailのjail環境内にあります。ユーザーのシェルは、jailedシェルを提供するjk_chrootshと呼ばれる特別なプログラムになりました。
ユーザーがシステムにログオンするたびに、ユーザーを刑務所内に連れて行くのはjk_chrootshと呼ばれるこの特定のシェルです。
これで刑務所のセットアップはほぼ完了しました。しかし、sshからidに接続しようとすると、次のように失敗します:
$ ssh arun@localhost
接続を閉じます。これは、ユーザーが実際にシェルを制限しているために発生します。
6。刑務所内のユーザーにbashシェルを与える
さて、私たちがしなければならない重要なことは、ユーザーに適切なbashシェルを提供することですが、刑務所の中にあります。
次のファイルを開きます
$ sudo nano /opt/jail/etc/passwd
刑務所内のパスワードファイル。少しこんな感じになります
root:x:0:0:root:/root:/bin/bash
arunp:x:1006:1001:arun pyasi,001,,:/home/arunp:/usr/sbin/jk_lsh
/ usr / sbin/jk_lshを/bin/ bash
に変更しますroot:x:0:0:root:/root:/bin/bash
arun:x:1006:1005:,,,:/home/arun:/bin/bash
ファイルを保存して終了します。
7。刑務所にログインする
それでは、刑務所に再度ログインするときが来ました
$ ssh arun@localhost
これで、完全に機能するbashシェルができましたが、刑務所内にあります。次に、移動して環境を確認します。 jailされた環境のルート/は、実際のファイルシステムの/ opt/jailです。しかし、それを知っているのは私たちだけであり、投獄されたユーザーではありません。
また、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の正確な場所は異なる可能性があるため、確認してください。
8。刑務所でのプログラムやサービスの実行
これでセットアップは完了です。 Jailsは、制限された/安全な環境でプログラムまたはサービスを実行するのに役立ちます。 jail内でプログラムまたはデーモンを起動するには、jk_chrootlaunchコマンドを使用します。
$ sudo jk_chrootlaunch -j /opt/jail -u arun -x /some/command/in/jail
jk_chrootlaunchユーティリティを使用して、指定されたユーザーの権限でjail環境内の特定のプロセスを起動できます。デーモンの起動に失敗した場合は、/ var / log/syslogでエラーメッセージを確認してください。
刑務所内でプログラムを実行するには、最初にjk_cpコマンドを使用してプログラムを刑務所内に完全にコピーする必要があります。
jk_cp-権限やライブラリを含むファイルを刑務所にコピーするユーティリティ
結論
最後に、Debian / UbuntuサーバーでJailkitを使用して、動作するjailedsshを作成しました。特定のコマンド、または自動化されたユーティリティを備えたchrootjail内のデーモンに限定されていました。さまざまなjailkitコマンドの詳細については、olivierのウェブサイトのドキュメントを確認してください。ご質問やご質問がございましたら、コメントしてください。