账号安全以及系统安全管理,su,sudo命令的常用方法 超详细

账号安全基本措施

在linux的日常使用中,我们有时候会将一些不需要登录的用户取消登录资格,就可以使用以下命令将他们取消这

usermod -s /sbin/nologin 用户名  #将非登录的用户的Shell设为/sbin/nologin

在这里插入图片描述

锁定长期不使用的账号

usermod -L #锁定用户账户
passwd -l #锁定用户账户
passwd -u #解锁用户账户
usermod -U #解锁用户账户
passwd -S #查看用户账户的状态(是否被锁定)
这里额外写一种:passwd -d #清空指定用户的密码,仅使用用户名即可登录

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

删除无用的账号

userdel [-r] 用户名    #“-r”可以将该用户的宿主目录一并删除

在这里插入图片描述

锁定账号文件

chattr +i passwd shadow  锁定账号
chattr -i passwd shadow   解锁账号
lsattr  passwd   查看账号

我们尝试将passwd和shadow文件锁定,过程如下:
在这里插入图片描述

密码安全控制

设置密码有效期
vim /etc/login.defs 
修改密码配置文件,适用于新建用户
chage -M 10 muzi  老用户可以使用这个。
chage -d 0 muzi   下次登陆时必须修改密码
把shadow文件中的第三个字段被修改为0

如果我们新建立用户,可以在修改密码配置文件,这样后面新建的用户密码有效期都会按照配置文件来做
在这里插入图片描述

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

命令历史限制

在平时使用的时候,我们可以通过history来查询我们之前进行的操作,非常的方便,但是有些时候,某些不法分子会通过查看我们之前的操作,来进行一些不法操作,这时候我们就可以通过限制命令条数来减少该风险的发生。

vi /etc/profile
export HISTSIZE=200  #减少记录的命令条数
. /etc/profile     或者   source /etc/profile   #配置完输入可以重新加载

vi ~/.bashrc
echo"" >.bash_history
  #登录时自动清空记录

export TMOUT=600
闲置600秒自动注销(注销的是终端)

在这里插入图片描述

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

或者我们可以通过在每次开机时清空.bash_history文件,来让开机之后查不到我们上次的操作指令

在这里插入图片描述

在这里插入图片描述

PAM认证模块

3.1 PAM概述

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

3.2 PAM认证原理

  • PAM认证一般遵循的顺序: Service (服务) ——>PAM (配置文件) ——>pam_ *.so;
  • PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于7etc/pam.d下),最后调用认证模块(位于/lib64/security/下)进行安全认证。
  • 用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM模块也是不同的。
  • 如果想查看某个程序是否支持PAM认证,可以用ls命令进行查看/etc/pam.d/。
  • PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用。
    在这里插入图片描述

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

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

(二)第二列代表PAM控制标记

  • required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一-验证,所有此类型的模块都执行完成后,再返回失败。

  • requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。

  • sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。

  • optional:不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session 类型)。

  • include:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth (主要负责用户登录系统的认证工作)来实现认证而不需要重新逐—去写配置项。

    (三)第三列代表PAM模块

  • 默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。

  • 同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。

(四)第四列代表PAM模块的参数

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

控制标记的补充说明:

  • required:表示该行以及所涉及模块的成功是用户通过鉴别的[必要条件]。换句话说,只有当对应于应用程序的所有带required标记的模块全部成功后,该程序才能通过鉴别。同时,如果任何带required标记的模块出现了错误,PAM并不立刻将错误消息返回给应用程序,而是在所有此类型模块都调用完毕后才将错误消息返回调用他的程序。
    反正说白了,就是必须将所有的此类型模块都执行一次,其中任何一个模块验证出错,验证都会继续进行,并在执行完成之后才返回错误信息。这样做的目的就是不让用户知道自己被哪个模块拒绝,通过一-种隐蔽的方式来保护系统服务。就像设置防火墙规则的时候将拒绝类的规则都设置为drop-样,以致于用户在访问网络不成功的时候无法准确判断到底是被拒绝还是目标网络不可达。
  • requisite:与required相仿,只有带此标记的模块返回成功后,用户才能通过鉴别。不同之处在于其一- 旦失败就不再执行堆中后面的其他模块,并且鉴别过程到此结束,同时也会立即返回错误信息。与上面的required相比,似乎要显得更光明正大一些。
  • sufficient:表示该行以及所涉及模块验证成功是用户通过鉴别的[充分条件]。也就是说只要标记为sufficient的模块一旦验控制标志也是一样。当标记为sufficient的模块失败时,sufficient模块 会当做optional对待。因此拥有sufficient标志位的配控制标志也是一样。当标记为sufficient的模块失败时,sufficient模块 会当做optional对待。因此拥有sufficient标志位的配置项在执行验证出错的时候并不会导致整个验证失败,但执行验证成功之时则大门敞开。所以该控制位的使用务必慎重。
  • optional:他表示即便该行所涉及的模块验证失败用户仍能通过认证。在PAM体系中,带有该标记的模块失败后将继续处理下一模块。也就是说即使本行指定的模块验证失败,也允许用户享受应用程序提供的服务。使用该标志,PAM框架会忽略这个模块产生的验证错误,继续顺序执行下一.个层叠模块。

使用su命令切换用户

这个就比较简单,只需要在su 后面加上你想去的用户名就可以了,但需要注意的是,从root用户su到别的用户时候,可以直接过去,但当从其他用户su回root的时候,则需要密码和赋权。

su - 用户名

限制使用su命令的用户

在有些时候,因为su命令可以切换到别的用户,很容易被别人暴力破解,这时候我们就需要使用su赋权了,只给自己信任的人su命令。
在/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到别的用户的时候,需要输入密码;简单来说,pam_rootok.so模块的主要作用能让root用户能够直接通过认证而不用输入密码。
  • 如果开启第二行,就表示只有root用户和wheel组内的用户才可以使用su命令。
  • 如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,就连root用户也别禁用su命令。

在这里插入图片描述

在这里插入图片描述

  • 将允许使用su命令的用户加入wheel组
  • 启用pam_wheel认证模块
gpasswd -a muzi wheel #将muzi加入到wheel组中
vi /etc/pam.d/su
#%PAM-1.0
auth  sufficient pam_rootok.so
auth  required pam_wheel.so use_uid
  • 查看su操作记录
    可以在 中查看su的操作记录(安全日志文件)

使用sudo机制提升权限

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

sudo 授权命令

我现在改一个普通用户上面进行修改网卡,但是它提示说权限不足,这时候就需要用到sudo命令,来为我们的普通用户进行提权。
在这里插入图片描述
这时候,我们进入visudo文件中,修改nannan这个用户的赋权,给予它修改网卡以及重启的权力
在这里插入图片描述
1
这样的话,我们的重置网卡就成功了。但是在使用命令的时候,一定要在命令前面加入sudo命令,否则无法使用命令,
赋权

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

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

在这里插入图片描述

启动sudo操作日志

主要是用于记录别的主机使用sudo的记录

visudo
Defaults logfile = /var/log/sudo

在这里插入图片描述

查看sudo使用情况
cd /var/log/
cat sudo

猜你喜欢

转载自blog.csdn.net/weixin_51614581/article/details/110420848