linux – 首次登录时构建用户chroot

我正在使用ldap进行远程用户身份验证,我基本上需要弄清楚如何:

一个.从机器a通过nfs chroot机器b上的用户(如果没有安装比我更舒服的目录,这似乎不可能)

要么 – – – –

湾将用户添加到计算机a上的ldap数据库之后,强制在用户登录期间在计算机b上执行脚本,该用户将在首次登录之前允许用户执行任何操作之前自动chroot用户.

我认为我的第二个选项可能是最好的选择,并且正在考虑使用pam_exec.so来调用脚本.但是,我对这种方法有一些担忧.首先,我不确定将要运行的脚本是否具有执行chroot所需的root权限.其次,我不确定pam_exec在登录过程中是否足够早发生是一个有效的选择.最后,我需要确保代码在pam.d / ssh和pam.d / su中都能正常工作,以将其视为有效的解决方案.

我的担忧是否有效,或者看起来这是一个很好的解决方案?或者是否有更好的方法来解决这个问题.

解决方法

首先,可以说是 chroot might not be considered a security feature.有 opinions in the other direction,as well.

可以说,您需要实现的是一种可重现的,可审计的方法,用于限制用户执行除严格允许的操作之外的操作的能力.

如果您在LDAP中注册用户,您肯定已经部署了在连接到此LDAP的任何计算机上执行LDAP身份验证的机制,无论是通过sssd还是使用任何其他PAM模块,它与解决方案的其余部分无关,并假设已经到位(在我的情况下,我使用freeIPA和sssd).

为了实现这种情况,我目前做的是以下内容(请注意,这种限制要求满足几个条件,否则可以轻松规避限制):

>用户不属于wheel组,唯一授权使用su(通过PAM强制执行).通常,存在非LDAP用户(sysadm),以允许受信任的管理员在灾难恢复或LDAP不可用时执行操作.
>为用户提供一个正确安全的rbash,其中只有一个指向私有〜/ bin的PATH,这个〜/ bin /目录包含指向所有允许命令的链接,例如:

$ll ~/bin
total 0
lrwxrwxrwx. 1 root dawud 14 Sep 17 08:58 clear -> /usr/bin/clear*
lrwxrwxrwx. 1 root dawud  7 Sep 17 08:58 df -> /bin/df*
lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 egrep -> /bin/egrep*
lrwxrwxrwx. 1 root dawud  8 Sep 17 08:58 env -> /bin/env*
lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 fgrep -> /bin/fgrep*
lrwxrwxrwx. 1 root dawud  9 Sep 17 08:58 grep -> /bin/grep*
lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 rview -> /bin/rview*
lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 rvim -> /usr/bin/rvim*
lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 sudo -> /usr/bin/sudo*
lrwxrwxrwx. 1 root dawud 17 Sep 17 08:58 sudoedit -> /usr/bin/sudoedit*
lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 tail -> /usr/bin/tail*
lrwxrwxrwx. 1 root dawud 11 Sep 17 08:58 wc -> /usr/bin/wc*

>为用户提供受限制的只读环境(考虑LESSSECURE,TMOUT,HISTFILE等变量).这是为了避免shell从less或vim等命令中逃脱.
>如果MAC限制到位(您使用的特定GNU / Linux发行版已启用SELinux),则用户将映射到SELinux用户staff_u,并有权通过sudo按需要执行其他用户的命令.需要仔细检查允许的特定漏洞以防止用户绕过这些限制,并且还可以在现有LDAP基础结构中部署(这是freeIPA功能之一).
>用户’/ home,/ tmp和/ var / tmp通过/etc/security/namespace.conf进行多实例化:

/tmp       /tmp/.inst/tmp.inst-$USER-     tmpdir:create   root
/var/tmp   /tmp/.inst/var-tmp.inst-$USER- tmpdir:create   root
$HOME      $HOME/$USER.inst/              tmpdir:create   root

目录的多实例化并不是一项新功能,现在已经有很长时间了.作为参考,请参见this article from 2006.事实上,许多模块默认使用pam_namespace,但/etc/security/namespace.conf中的默认配置不启用多实例化.
此外,/ etc / security / namedspace.init应使所有骨架文件对用户只读,并由root拥有.

通过这种方式,您可以选择是否代表其他用户(通过sudo)代表自己(通过private / / bin目录中的链接,通过/ etc / skel提供,如上所述)代表自己执行任何命令(或通过/ etc / skel提供)一个都没有.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


查找全部容器的日志文件 $ sudo find /var/lib/docker/containers -name *.log 查看日志位置 $ docker inspect --format='{{.LogPath}}' <container_name> 实时查询内容 $
Linux日志文件中列属性的详细解析
在Linux系统中没有duf命令,如何有效地管理磁盘空间?
深入探讨EncryptPad在Linux操作系统中的功能和优势
原理和应用场景:Linux中ttyload工具的工作原理和实际用途
深度解析SELinux的三种策略类型
评估Linux系统性能的ttyload工具使用效果
分享在Linux系统中检测SSH版本的方法
介绍Linux平台上的数据加密工具EncryptPad
在Linux系统中,如何查看和诊断块设备信息?
在Linux环境下如何查看块设备信息?
探索Linux操作系统下的数据加密工具EncryptPad
学会在Linux系统中查看硬盘信息
分析SELinux:原理与实践
掌握SELinux策略类别
技巧:有效解读和管理Linux日志文件
查看Linux系统中的所有用户
了解Linux系统中各种不同类型的日志文件
深入理解Linux PS命令
方法:在Linux操作系统中查看用户