Linux系统管理之 账号安全控制与sudo授权命令 CentOS 7

一、账号安全控制

(一)系统账号清理

1.将非登陆用户的Shell设为/sbin/nologin或者/bin/falsh

usermod -s /sbin/nologin 用户名

2.锁定长期不使用的账号

usermod -L 用户名           锁定用户账户  
usermod -U 用户             解锁用户账户

passwd -l 用户名            锁定用户密码
passwd -u 用户名            解锁用户账户
passwd -S 用户名            查看用户状态

3.删除无用的账号

userdel -r 用户名           删除用户及其宿主目录 

4.清空一个账号密码

passwd -d 用户名            清空账户密码

5.锁定账号文件passwd、shadow

chattr +i /etc/passwd /etc/shadow      锁定文件 (passwd和shadow可以同时锁定)
lsattr /etc/passwd /etc/shadow         查看文件状态
chattr -i /etc/passwd /etc/shadow      解锁文件

在这里插入图片描述
在这里插入图片描述

/etc/passwd和/etc/shadow都存放的用户账号信息,锁定一个都无法创建用户与更改密码

(二)密码安全控制

1.设置密码有效期

chage -M 日期 用户 用户名       设置用户密码有效期 (适用已有用户)
chage -E xxxx-xx-xx 用户名     设置账户过期日期

在这里插入图片描述

vi /etc/login.defs            修改密码配置文件(适用于新建用户)

PASS_MAX_DAYS 30              修改之后的所有创建的用户有效期都会默认成30天

在这里插入图片描述
在这里插入图片描述

cat /etc/shadow | grep 用户名   查看密码有效日期是否配置成功

2.强制下次登陆更换密码

chage -d 0 用户                    强制在下次登陆时更改密码               
cat /etc/shadow | grep 用户        shadow文件中的第三个字段被修改为0

(三)命令历史限制

1.减少记录的命令条数

/etc/profile这个文件是系统全局变量配置文件,可以通过重启系统或者执行source /etc/profile命令使文件被读取重载。

[root@localhost ~]# vim /etc/profile          编辑全局变量配置文件    
export HISTSIZE=150                 默认1000条 输入=150
:wq
[root@localhost ~]# source /etc/profile       相当使/etc/profile内的命令重载一遍
[root@promote ~]#history

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.登陆时自动清空历史命令

~/.bashrc文件中的命令会在每次打开新的bash shell时(也包括登录系统)被执行

[root@localhost ~]# vim ~/.bashrc
echo " " > ~/.bash_history       
:wq
init 6
history

(四)终端自动注销

闲置600秒后自动注销,与上方减少历史条数类似,不再演示

vi /etc/profile        //编辑全局变量配置文件
export TMOUT=300       //输出timeout=300
. /etc/profile

二、使用su命令切换用户

1.用途及用法
用途:Substitute User,切换用户
格式 : su - 目标用户
2.密码验证

  • root—任意用户,不验证密码
  • 普通用户—其他用户,验证目标用户的密码

su - root 带-选项表示将使用目标用户的登陆Shell环境

(一)限制用户使用su命令

  • 将允许使用su命令的用户加入wheel组
  • 启用pam_wheel认证模块

su命令具有安全隐患:
su命令使得每个用户都具有反复尝试其他用户的登陆密码,若是root用户,则风险更大。
所以需要加强su命令的使用控制,可以借助PAM认证模块,仅允许极个别指定用户可使用su命令进行切换

将允许使用su命令的用户加入wheel组

 gpasswd -a admin wheel     将用户“admin”加入到wheel组中

在/etc/pam.d/su文件里设置禁止用户使用su命令

vim /etc/pam.d/su 

auth    sufficient   pam_rootok.so
............
#auth   required     pam_wheel.so use_uid
............

在这里插入图片描述

  • 以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的
  • 两行都注释也是允许所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码
    (pam_rootok.so模块的主要作用是使uid为0的用户,即 root用户能够直接通过认证而不用输入密码)
  • 如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令
  • 如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令

查看su操作记录
安全日志文件:/var/log/secure

cat /var/log/secure

三、linux中的PAM安全认证

1、su命令的安全隐患

  • 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
  • 为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换

2、PAM可插拔式认证模块

  • 是一种高效而且灵活便利的用户级别的认证方式
  • 也是当前Linux服务器普遍使用的认证方式

3、PAM认证原理

  • PAM认证一般遵循的规律
    Service(服务)→ PAM(配置文件)→ pam_*.soPAM认证
  • 首先要确定哪一项服务,然后加载相应的 PAM 的配置文件(位于 /etc/pam.d 下),最后调用认证文件(位于 /lib64/security 下)进行安全认证
  • 用户访问服务器时,服务器的某一个服务程序把用户的请求发送到 PAM 模块进行认证
  • 不同的应用程序所对应的 PAM 模块是不同的

如果想要查看某个程序是否支持 PAM 认证,可以使用 ls 命令,进行查看 /etc/pam.d/

