系统安全

文章介绍了Linux系统中确保账号安全的一些基本措施,包括设置非登录用户的Shell为/sbin/nologin,锁定和解锁用户账号,以及删除无用账号。此外,还讨论了密码安全控制,如设置密码有效期,强制用户下次登录时更改密码,以及使用chage命令管理密码策略。文章还提到了sudo的使用和日志记录,以及BIOS引导和GRUB菜单的安全配置,包括限制GRUB菜单的编辑和启用加密。最后,讨论了终端登录的安全控制,如限制root登录终端和禁止普通用户登录。

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    //取消普通用户登录限制

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值