Linux系统用户安全(如何给其他用户授权)及引导登录的控制

  • 账号安全控制的基本措施
  • 如何对系统账号进行清理
  • 系统账号的清理
  • 密码的安全控制
  • 设置密码有效期(chage命令)
  • 命令历史限制
  • 如何查看命令条目
  • 如何减少记录的命令条数?
  • 修改环境变量配置文件
  • history -c 命令
  • 登陆时自动清空命令历史
  • 编辑~/.bash_profile文件
  • 切换用户和对用户进行授权
  • su命令
  • Linux中的PAM安全认证
  • 使用sudu机制给其他用户进行提权
  • 开关机的安全控制
  • 终端登录安全控制


账号安全控制的基本措施

如何对系统账号进行清理

系统账号的清理

  • 将非登录用户的shell设为/sbin/nologin

usermod -s /sbin/nologin 用户名(设置为不可登录)

  • 锁定长期不适用的账号
  • usermod -L 用户名
  • passwd -l 用户名
  • passwd -S 用户名
  • 删除无用账号
    userdel [-r] 用户名(-r选项删除用户家目录)
  • 锁定账号文件passwd(用户配置文件)、shadow(用户密码文件)
  • chattr +i /etc/passwd /etc/shadow【即锁定用户账户信息/用户密码信息,无法增删改查用户信息】
  • chattr -i /etc/passwd /etc/shadow【即解锁用户配置文件】
  • lsattr /etc/passwd /etc/shadow【查看锁定文件并查看状态;用于查看文件是否被锁定】
  • PS:chattr可用于锁定大部分的文件

密码的安全控制

设置密码有效期(chage命令)

  1. chage -M [用户名]

linux为普通用户授权java权限 linux给其他用户授权_linux

  1. chage -d 0 [用户名]

该命令强制用户下次登陆时修改密码

我们仍使用zhangsan用户做例子:

linux为普通用户授权java权限 linux给其他用户授权_运维_02

完成后在图形界面登录zhangsan用户

linux为普通用户授权java权限 linux给其他用户授权_配置文件_03


chage -d命令后面跟的数字为0属于特殊含义,代表强制用户下次登陆时修改密码;如果为普通数字该命令含义为该用户最后一次修改密码的时间,该命令后面也可以跟具体时间如“2008-8-8”代表最后一次修改密码的时间为1970-1-1到2008-8-8期间的总天数

命令历史限制

如何查看命令条目

history命令

linux为普通用户授权java权限 linux给其他用户授权_安全_04


ctrl+R组合键

该组合键可以搜索之前操作命令的关键词

linux为普通用户授权java权限 linux给其他用户授权_配置文件_05

如何减少记录的命令条数?

修改环境变量配置文件

我们首先要知道历史命令的配置文件在 /etc/profile中,我们可以修改这个环境变量配置文件限制命令显示的条目数

linux为普通用户授权java权限 linux给其他用户授权_linux为普通用户授权java权限_06


linux为普通用户授权java权限 linux给其他用户授权_linux为普通用户授权java权限_07


linux为普通用户授权java权限 linux给其他用户授权_安全_08

history -c 命令

该命令只用于临时清空所有命令记录,重启后之前操作仍然可见

linux为普通用户授权java权限 linux给其他用户授权_运维_09

登陆时自动清空命令历史

编辑~/.bash_profile文件

该文件编辑效果为当前用户开机后首次登陆系统时会执行一次编辑的命令

linux为普通用户授权java权限 linux给其他用户授权_linux_10


linux为普通用户授权java权限 linux给其他用户授权_linux_11

切换用户和对用户进行授权

su命令

su命令的用途:Substitute User,切换用户

格式:su - [目标用户名].

如果su直接后面跟切换的用户名,会在之前用户所在的目录直接进行切换,如果是su - [目标用户名],切换用户后,目标用户将在自己的家目录下:

linux为普通用户授权java权限 linux给其他用户授权_配置文件_12

Linux中的PAM安全认证

PAM(Pluggable Authentication Modules)是一种插入式认证模块,是一种高效而且灵活便利的用户级别的认证方式,也是当前Linux服务器普遍使用的认证方式。使用PAM认证模块可以加强su命令的使用控制,只允许个别用户使用su命令进行切换。

