完全锁定服务器上的用户帐户,包括 ssh

完全锁定服务器上的用户帐户,包括 ssh

如果可能的话,我需要锁定一些用户帐户,而又不弄乱他们的主页。

正常的方式是,usermod -L user但它似乎保留开放的 ssh 登录与公钥身份验证(通常在此服务器上使用)。

我知道我可以mv /home/user/.ssh /home/user/_ssh或类似的东西,但这是这样做的正确方法吗?

我缺少什么?

答案1

文档man usermod为您提供了推荐的解决方案:

-L,--lock锁定用户的密码。这会!在加密密码前面放置一个 ,从而有效地禁用密码。您不能将此选项与-p或 一起使用-U

注意:如果您希望锁定帐户(不仅仅是使用密码访问),您还应该将EXPIRE_DATE设为1

进而

-e,--expiredate EXPIRE_DATE用户帐户将被禁用的日期。日期以格式指定YYYY-MM-DD

EXPIRE_DATE参数将禁用帐户的过期时间。

所以,把它变成一个真实的例子

usermod -L -e 1 someuser     # Lock
usermod -L -e '' someuser    # Unlock

如果您可能设置了默认到期日期,则/etc/default/useradd可以将其值(如果有)包含在解锁过程中:

usermod -U -e "$( . /etc/default/useradd; echo "$EXPIRE")" someuser

对于帐户过期的用户来说,计划的作业cron也会被禁用,而不仅仅是帐户锁定的用户。错误消息journalctl -u cron显示过期用户的帐户名(在本例中test2):

Apr 30 11:47:01 pi CRON[26872]: pam_unix(cron:account): account test2 has expired (account expired)
Apr 30 11:47:01 pi cron[472]: Authentication failure
Apr 30 11:47:01 pi CRON[26872]: Authentication failure

安排的作业at仍未尝试。 (我不清楚一旦过了截止日期它们是否会运行;从经验来看似乎不会。)

已在锁定且过期的帐户下运行的其他进程不受影响并继续运行。

答案2

发出“usermod -L user”后,您可以通过将此行添加到末尾来拒绝 ssh 访问/etc/ssh/sshd_config文件:

DenyUsers user

或者您可以为此目的创建一个组,以便通过将用户添加到该组来拒绝 ssh 登录:

groupadd deny-ssh
usermod -a -G deny-ssh user

并将该组添加到末尾/etc/ssh/sshd_config文件:

DenyGroups deny-ssh

每次更改后/etc/ssh/sshd_config文件确保重新加载 sshd 守护进程以应用更改:

systemctl reload sshd

reload 命令将加载新设置并保持所有现有 ssh 会话打开。


或者,您可以更改用户 shell,这样即使他登录也不会获得 shell:

usermod --shell /usr/sbin/nologin user

我建议创建一个简单的 bash 脚本,只需一个命令即可完成上述所有操作。

拒绝登录.sh:

#!/bin/bash

#Lock user account
usermod -L $1

#Deny SSH connections
usermod -a -G deny-ssh $1

#Remove user Shell
usermod --shell /usr/sbin/nologin $1

#Reload sshd
systemctl reload sshd

现在您只需像这样执行脚本:

./deny-logon.sh user

并且它会自动为“用户”进行上述所有更改。

编辑:@roaima 解决方案是最正确的解决方案,帐户过期会禁用对其的所有访问,如果您想阻止用户登录,则应该这样做。

答案3

您应该能够通过添加用户的用户名或组来禁用用户的 ssh 登录

/etc/ssh/sshd_config

在设置DenyUsers和/或DenyGroup.

man 5 sshd_config

不要忘记HUPsshd。

答案4

锁定账户才是正确的做法。您可能还想删除authorized_keys 文件以阻止SSH。

请记住,除了 SSH 之外,还有其他登录方式。

使用“*rc”例程执行任何操作都很笨拙,但通常用于“仅限 sftp”帐户(如果它是 sftp 或 SCP 所说的实用程序帐户)。

但是 !password 更好改变如果需要恢复,则提供他们的密码。

一如既往,安全地保留备份。

相关内容