ユーザーがSSH経由でディレクトリにログインできないように制限する

ユーザーがSSH経由でディレクトリにログインできないように制限する

SSHを使用して接続すると、ユーザーを固定ディレクトリに制限することはできません。

ユーザーが/var/www/homeに制限されることを望んでいますが、直接接続するとシステム内で自由に移動できます。

自分のホームディレクトリを/var/www/homeに設定してログインすると、そのディレクトリに移動しますが、制限はありません。

Googleの提案に基づいていくつか試してみましたが、これまで何も機能していないようです。

たとえば、wwwのchmodを755に変更しましたが、ルートにはありますが、まだ効果はありません。

ベストアンサー1

「刑務所」をインストールする必要があります。 ~からここ:

ステップ1:刑務所のスペースを設定する

新しいディレクトリを作成します。

mkdir -p /home/test

セッションをサポートするために必要なファイルを見つけます。理想的には、システムの残りの部分を隠すことが目標であるため、最小限のものしか必要ありません。

ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

これで必要な/devファイルを作成できます。ここで-m設定される権限は、c文字デバイスに対するものです。 2 つの数字は、主装置番号と補助装置番号です。

mkdir -p /home/test/dev/        
cd /home/test/dev/
mknod -m 666 null c 1 3
mknod -m 666 tty c 5 0
mknod -m 666 zero c 1 5
mknod -m 666 random c 1 8

これでファイルを所有し、root書き込みのみ可能にすることができますroot

chown root:root /home/test
chmod 0755 /home/test

ステップ2:シェルを設定

まず、シェルバイナリを追加しますbash。たとえば、次のようになります。

mkdir -p /home/test/bin
cp -v /bin/bash /home/test/bin/

実行するために必要なライブラリを調べてくださいbash(注:lib64ライブラリ以上が必要になる場合があります。たとえば、私のライブラリはおよびに/lib/x86_64-linux-gnu/あります/lib64)。

ldd /bin/bash
mkdir -p /home/test/lib64
cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/test/lib64/

ステップ3:ユーザー設定

まず、ユーザーを作成してパスワードを入力してください。

useradd sshguest
passwd sshguest

次に、必要な/etcファイルを移動します。

mkdir /home/test/etc
cp -vf /etc/{passwd,group} /home/test/etc/

ステップ4:刑務所を使用するようにsshdを設定する

お気に入りのエディタを使用して次の行を追加します/etc/ssh/sshd_config

#define username to apply chroot jail to
Match User sshguest
#specify chroot jail
ChrootDirectory /home/test

その後、サービスを再起動して新しい設定をロードします。

sudo service sshd restart

ステップ5:シェルが機能していることを確認する

シェル組み込みコマンドを接続して実行できる必要があります。

ssh sshguest@[IP of Host]
  $ pwd
  $ echo "foo"

ステップ6:新しいユーザーにホームディレクトリを提供し、別のプログラムを追加します。

まず、アカウントに家を提供してください。

mkdir -p /home/test/home/tecmint
chown -R sshguest:sshguest /home/test/home/sshguest
chmod -R 0700 /home/test/home/sshguest

次に、刑務所に閉じ込められたシェルがアクセスできるようにするプログラムのバイナリを繰り返しコピーし、必要な共有ライブラリを確認しますbashls

cp -v /bin/ls /home/test/bin/
ldd /bin/ls
cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0} /home/test/lib64/
### or whatever directory and libs you need on your system

おすすめ記事