LDAP で /home ディレクトリを使用するユーザーに SSH ログインを制限します。

LDAP で /home ディレクトリを使用するユーザーに SSH ログインを制限します。

現在、ユーザー認証のために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" で確認できます。

関連情報