自己的账号自己定,sudo命令帮你筑起防火墙

一、账号安全基本措施

1.1 系统账号清理

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

  • usermod -s /sbin/nologin 用户名
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

1.1.2 锁定长期不适用的账号

  • 锁定:usermod -L 用户名

  • 锁定:passwd -l 用户名
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 解锁:usermod -U 用户名

  • 查看:passwd -u 用户名
    在这里插入图片描述

1.1.3 删除无用的账号

  • userdel -r 用户名
    在这里插入图片描述

1.1.4 锁定账号文件passwd、shadow

  • chattr +i /etc/passwd /etc/shadow
    • 锁定账号文件
      在这里插入图片描述
  • lsattr /etc/passwd /etc/shadow
    • 查看文件状态
      在这里插入图片描述
  • chattr -i /etc/passwd /etc/shadow
    • 解锁文件
      在这里插入图片描述

1.2 密码安全控制

1.2.1 设置密码有效期(新账户)

  • 需进入密码配置文件内修改
  • vim /etc/login.defs
  • 该命令配置完成后,老用户无法修改,新建用户自动修改

模板
在这里插入图片描述
进入文件内发现默认设置的是99999,修改为100保存退出
在这里插入图片描述
创建账户111 并查看信息

在这里插入图片描述

1.2.2 设置密码有效期(老账户)

  • chage -M 有效期 用户名
  • 该命令适合已有用户修改

模板
修改用户111 密码有效期为365天
在这里插入图片描述
在这里插入图片描述

1.2.3 要求用户下次登录时修改密码

  • chage -d 0 用户名
  • 0代表的是把shadow文件内第三个字段替换为0

模板
修改用户111
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

1.3 限制命令历史记录

1.3.1 命令历史限制

  • 减少记录的命令条数
    • vim /etc/profile
    • 修改图上数字即可
      在这里插入图片描述
  • 登录时自动清空命令历史
    • vim ~/.bashrc
    • 文本内部新建命令:echo “” > ~/.bash_history
    • 双引号中间代表空
      在这里插入图片描述

1.3.2 终端自动注销

  • 命令:vim /etc/profile
  • 插入:export TMOUT=时间
    • 单位秒
  • 取消:unset TMOUT
    在这里插入图片描述
    设置600秒后自动注销

二、SU命令切换用户

2.1 概述

  • Substitute User 切换用户
  • 格式:su - 目标用户

2.2 密码验证

  • root 切换其他用户,不验证密码
    在这里插入图片描述

  • 普通用户切换其他用户,验证目标用户的密码
    在这里插入图片描述

2.3 限制使用su命令的用户

2.3.1 添加需要使用su的用户进入wheel组

  • 将允许使用su命令的用户加入wheel组
  • 启用pam_wheel 认证模块
    • gpasswd -a 用户名 wheel
      在这里插入图片描述
  • 用户111添加进wheel组,用户222不添加

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

  • 进入vim /etc/pam.d/su
    在这里插入图片描述
    2、6两行是默认状态(即开启第二行,注释第六行),这种状态下是允许所有用户间使用su命令进行切换的
    三个账户之间随意切换
    在这里插入图片描述

两行都注释也是运行所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码,如果第二行不注释,则root使用su切换普通用户就不需要输入密码

  • pam rootok. so模块的主要作用是使uid为0的用户,即
    root用户能够直接通过认证而不用输入密码
    在这里插入图片描述

如果开启第六行,表示只有root用户和wheel组内的用户才可以使用su命令

在这里插入图片描述
看图可知,111用户可以使用su切换root和222,222用户无法使用su命令

如果注释第二行,开启第六行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令

在这里插入图片描述

  • 不在wheel组内的root无法使用su,组内的111用户可随意使用

2.4 查看su操作记录

  • 安全日志文件:/var/log/secure
    在这里插入图片描述

三、PAM安全认证

PAM(Pluggable Authentication Modules)可插拔式认证模块

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

3.1 作用

  • PAM使用 /etc/pam.d/ 下的配置文件,来管理对程序的认证方式。应用程序调用相应的PAM配置文件,从而调用本地的认证模块
  • 模块放置在/lib64/security下,以加载动态库的形式进行认证
  • 比如使用su命令时,系统会提示输入root用户的密码,这就是su命令通过调用PAM模块实现的。

3.2 su命令的安全隐患

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

3.3 PAM认证原理

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

3.4 PAM配置文件解析

在这里插入图片描述

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

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

3.4.2 第二列代表PAM控制标记

名词解释
required表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败
requisite与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败
sufficient如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值
optional不进行成功与否的返回, 一般不用于验证,只是显示信息(通常用于session类型)
include表示在验证过程中调用其他的PAM配置文件

3.4.3 第三列代表PAM模块

  • 默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径
  • 同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数

3.4.4 第四列代表PAM模块的参数

这个需要根据所使用的模块来添加,是传递给模块的参数,参数可以有多个,中间用空格分隔开

3.5 PAM安全认证流程

在这里插入图片描述

  1. required验证失败时仍然继续,但返回fail
  2. requisite验证失败则立即结束整个验证过程,返回fail
  3. sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
  4. optional不用于验证,只显示信息(通常用于session类型)

四、sudo机制提升权限

4.1 sudo命令的用途及用法

  • 用途:以其他用户身份执行授权的命令
  • 用法:sudo 授权命令
  • 命令:sudo -l 查看当前用户获得哪些sudo授权

4.1.1 配置sudo授权

配置需要进入文件内部修改,使用以下两种方法进入

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

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

解释

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

4.1.2 模板

  • 用户1 ALL=/sbin/ifconfig

  • 用户2 localhost=/sbin/ * ,!/sbin/reboot,!/sbin/poweroff

    • 通配符 " * " 表示所有
    • 取反符号 " ! " 表示排除
  • %wheel ALL=NOPASSWD: ALL

    • 表示wheel组成员无需验证密码即可使用sudo执行任何命令
  • Mike ALL=(root)NOPASSWD: /bin/kill, /usr/bin/killall

4.1.3 设置别名

  • 使用关键字User_Alias、Host_Alias、Cmnd_Alias来进行设置别名( 别名必须为大写)
  1. User_Alias USERS=Tom, Jerry, Mike
  2. Host_Alias HOSTS=localhost, bogon
  3. Cmnd_Alias CMNDS=/sbin/ifconfig, /usr/ sbin/useradd, /usr/sbin/userdel
  4. USERS HOSTS=CMNDS

4.1.4 案列

  • 使用普通用户 cccc 创建一个新的IP,正常情况下如图,不可操作
    在这里插入图片描述

  • 编辑vim /etc/sudoers 文件
    在这里插入图片描述

  • 切换cccc用户

  • 五分钟内只需要输入一次密码即可,五分钟无任何操作 下次操作时需再次输入密码
    在这里插入图片描述

  • 使用关键字设置别名

    • 用户cccc,111,222 可以使用sbin目录下所有命令,除了reboot、init
    • 最后一行表示调用命令
      在这里插入图片描述
  • 检查
    在这里插入图片描述

  • 查看用户cccc都有哪些授权
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值