1.账号安全基本措施
将非登录用户的Shell设为/sbin/nologin
格式:usermod -s /sbin/nologin 用户名
[root@localhost ~]# useradd cs //创建用户cs
[root@localhost ~]# passwd cs
更改用户 cs 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# usermod -s /sbin/nologin cs //设置成不可登陆
[root@localhost ~]# tail -3 /etc/passwd
sea:x:1000:1000:sea:/home/sea:/bin/bash
abc:x:1002:1002::/home/abc:/bin/bash
cs:x:1003:1003::/home/cs:/sbin/nologin
锁定长期不使用的账号:
锁定用户账号
usermod -L 用户名
passwd -l 用户名
解锁用户账号
usermod -U 用户名
passwd -u 用户名
查看账户有没有被锁:passwd -S 用户名
[root@localhost ~]# usermod -L cs // 锁定用户cs
[root@localhost ~]# passwd -S cs //查看用户cs有没有被锁
cs LK 2023-04-13 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]# passwd -l cs //锁定用户cs
锁定用户 cs 的密码 。
passwd: 操作成功
[root@localhost ~]# usermod -U cs //解锁用户cs
[root@localhost ~]# passwd -u cs //解锁用户cs
解锁用户 cs 的密码。
passwd: 操作成功
删除无用的账号
命令
userdel 用户名 //删除用户,但不删除用户的家目录
userdel -r 用户名 //删除用户的同时,删除他的家目录
userdel 用户名。删除用户,但不删除用户的家目录。
用户被删除后,他的家目录会变成无主文件,文件的属主和属组位显示的是原主人的UID和GID。
[root@localhost ~]# userdel 222
[root@localhost ~]# ls /home/
222 333 444 apache cs pp
[root@localhost ~]# ls -d1 /home/222
/home/222
userdel -r 用户名。删除用户的同时删除他的家目录。
[root@localhost ~]# ls /home/
222 333 444 apache cs pp
[root@localhost ~]# userdel -r 333
[root@localhost ~]# ls /home/
222 444 apache cs pp
2.密码安全控制:
1.设置密码有效期:
chage -M 60 用户名 #这种方法适合修改已经存在的用户
[root@localhost ~]# chage -M 60 cs
[root@localhost ~]# chage -l cs
最近一次密码修改时间 :4月 13, 2023
密码过期时间 :6月 12, 2023
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :60
在密码过期之前警告的天数 :7
vim /etc/login.defs #这种适合以后添加新用户
PASS_MAX_DAYS 时间
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999 //修改时间
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
"/etc/login.defs" 72L, 2028C
chage命令
chage [选项] 用户名
|
m |
密码可更改的最小天数 为0时代表任何时候都可以更改密码 |
|
M |
密码保持有效的最大天数 |
|
W |
用户密码到期前,提前收到警告信息的天数 |
|
E |
帐号到期的日期。过了这天,此帐号将不可用 |
|
d |
设置”最后一次修改密码的日期“。设置为 0 有特殊意思,表示用户应该在下次登录系统时更改密码 |
|
i |
停滞时期。允许密码过期后多少天内仍能使用,如果一个密码已过期这些天,那么此帐号将不可用 |
|
l |
例出当前的设置 |
chage -M ,设置用户密码的有效期。
[root@localhost ~]# chage -M 30 cs
[root@localhost ~]# chage -l cs
最近一次密码修改时间 :密码必须更改
密码过期时间 :密码必须更改
密码失效时间 :密码必须更改
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :30
在密码过期之前警告的天数 :7
2.要求用户下次登录时改密码:
chage -d 0 [用户名] 强制要求用户下次登陆时修改密码
[root@localhost ~]# chage -d 0 cs //强制要求用户下次登录时修改密码
[root@localhost ~]# grep cs /etc/shadow
cs:$6$IgvDuLcv$mRDn.IYH8mf/HCymvVBaJNvMTGyki4zPTlq2sgwPMVAiGT86kGWORSwfwigBXDRh9cRZa3W3ghFzq2x2L5kXf.:0:0:30:7:::
[root@localhost ~]# chage -l cs
最近一次密码修改时间 :密码必须更改
密码过期时间 :密码必须更改
密码失效时间 :密码必须更改
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :30
在密码过期之前警告的天数 :7
sudo(用户提权)
查看sudo操作记录:
- 需要启用 Default logfile 配置
- 默认日志文件:/var/log/sudo.log
sudo特性:
- sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员
- sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器
- sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票
- sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,权限必须为0440。
使用visudo命令,可编辑配置文件/etc/sudoers:
#用户 登入主机 = (代表用户) 命令
#user host=(username) command
root ALL=(ALL) ALL
%wheel ALL=(ALL) NOPASSWD:ALL
#root表示允许哪个用户。%wheel表示wheel组。
#第一个ALL表示通过哪些主机登入。
#第二个ALL表示以哪个用户身份。
#最后一个ALL表示允许运行哪些命令。
#NOPASSWD表示使用sudo命令不需要验证密码。
sudo基本语法:
sudo [-u username] [command] //-u:以哪个用户的身份运行命令
sudo -V //查看相关配置信息
系统引导和登录控制
开关机安全控制
调整BIOS引导设置原则
-
将第一引导设备设为当前系统所在硬盘;
-
禁止从其他设备(光盘、 U盘、网络)引导启动系统;
-
将安全级别设为setup,并设置管理员密码。
禁用重启热键:Ctrl+Alt+Delete,避免因用户误操作重启。
GRUB限制
- 未经授权禁止修改启动参数
- 未经授权禁止进入指定系统
通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁。可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。
GRUB菜单加密的实现
定义每个菜单项的所有脚本都存放在/etc/grub.d目录中,这些脚本的名称必须有两位的数字前缀,其目的是构建GRUB 2菜单时定义脚本的执行顺序以及相应菜单项的顺序,比如00_header文件首先被读取。
| 文件 | 描述 |
|---|---|
| 00_header | 设置grub默认参数 |
| 10_linux | 系统中存在多个linux版本 |
| 20_ppc_terminfo | 设置tty控制台 |
| 30_os_prober | 设置其他分区中的系统(硬盘中有多个操作系统时设置) |
| 40_custom和41_custom | 用户自定义的配置 |
设置GRUB 2加密
由于GRUB 2负责引导linux系统,其作为系统中的第一道屏障的安全性非常重要,对GRUB 2进行加密可以实现安全性。
在默认情况下,GRUB 2对所有可以在物理上进入控制台的人都是可访问的。任何人都可以选择并编辑任意菜单项,并且可以直接访问GRUB命令行。要启用认真支持,必须将环境变量超级用户设置为一组用户名(可以使用空格、逗号、分号作为分隔符)这样就只允许超级用户使用GRUB命令行、编辑菜单项以及执行任意菜单项。
终端登录安全控制
限制root只在安全终端登录
安全终端配置:/etc/securetty
示例:
将终端tty5、tty6注释掉,禁止root用户从这两个终端登录。
[root@localhost ~]# vi /etc/securetty //编辑配置文件,将终端tty5、tty6注释掉
#tty5
#tty6
禁止普通用户登录
- 建立/etc/nologin文件
- 删除nologin文件或者重启后即恢复正常
[root@localhost ~]# touch /etc/nologin //禁止普通用户登录
[root@localhost ~]# rm -rf /etc/nologin //取消普通用户登录限制
文章介绍了Linux系统中确保账号安全的一些基本措施,包括设置非登录用户的Shell为/sbin/nologin,锁定和解锁用户账号,以及删除无用账号。此外,还讨论了密码安全控制,如设置密码有效期,强制用户下次登录时更改密码,以及使用chage命令管理密码策略。文章还提到了sudo的使用和日志记录,以及BIOS引导和GRUB菜单的安全配置,包括限制GRUB菜单的编辑和启用加密。最后,讨论了终端登录的安全控制,如限制root登录终端和禁止普通用户登录。
751

被折叠的 条评论
为什么被折叠?



