Linux 账户安全与控制

chattr命令(锁定账户信息、用户密码文件)

[root@localhost ~]# chattr +i /etc/passwd /etc/shadow   ##锁定passwd与shadow两个与账户相关的配置文件,使其不能被修改
[root@localhost ~]# lsattr /etc/passwd /etc/shadow      ##查看两个文件的属性(发现有i)
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow    ##解锁两个配置文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow       ##再次查看配置文件属性(发现i没有了)
---------------- /etc/passwd
---------------- /etc/shadow

锁定单用户的密码(usermod、useradd)

方法一:锁定用户密码

#假设现在我们有个用户名为tom的普通用户账号,使用passwd命令可以锁定其用户密码,使之不能从终端登录。

[root@localhost ~]# passwd -l tom
锁定用户 tom 的密码 。
passwd: 操作成功

[root@localhost ~]# cat /etc/shadow
tom:!!$6$tbEutCW6$GwmMKaxNK.r0gsuB0CNuhrnYpvykPm8/a.pUd2Kf4iuxF5ZB8vSXMDy8xiMey8f12kkn3f8tAg8hNw6RXSAFF/:18444:0:0:7:::

#查看shadow文件看到用户tom用户的后面有两个感叹号,说明该用户密码已经锁定不能登录
#现在希望解锁该用户,使用以下命令:
[root@localhost ~]# passwd -u tom
解锁用户 tom 的密码。
passwd: 操作成功

方法二:锁定该用户

#还是刚才的tom用户,我们这次使用usermod命令来操作。
[root@localhost ~]# usermod -L tom
[root@localhost ~]# cat /etc/shadow
tom:!$6$tbEutCW6$GwmMKaxNK.r0gsuB0CNuhrnYpvykPm8/a.pUd2Kf4iuxF5ZB8vSXMDy8xiMey8f12kkn3f8tAg8hNw6RXSAFF/:18444:0:0:7:::
#我们发现tom用户后面有一个感叹号,这时候使用tom用户无法登陆
#现在希望解锁该用户,使用以下命令:
[root@localhost ~]# usermod -U tom

举一反三:那么,既然passwd -l 与usermod -L 都可以锁定用户,那么在解锁用passwd锁定的账户时使用usermod命令呢?下面我们来实验:

#先使用passwd锁定用户密码
[root@localhost ~]# passwd -l tom
#再使用usermod命令解锁
[root@localhost ~]# usermod -U tom
#解锁后尝试登陆tom,发现可以登录,说明passwd与usermod的锁定与解锁是可以通用的。

设置用户密码有效期(新建用户,已有用户)

方法一:对于还未创建的账户可以通过修改login.defs文件来实现对将要创建的账户的有效期设置

vi /etc/login.defs
#找到 PASS_MAX_DAYS 这一行,将后面的9999 改成30
PASS_MAX_DAYS 30    #现在密码最长有效期从永不过期变成了30天

方法二:对于已经创建了的账户使用chage命令更改密码有效期

密码有效期:chage -M 30 tom

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

[root@localhost ~]# chage -d 0 tom   #当tom用户重新登录时会提示强制修改密码后才能登录

禁止用户登陆的几种方法

方法一:修改/etc/shadow文件,在密码字符串前加上一个或两个感叹号

[root@localhost /]# vi /etc/shadow
tom:!!$6$Str1t6ks$hk6otJqguzoA.v5bhf6AB1bsueoDiLIK3.Gm7Un1.4iQo20idkRIWoAdRCaOIiHwPSPuhJgCldn1VqzqqSlBn.:18445:0:99999:7:::

方法二:禁止除root以外的所有普通用户登陆

[root@localhost /]# touch /etc/nologin  ##在etc目录下创建一个空白的nologin文件
【注意】:主要该文件存在,只能root用户登陆!该方法经常用于在服务器维护时使用
【小技巧】:我们可以编辑nologin文件在其中添加内容,这样别人在使用终端登录时页面就会提示。
例:echo "系统正在维护中,请稍后再试!" > /etc/nologin

查看历史命令 history

1、限制显示历史执行过的命令

[root@localhost /]# vi /etc/profile   ##编辑配置文件
找到 HISTSIZE 这一行,默认是1000,我们可以修改成自己想要的值,编辑完后保存并退出

2、退出终端时自动清除历史命令

[root@localhost /]# vi  ~/.bash_logout   ##编辑配置文件
##添加如下两行:
history -c
clear

用户超时自动注销

在root用户家目录下编辑.bash_profile文件,在最下面添加一行命令即可

vi ~/.bash_profile
export TMOUT=600       ##单位是秒
source .bash_profile   ##重新加载配置文件

使用su命令切换用户

  • 用途及用法

    用途:Subsitute User,切换用户

    格式:su -目标用户

  • 密码验证

​ root→任意用户,不验证密码

​ 普通用户→其他用户,验证目标用户的密码

[root@localhost ~]# su - tom  ##从root用户切换到tom账户
[tom@localhost ~]$ su -       ##从tom账号切换回root
密码:

限制使用su命令的用户

  • 将允许使用su命令的用户加入wheel组
  • 启用pam_wheel认证模块 (配置文件:/etc/pam.d/su)
gpasswd -a tom wheel  #将tom用户添加到wheel组
选项:-a:添加用户到组
  • 查看su操作记录:记录在安全日志文件中,路径:/var/log/secure

★PAM安全认证

  • su命令的安全隐患

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

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

​ 是一种高效而且灵活便利的用户级别的认证方式

​ 也是当前Linux服务器普遍使用的认证方式

PAM认证原理

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

PAM认证的构成

  • 查看某个程序是否支持PAM认证,可以用ls命令
ls /etc/pam.d | grep su   ##查看su命令是否支持PAM认证
  • 查看su的PAM配置文件:cat /etc/pam.d/su

    每一行都是一个独立的认证过程

    每一行可以区分为三个字段:认证类型、控制类型、PAM模块及参数

PAM安全认证流程

  • 控制类型也称作Control Flags,用于PAM验证类型的返回结果

​ 1、required验证失败时仍然继续,但返回Fail

​ 2、requisite验证失败则立即结束整个验证过程,返回Fail

​ 3、sufficien验证成果则立即返回,不再继续。否则忽略结果并继续

​ 4、optional不用于验证,只显示信息(通常用于session类型)

图1

使用sudo机制提升权限

  • su命令的缺点

  • sudo命令的用途及用法

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

sudo 授权命令
  • 配置sudi授权
visudo 或者 vi /etc/sudoers
记录格式:用户 主机名列表=命令程序列表
  • 查看sudo操作记录

    需启用Defaults logfile 配置

    默认日志文件:/var/log/sudo

使用sudo机制提升权限

  • su命令的缺点

  • sudo命令的用途及用法

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

    sudo 授权命令
    
  • 配置sudi授权

visudo 或者 vi /etc/sudoers
记录格式:用户 主机名列表=命令程序列表
  • 查看sudo操作记录

    需启用Defaults logfile 配置

    默认日志文件:/var/log/sudo

  • 查询授权的sudo操作:sudo -l

猜你喜欢

转载自blog.csdn.net/u014042047/article/details/107134994