PAM认证的构成
查看某个程序是否支持PAM认证,我们可以使用ls命令查看

举例:比如我们想查看su命令是否支持PAM认证模块,我们可以查看PAM的配置文件进行过滤:

linux为普通用户授权java权限 linux给其他用户授权_配置文件_13


linux为普通用户授权java权限 linux给其他用户授权_配置文件_14

  • 如上图所示,每一行都是一个独立的认证过程
  • 每一行可以区分为三个字段
  • 认证类型
  • 控制类型

linux为普通用户授权java权限 linux给其他用户授权_linux_15

使用sudu机制给其他用户进行提权

sudo令的用途以及方法

sudo命令用途:以其他用户身份(如root)执行收授权的命令

格式:sudo [命令]

linux为普通用户授权java权限 linux给其他用户授权_安全_16


从上图可以看到,在我们没有授予普通用户相关权限时,我们普通用户无法拥有root超级管理员的权限去进行一些操作,所以我们要给普通用户提权才能进行操作

如何配置sudo授权

sudo的授权有2种方式(两种操作方式均能进入用户权限的配置文件,且都需要在root超级管理员用户下进行操作)

  • visudo
  • vi /etc/sudoers(此文件默认权限为440,保存时需要使用wq!强制保存)

linux为普通用户授权java权限 linux给其他用户授权_linux_17

启用sudo的操作日志

  1. visudo或者vi /etc/sudoers
  2. 在配置文件中写入Defaults logfile =“/var/log/sudo”(代表将sudo的操作日志存入该路径的文件中)

linux为普通用户授权java权限 linux给其他用户授权_安全_18

开关机的安全控制

调整BIOS引导设置

  • 第一引导设备设为当前系统所在硬盘
  • 禁止从其他设备(光盘、U盘、网络)引导系统
  • 将安全级别设为setup,并设置管理员密码

GRUB限制

使用grub2-mkpasswd-pbkdf2生成密钥

linux为普通用户授权java权限 linux给其他用户授权_linux_19


linux为普通用户授权java权限 linux给其他用户授权_linux为普通用户授权java权限_20


从上方两张图片我们可以看到在我们开启系统时可以在引导菜单中按“e”进行我们相关启动项的更改。如果修改不当,容易导致我们的系统无法启动。所以在工作环境中,我们要避免所有人都可以进行这方面内容的修改,进行加密来限制其他用户。

linux为普通用户授权java权限 linux给其他用户授权_安全_21


linux为普通用户授权java权限 linux给其他用户授权_运维_22


修改/etc/grub.d/00_header文件,添加密码记录

接下来我们需要修改我们的默认参数文件(vim /etc/grub.d/00_header):

linux为普通用户授权java权限 linux给其他用户授权_linux_23


生成新的grub.cfg配置文件

我们设置完默认参数文件后,要重新生成一个新的grub.cfg配置文件,来使之前的配置生效,文件位置:/boot/grub2

linux为普通用户授权java权限 linux给其他用户授权_安全_24


linux为普通用户授权java权限 linux给其他用户授权_linux_25

终端登录安全控制

限制root只在安全终端登录

安全终端配置:/etc/securetty

我们直接编辑终端配置文件:

linux为普通用户授权java权限 linux给其他用户授权_运维_26


我们将tty1,tty2,tty3全部禁用(即禁止root用户从tty1,tty2,tty3的终端进行登录),使用"#"在字符前进行注释,之后我们使用ctrl+alt+F1-F5的组合键进行终端的切换,查看是否可以进行切换:

linux为普通用户授权java权限 linux给其他用户授权_安全_27


linux为普通用户授权java权限 linux给其他用户授权_运维_28


禁止普通用户进行登录

命令:touch /etc/nologin

我们使用该命令后,使用普通用户进行登录:

linux为普通用户授权java权限 linux给其他用户授权_安全_29


如果我们需要取消普通用户登录限制:

命令:rm -rf /etc/nologin 即将限制登录文件删除:

linux为普通用户授权java权限 linux给其他用户授权_安全_30


linux为普通用户授权java权限 linux给其他用户授权_linux_31