Oth*_*eus 3 security root pam sshd
我想像往常一样允许所有用户使用 SSH,但我想根据一组 IP 地址限制 root 的访问权限。因此,用户peter,paul,lary可以在任何地方登录,但root只能从主机登录a.b.c.d和q.r.s.t。
sshd_config的AllowUsers将不适合这项工作。如果我指定任何内容,那么我必须指定所有用户。AllowGroups,即使用户被列入白名单,也会无条件地进行检查AllowUsers;因此,如果我尝试通过将非 root 用户放入一个组来将非 root 用户列入白名单,然后将该组添加到AllowGroups,则身份验证仍然会失败,因为 root 不在有效的允许组中。sshd_config的DenyUsers可能的工作,如果我能以某种方式白名单设置的IP地址根已就其他拒绝。如果我只有一个 IP,它可能与!运营商合作。optionsauthenticated_keys 文件中的密钥并完全禁用root 密码来部分执行此操作。问题是这个文件不是系统策略,可能会被另一个(root 访问)用户覆盖。目前,这是我得到的最佳选择,我不喜欢它。另外,如果我取消root密码,我组中的某个人会生我的气。(如果我不使用 root 密码,有人可以使用来自任何 IP 的密码通过 root 登录。)我试图用 PAM 做到这一点,特别是通过pam_listfile,但我的方法似乎根本不起作用:
auth required pam_sepermit.so
auth required pam_listfile.so file=/etc/root-whitelist.txt sense=allow item=rhost apply=root
auth include password-auth
Run Code Online (Sandbox Code Playgroud)
root-whitelist.txt文件里面是允许的IP地址,一行一行。我无法获得拒绝未列出的 IP 访问的规则。
该pam_listfile方法是否可用而我只是弄错了?有没有更好的办法?
我的同事为我指出了与 /u/meuh 相同的方向,但使用的方法略有不同。
Match Address "172.24.*.33"
PermitRootLogin yes
Match Address "192.168.1.18,192.168.1.20"
PermitRootLogin yes
Run Code Online (Sandbox Code Playgroud)
根据您的 ssh 版本,您也许可以围绕AllowUsers 设置匹配条件。man sshd_config列出“匹配”下允许的命令。如果那里有AllowUsers,您可以尝试以下操作。确保它位于文件末尾。
Match User root
AllowUsers root@ a.b.c.d root@q.r.s.t
Run Code Online (Sandbox Code Playgroud)
例如,在 OpenSSH_6.0p1 Debian 中不行,但在 OpenSSH_6.6.1p1 Ubuntu 中可以。
| 归档时间: |
|
| 查看次数: |
5729 次 |
| 最近记录: |