現在、ユーザー認証のためにActive Directory環境に接続されている複数のユーザーWebページをホストするApacheサーバー(RHEL 6)があります。サーバーは、ユーザーが /home/<user>/public_html フォルダーに置くコンテンツを自動的にホストするために使用されます。また、ユーザーがサーバーのホームフォルダ以外の項目を参照できないようにchrootを使用するようにこのサーバーを構成しました。ログインスクリプトはユーザーのホームフォルダを作成しません。特定のユーザーだけがこのサーバーでWebページをホストできるようにしたいので、これは手動で作成されます。
問題は、現在サーバーにログインできるすべてのユーザーが/homeフォルダ(存在しないため)に移動せずに自動的に/に移動することです。これにより、そのグループが読み取りアクセス権を持っているサーバー上のすべてのファイル/フォルダを表示できます。これはセキュリティの問題です。ログインを/homeディレクトリを所有しているユーザーに制限したいと思います。 PAMモジュールを作成するよりも簡単かもしれませんが、リストが非常に長くなり、管理が難しくなる可能性があるため、ADグループまたはユーザーリストを認証済みとして指定したくありません。
/homeディレクトリをすでに所有しているユーザーにのみLDAPログインを制限する方法はありますか?PAMオプションやドキュメントで何も見つかりませんでした。
答え1
アクセス管理にはローカルホストで多くの操作が必要なので、Active Directoryにグループを作成し、そのグループのユーザーにログインを制限することにしました。
次のフィールドとアクセスを制限したいグループまたはユーザーのカンマ区切り(SID)を使用して/etc/security/pam_winbind.confファイルを編集します。
require_membership_of=
次に、このグループのchroot制限をフィルタリング(またはユーザーをローカルグループに配置)して、自分のホームディレクトリへのSFTPアクセスを制限します。これにより、pamに奇妙なアクションmkhomedirを追加でき、サーバーへのアクセスを許可するためにユーザーをそのグループに追加するだけです。その後、ログインするとホームディレクトリが自動的に作成されます。
皆様のご協力・アイデアありがとうございます。しかし、結局のところ、ADグループが管理するのが最も簡単なようです。
答え2
この問題を解決する 1 つの方法は、SSH キーの使用を強制し、SSH ログインでパスワードの使用を無効にすることです。これにより、/home/<user>/.ssh/authorized_keysファイルを所有している人だけがリンクできます。
答え3
解決策1:
PAMモジュールが利用可能pam_homecheck
これが行うことは、ユーザーのホームディレクトリが存在することを確認し、ホームディレクトリがない場合はセッションを拒否するだけです。
問題はopenSUSEでのみ利用可能ですが、pam_homecheck.so
ダウンロードしたパッケージから削除してくださいldd pam_homecheck.so
。
解決策2:
以下を追加できますが、/etc/bashrc
シェル/パテログインにのみ適用されます。
[[ $HOME == / ]] && { echo "Error: Home Dir not define.."; exit 1; }
解決策3:
ホームディレクトリが設定されていない場合は拒否します(以下の手順に従ってUbuntuでテストして動作します)。
DenyWinScp
aptitude install libpam-script
目的のエディタを使用して ""を開き、/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
シェル/パテでログインを拒否
既定の場所 (たとえば "") で同じスクリプトを参照して実行するか、/usr/share/libpam-script/pam_script_auth
ログ " tail -f /var/log/auth.log
" で確認できます。