ユーザーを認証するために現在ActiveDirectory環境に接続されている複数のユーザーWebページをホストするApacheサーバー(RHEL 6)があります。サーバーは、ユーザーが/ home/<user>/public_htmlフォルダーに配置したコンテンツを自動的にホストするために使用されます。また、chrootを使用するようにこのサーバーを構成しているため、ユーザーはホームフォルダーの外にあるサーバー上の他のコンテンツを参照できません。ログインスクリプトは、ユーザーのホームフォルダーを作成しません。特定のユーザーのみがこのサーバーからWebページをホストできるようにするため、これらは手動で作成されます。
問題は、現在、すべてのユーザーがサーバーにログインでき、/ homeフォルダーに移動する代わりに(存在しないため)、自動的に/に移動することです。これにより、グループが読み取りアクセス権を持っているサーバー上のファイル/フォルダーを表示するためのアクセス権が与えられます。これはセキュリティ上の懸念事項であり、ログインを/ homeディレクトリを持つユーザーに制限したいと思います。 ADグループまたはユーザーのリストを認証済みとして指定することは望ましくありません。そのリストは非常に長くなり、PAMモジュールを作成するよりも簡単かもしれませんが、管理が難しい場合があるためです。
LDAPログインをすでに/ homeディレクトリを持っているユーザーのみに制限する方法はありますか? PAMオプションまたはドキュメントに何も見つかりません。
アクセスの管理にはローカルホストでの多くの回避策が必要になるため、Active Directoryにグループを作成し、そのグループ内のユーザーへのログインを制限することにしました。
これは、/ etc/security/pam_winbind.confファイルを編集して、アクセスを制限するグループまたはユーザーのSID(コンマ区切り)を使用して次のフィールドを指定することで実行できます。
require_membership_of=
次に、chroot制限をそのグループにフィルターして(またはユーザーをローカルグループに配置して)、自分のホームディレクトリへのsftpアクセスを制限します。これにより、oddjobs mkhomedirをpamに追加し直して、サーバーへのアクセスを許可することもできます。ユーザーをそのグループに追加するだけです。その後、ログインでき、ホームディレクトリが自動的に作成されます。
ヘルプ/アイデアをありがとうございましたが、結局、ADグループが最も管理しやすいようです。
解決策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つの方法は、sshのキーを使用するように強制し、パスワードを使用したsshログインを禁止することです。そうすれば、/ home/<user> /。ssh/authorized_keysファイルを持っている人だけが接続できます。