限制具有 /home 目录的用户从 LDAP 进行 ssh 登录

限制具有 /home 目录的用户从 LDAP 进行 ssh 登录

我有一个托管多个用户网页的 Apache 服务器 (RHEL 6),该服务器当前连接到我的 Active Directory 环境以对用户进行身份验证。服务器用于自动托管用户放入其 /home/<user>/public_html 文件夹中的内容。我还将此服务器配置为使用 chroot,以便用户将无法浏览服务器上主文件夹之外的任何其他内容。登录脚本不会为用户创建主文件夹。这些是手动创建的,因为我们只希望某些用户能够从此服务器托管网页。

问题是,任何用户当前都可以登录服务器,而不是进入他们的 /home 文件夹(因为它不存在),而是自动进入 /。这使他们能够查看其组具有读取访问权限的服务器上的任何文件/文件夹。这是一个安全问题,我想将登录限制为拥有 /home 目录的用户。我们不想将 AD 组或用户列表指定为经过身份验证的,因为该列表可能会变得很长并且难以管理,尽管它可能比编写 PAM 模块更容易。

有没有办法将 LDAP 登录限制为只有已经拥有 /home 目录的用户?我在 PAM 选项或文档中没有找到任何内容。

答案1

由于访问管理需要在本地主机上进行大量工作,因此我们决定在 Active Directory 中创建一个组,并将登录限制为该组中的用户。

这可以通过编辑 /etc/security/pam_winbind.conf 文件来完成,其中包含以下字段以及我们想要限制访问的组或用户的 SID(逗号分隔)。

require_membership_of=

然后,我们将过滤对该组的 chroot 限制(或将用户放入本地组),以限制他们对其自己的主目录的 sftp 访问。这还允许我们将 oddjobs mkhomedir 添加回 pam,然后为了允许访问服务器,我们只需将用户添加到该组即可。然后他们可以登录,并且将自动创建他们的主目录。

感谢大家的帮助/想法,但看起来 AD 组毕竟是最容易管理的。

答案2

解决此问题的一种方法是强制他们使用 ssh 密钥,并禁止使用密码进行 ssh 登录。这样,只有拥有 /home/<user>/.ssh/authorized_keys 文件的人才能连接。

答案3

解决方案一:

您可以使用PAM模块pam_homecheck

它所做的只是检查是否存在用户的主目录,如果没有找到则拒绝会话。

问题是,它仅在 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

使用您最喜欢的编辑器打开“ /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

相关内容