vim /etc/pam.d/su 

在这里插入图片描述

1.第一列代表PAM认证模块类型

  • auth:对用户身份进行识别,如提示输入密码,判断是否为root。
  • account:对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等
  • password:使用用户信息来更新数据,如修改用户密码
  • session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统

2.第二列代表PAM控制标记

  • required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败
  • requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败
  • sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值
  • optional:不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于 session 类型)
  • include:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项
    PAM实例
用户1 用户2 用户3 用户4
auth required 模块1 pass fail pass pass
auth sufficient 模块2 pass pass fail pass
auth required 模块3 pass pass pass fail
结果 pass fail pass pass

3.第三列代表PAM模块,默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径

4.第四列代表PAM模块的参数,这个需要根据所使用的模块来添加。

在这里插入图片描述

四、使用sudo机制提权

(一)概述

1.sudo是一个授权命令
用途:以其他用户身份(如root)执行授权的命令

(二)配置sudo授权

1.命令:

 visudo
 或者
 vi /etc/sudoers(此文件的默认权限为 440,保存退出时必须执行“:wq!”命令来强制操作)

2.格式
用户 主机名=命令程序列表
用户 主机名=(用户) 命令程序列表

  • 用户:直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户
  • 主机名:使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机
  • (用户):用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令
  • 命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,”进行分隔。ALL则代表系统中的所有命令

案例分析 :

admin ALL=/sbin/ifconfig          //说明admin在所有主机上拥有ifconfig权限
admin1 localhost=/sbin/*,!/sbin/reboot,!/sbin/poweroff	  //通配符“*”表示所有、取反符号“!”表示排除   //说明admin1拥有除了重启和关机的所有权限
%wheel ALL=NOPASSWD: ALL	  //表示wheel组成员无需验证密码即可使用sudo执行任何命令
admin2 ALL=(root)NOPASSWD: /bin/kill, /usr/bin/killall    //说明admin2用户不需要输入密码即可执行kill和killall命令

(三)启动sudo操作日志

visudo                             //进入编辑
Defaults logfile = /var/log/sudo   //将该命令添加至最后一行:wq保存并退出即可

(四)别名创建

1.格式:
用户别名 User_Alias
主机别名 Host_Alias
命令别名 Cmnd_Alias
2.例子分析:

User_Alias ADMIN=admin1,admin2,admin3             用户的别名users包括:admin1,admin2,admin3
Host_Alias HOST=localhost   主机别名hosts包括:localhost,hellolee
Cmnd_Alias CMD=/sbin/*,!/sbin/reboot,!/sbin/poweroff
ADMIN HOST=CMD        相当于:用户组   主机组  =  命令程序列表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、开关机安全控制

1.调整BIOS引导设置

  • 将第一引导设备设为当前系统所在硬盘
  • 禁止从其他设备(光盘、U盘、网络)引导系统
  • 将安全级别设为setup,并设置管理员密码
    2、GRUB限制
  • 使用grub2-mkpasswd-pbkdf2生成密钥
  • 修改/etc/grub.d/00_header文件,添加密码记录
  • 生成新的grub.cfg配置文件

(一)限制更改 GRUB 引导参数

1、通常情况下在系统开机进入GRUB 菜单时,按 e 键可以查看并修改GRUB 引导参数,这对服务器是一个极大的威胁。
2. 可以为 GRUB 菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。

grub2-mkpasswd-pbkdf2 	    //根据提示设置GRUB 菜单的密码
PBKDF2 hash of your password is ……  //省略部分内容为经过加密生成的密码字符串

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak  //备份文件
cp /etc/grub.d/00_header /etc/grub.d/00_header.bak

vim /etc/grub.d/00_header

cat << EOF
set superusers="root"		  //设置用户名为root
password_pbkdf2 root 密码字符串	//设置密码,省略部分内容为经过加密生成的密码字符串
EOF

grub2-mkconfig -o /boot/grub2/grub.cfg	//生成新的 grub.cfg 文件

1.添加密码生成字符串

在这里插入图片描述
2.备份文件

在这里插入图片描述
3.修改配置文件

vim /etc/grub.d/00_header

在这里插入图片描述
4.验证结果
在这里插入图片描述
在这里插入图片描述

(二)禁止 root 用户登录

在 Linux 系统中,login 程序会读取/etc/securetty 文件,以决定允许 root 用户从哪些终端(安全终端)登录系统。

vi /etc/securetty           
#tty5           //想要不让在哪个终端登陆就在该终端前加注释#
tty6         

(三)禁止普通用户登录

login 程序会检查/etc/nologin 文件是否存在,如果存在,则拒绝普通用户登录系统(root 用户不受限制)。

touch /etc/nologin			//创建/etc/nologin文件即禁止普通用户登录
rm -rf /etc/nologin			//删除该文件即取消登录限制

猜你喜欢

转载自blog.csdn.net/weixin_53567573/article/details/113844575