web-dev-qa-db-ja.com

LDAPからのsshログインを/ homeディレクトリを持つユーザーに制限します

ユーザーを認証するために現在ActiveDirectory環境に接続されている複数のユーザーWebページをホストするApacheサーバー(RHEL 6)があります。サーバーは、ユーザーが/ home/<user>/public_htmlフォルダーに配置したコンテンツを自動的にホストするために使用されます。また、chrootを使用するようにこのサーバーを構成しているため、ユーザーはホームフォルダーの外にあるサーバー上の他のコンテンツを参照できません。ログインスクリプトは、ユーザーのホームフォルダーを作成しません。特定のユーザーのみがこのサーバーからWebページをホストできるようにするため、これらは手動で作成されます。

問題は、現在、すべてのユーザーがサーバーにログインでき、/ homeフォルダーに移動する代わりに(存在しないため)、自動的に/に移動することです。これにより、グループが読み取りアクセス権を持っているサーバー上のファイル/フォルダーを表示するためのアクセス権が与えられます。これはセキュリティ上の懸念事項であり、ログインを/ homeディレクトリを持つユーザーに制限したいと思います。 ADグループまたはユーザーのリストを認証済みとして指定することは望ましくありません。そのリストは非常に長くなり、PAMモジュールを作成するよりも簡単かもしれませんが、管理が難しい場合があるためです。

LDAPログインをすでに/ homeディレクトリを持っているユーザーのみに制限する方法はありますか? PAMオプションまたはドキュメントに何も見つかりません。

6
Rothgar

アクセスの管理にはローカルホストでの多くの回避策が必要になるため、Active Directoryにグループを作成し、そのグループ内のユーザーへのログインを制限することにしました。

これは、/ etc/security/pam_winbind.confファイルを編集して、アクセスを制限するグループまたはユーザーのSID(コンマ区切り)を使用して次のフィールドを指定することで実行できます。

require_membership_of=

次に、chroot制限をそのグループにフィルターして(またはユーザーをローカルグループに配置して)、自分のホームディレクトリへのsftpアクセスを制限します。これにより、oddjobs mkhomedirをpamに追加し直して、サーバーへのアクセスを許可することもできます。ユーザーをそのグループに追加するだけです。その後、ログインでき、ホームディレクトリが自動的に作成されます。

ヘルプ/アイデアをありがとうございましたが、結局、ADグループが最も管理しやすいようです。

2
Rothgar

解決策1:

モジュールpam_homecheckをPAMできます

ユーザーのホームディレクトリがあるかどうかを確認し、見つからない場合はセッションを拒否するだけです。

問題は、openSUSEでのみ利用可能ですが、ダウンロードしたパッケージからpam_homecheck.soを配置し、ldd pam_homecheck.soを使用して依存関係をインストールできます。

解決策2:/etc/bashrcに以下のコンテンツを追加できますが、Shell/PuTTYログインにのみ適用されます

[[ $HOME == / ]] && { echo "Error: Home Dir not define.."; exit 1; }

解決策3:

ホームディレクトリが設定されていない場合は拒否します(Ubuntuでテストされ、以下の手順で動作します)

WinScpを拒否するには

aptitude install libpam-script

Faoriteエディターで「/etc/pam.d/common-auth」を開き、以下のエントリを追加します

auth optional pam_script.so  # add at the last 

お気に入りのエディターで「/usr/share/libpam-script/pam_script_auth」を開き、以下のエントリを追加します

#!/bin/bash

Pam_home=$(awk -v u=$PAM_USER -F: '($1 == u ){print $6}' /etc/passwd)

if [[ $Pam_home == / ]]; then
        echo "Error: Home Dir not define.."
        kill -9 $PPID # Force fully kill winscp pid
else
        /usr/lib/openssh/sftp-server
fi

Shell/PuTTYログインを拒否するには

デフォルトの場所、つまり「/usr/share/libpam-script/pam_script_auth」から同じスクリプトを参照して実行します。または、ログ「tail -f /var/log/auth.log」で確認できます。

1
Rahul Patil

これを実行する1つの方法は、sshのキーを使用するように強制し、パスワードを使用したsshログインを禁止することです。そうすれば、/ home/<user> /。ssh/authorized_keysファイルを持っている人だけが接続できます。

0
tink