提高 Linux 用户帐户安全性的 5 种方法
想要保护您的 Linux 系统免受未受保护的用户帐户造成的各种威胁吗?以下是一些有用的入门提示。
保护 Linux 服务器和系统安全的第一步也是最关键的一步是防止恶意方进行不必要的访问。适当的用户帐户控制是增强系统安全性的众多方法之一。
强化的用户帐户可防止系统遭受最常见的水平或垂直权限升级攻击方法。因此,作为 Linux 系统管理员,您还有责任通过有效的安全技术保护您的服务器。
本文介绍了一些基本的用户帐户安全控制,以防止不必要的访问并修复可能导致系统泄露的漏洞。
1. 限制root账户访问
默认情况下,每个 Linux 系统安装都会设置一个 root 帐户,任何人都可以通过 SSH 从外部访问。但是,通过 SSH 访问 root 帐户或系统内部的多个用户访问可能会导致否认问题。
例如,攻击者可以暴力破解 root 用户身份登录并访问系统。
要限制来自 Linux 系统内部/外部的不必要的 root 访问,您可以:
添加另一个用户并授予其 root 权限
禁用 SSH root 登录
创建一个新的超级用户
要向常规 Linux 用户帐户授予 sudo 或 root 权限,请将用户添加到 sudo 组,如下所示:
usermod -aG sudo username
现在使用 su 命令切换到用户帐户,并通过发出仅 root 用户可以访问的命令来验证其 root 权限:
su - username
sudo systemctl restart sshd
启用 sudo 权限可以提供一些良好的安全优势,例如:
您无需与普通用户共享 root 密码。
它可以帮助您检查普通用户运行的所有命令,这意味着它将命令执行的人员、时间和地点详细信息存储在 /var/log/secure 文件中。
此外,您还可以编辑/etc/sudoers文件来限制普通用户的超级用户权限。您可以使用命令su -l来检查用户当前的root权限。
禁用 root SSH 登录
要在系统上禁用根 SSH 访问,首先打开主配置文件。
sudo vim /etc/ssh/sshd_config
现在取消注释以下行,将 root 登录权限设置为 no:
PermitRootLogin no
保存文件并通过键入以下内容重新启动 sshd 服务:
sudo systemctl restart sshd
现在,每当您尝试以 root 用户身份通过 SSH 进入系统时,您都会收到以下错误消息:
Permission denied, please try again.
2. 设置帐户的到期日期
控制不必要访问的另一种有效方法是为临时使用创建的帐户设置到期日期。
例如,如果实习生或员工需要访问系统,您可以在帐户创建期间设置到期日期。这是一项预防措施,以防您在帐户离开组织后忘记手动删除或删除帐户。
使用 chage 命令和 grep 实用程序来获取用户的帐户过期详细信息:
chage -l username| grep account
输出 :
Account expires : never
如上所示,它不输出到期日期。现在使用带有 -e 标志的 usermod 命令以 YYYY-MM-DD 格式设置到期日期,并使用上面的 chage 命令。
usermod -e 2021-01-25 username
chage -l username| grep account
3、提高账号密码安全性
实施强密码策略是保护用户帐户的一个重要方面,因为弱密码使攻击者能够通过暴力、字典或彩虹表攻击轻松侵入您的系统。
选择易于记住的密码可能会带来一些便利,但它也为攻击者借助在线可用工具和单词列表猜测密码提供了机会。
设置密码到期日期
此外,Linux 在 /etc/logins.defs 文件中提供了一些默认选项,允许您设置帐户密码时效。使用 chage 命令并 grep 密码过期详细信息,如下所示:
chage -l username | grep days
Variables | Default Value | Usage | Ideal Value |
---|---|---|---|
PASS_MAX_DAYS | 9999 | The default number of days to use a password which depends on the type of your account setup | 40 |
PASS_MIN_DAYS | Prevents users from changing their password immediately | 5 | |
PASS_MIN_LEN | 5 | Forces the user to set passwords of a certain length | 15 |
PASS_WARN_AGE | Warns the user to change the password before being forced to do so | 7 |
对于正在使用的帐户,您可以通过 chage 命令控制密码时效,将 PASS_MAX_DAYS、PASS_MIN_DAYS 和 PASS_WARN_AGE 设置为 40、5 和 7。
chage -M 40 -m 5 -W 7 username
密码哈希
强化帐户密码安全性的另一种方法是将密码哈希值存储在 /etc/shadow 文件中。哈希是一种单向数学函数,它将密码作为输入并输出不可逆的字符串。
早些时候,在 Linux 系统上,每当用户输入密码登录时,系统都会生成其哈希值,并将其与 /etc/passwd 文件中存储的哈希值进行交叉检查。
然而passwd文件权限访问存在一个问题,即任何具有系统访问权限的人都可以读取该文件并用彩虹表破解哈希。
因此,Linux 现在将哈希值保存在 /etc/shadow 文件中,并具有以下一组访问权限:
ls -l /etc/shadow
---------- 1 root root 1626 Jan 7 13:56 /etc/shadow
您仍然可以使用存储哈希值的旧方法来安装 Linux。您可以通过运行pwconv命令来修改它,这样它就会自动将密码哈希值保存到/etc/shadow文件中。同样,您可以使用 pwunconv 命令启用其他方法(/etc/passwd 文件)。
4. 删除未使用的用户帐户
不良行为者可以通过更新该帐户并使其看起来像合法用户来利用系统中未使用和过期的帐户。要在用户离开组织时删除非活动帐户和关联数据,首先,找到与该用户相关的所有文件:
find / -user username
然后,禁用该帐户或设置如上所述的到期日期。不要忘记备份用户拥有的文件。您可以选择将文件分配给新所有者或将其从系统中删除。
最后,使用 userdel 命令删除用户帐户。
userdel -f username
5.限制特定用户组的远程访问
如果您在 Linux 计算机上托管 Web 服务器,则可能需要仅允许特定用户通过远程 SSH 访问系统。 OpenSSL 允许您通过交叉检查用户是否属于特定组来限制用户。
为此,创建一个名为 ssh_gp 的用户组,添加要授予该组远程访问权限的用户,并列出用户组信息,如下所示:
sudo groupadd ssh_gp
sudo gpasswd -a username ssh_gp
groups username
现在,打开 OpenSSL 主配置文件以包含允许的用户组 ssh_gp。
sudo vim /etc/ssh/sshd_config
AllowGroups ssh_gp
请记住取消注释该行以确保成功包含组。完成后,保存并退出文件并重新启动服务:
sudo systemctl restart sshd
维护 Linux 上的用户帐户安全
如今,大多数组织都在 Linux 上托管 Web 服务器、防火墙和数据库等关键基础设施,任何内部组件的泄露都会对整个基础设施构成重大威胁。
鉴于设置的重要性,管理和保护用户帐户是 Linux 管理员面临的基本挑战。本文列出了帐户管理员必须采取的一些安全措施,以保护系统免受因未受保护的用户帐户而造成的潜在威胁。