0
点赞
收藏
分享

微信扫一扫

Linux系统安全及应用

天涯学馆 2022-03-12 阅读 31

一、账号安全基本设施

1、系统账号清理

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

非登录:不可以使用bash程序 

1.2锁定长期不使用的账号

  • 使用usermod锁定用户
usermod -L 用户名     //锁定用户
usermod -U 用户名     //解锁用户

  • 使用passwd锁定账户
passwd -l 用户名      //锁定用户
passwd -u 用户名      //解锁用户

1.3删除无用的账号

1.4锁定配置文件——chattr

锁定配置文件即锁定配置文件passwd与shadow

chattr +i /etc/passwd /etc/shadow           //锁定配置文件
chattr -i /etc/passwd /etc/shadow           //解锁配置文件
chattr +a /etc/passwd /etc/shadow           //让文件或目录仅供附加用途,只能追加
lsattr /etc/passwd /etc/shadow              //查看文件状态属性

2、密码安全控制

2.1未创建的用户密码管理

未创建的用户需要进入/etc/login.defs进行修改密码属性,使得在下次创建用户时密码信息生效

例子

  • 新建用户并更改密码属性

  •  查看信息

2.2已创建用户密码管理——chage命令

常用选项作用
-m密码可更改的最小天数。为零时代表任何时候都可以更改密码
-M密码保持有效的最大天数
-W用户密码到期前,提前收到警告信息的天数
-E帐号到期的日期。过了这天,此帐号将不可用
-d上一次更改的日期
-i停滞时期。如果一个密码已过期这些天,那么此帐号将不可用
-l例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期

 强制用户下次登录时一定修改密码,此时密码应该符合复杂性的要求

 3、命令历史限制

3.1命令历史限制

Shell 环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在 的风险。只

要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在 命令行输入明文

的密码,则无意之中服务器的安全壁垒又多了一个缺口。Bash 终端环境中,历史命令的记录条数

由变量 HISTSIZE 控制,默认为 1000 条。通 过修改/etc/profile 文件中的 HISTSIZE 变量值,可以

影响系统中的所有用户。例如,可以设 置最多只记录 200 条历史命令。

  • 临时修改当前用户的历史命令条数
[root@localhost ~]# export HISTSIZE=200 //临时修改历史命令条数为200条

  • 进入配置文件永久修改历史命令条数
[root@localhost ~]# vim /etc/profile       //进入配置文件
HISTSIZE=200                               //将历史命令条数由1000改为200
[root@localhost ~]# source /etc/profile    //刷新配置文件,使文件立即生效

  • 退出时清除
[root@localhost ~]# vim .bash_logout
echo " " > ~/.bash_history

  • 开机后清除
[root@localhost ~]# vim .bashrc
echo " " > ~/.bash_history

3.2终端自动注销

[root@localhost ~]# vim /etc/profile
export TMOUT=600

二、用户切换与提权

1、su命令——切换用户

su命令即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命

切换用户的方式

  • su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换,与只切换了一部分,这会导致某些命令运行出现问题或错误
  • su - UserName:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换,切换用户身份更彻底

说明

  • root su至其他用户无须密码
  • 非root用户切换时需要密码
  • su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。


2、限制使用su命令的用户

  • su命令的安全隐患

     (1)  默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密

码,带来安全风险

      (2) 为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进

行切换

  •  限制使用su命令的用户

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

      启用pam_wheel认证模块。则只有wheel组内的用户可以使用su命令切换用户(编辑/etc/pam.d/su文件)。

  • 查看su操作记录

       安全日志:/var/log/secure

查看/etc/pam.d/su 文件

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

限制使用su命令步骤:

  • 将用户加入wheel组中

  •  修改/etc/pam.d/su文件内容
    [root@localhost ~]# vim /etc/pam.d/su
    2 auth            sufficient      pam_rootok.so
    6 auth            required        pam_wheel.so use_uid

  • 使用su命令

3、sudo命令——用户提权

3.1sudo命令提权

sudo 即superuser do,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如

halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性在最早

之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告

知超级用户的密码。

sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可

以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc

/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”);在一般用户需要取得特殊权限

时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户

本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分

钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。由于不需要超级用户的密码。

sudo特性

  • sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员

  • sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器

  • sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票。sudo -V 可以查看相关配置信息

  • sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440

配置sudo

可以使用visudo也可以使用vim /etc/sudoers进行配置,但通常使用visudo,因为visudo可以自动检

查语法是否输入错误

[root@localhost ~]# visudo
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

#用户    登入主机=(代表用户)  命令
#user    host   =(runas)   command
root     ALL    =(ALL)     ALL(绝对路径)  //root可以使用任何主机代表任何用户执行任何命令
%wheel   ALL    =(ALL)     ALL

user: 运行命令者的身份
      可以是用户也可以是组(组前应该加%)
      用户可以是用户名或者UID
      组可以是组名或者GID
host: 通过哪些主机 可以写IP地址或主机名 可以有多个主机
runas:以哪个用户的身份
command: 运行哪些命令
     command name  (命令)
     directory     (文件夹里的命令)
     sudoedit      (可以编辑sudoers这个文件,变相变成管理员)
     Cmnd_Alias    (命令别名)

例子:

将用户加入sudoers

  • 进入配置文件

  •  提权后使用命令(命令必须与配置文件中的命令一致)

 将用户加入wheel组中

可以使用通配符

3.2sudo别名

sudo别名有四种类型:

  • User_Alias(用户)

  • Runas_Alias(代表用户)

  • Host_Alias(登录主机)

  • Cmnd_Alias(命令)

进入配置文件

 3.2sudo子目录

[root@localhost ~]# vim /etc/sudoers.d/test
tieniu1 ALL=(root) usr/bin/*,!/usr/sbin/reboot

[root@localhost ~]# useradd tieniu1
[root@localhost ~]# echo "123123" |passwd --stdin tieniu1
更改用户 tieniu1 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# ll /etc/sudoers.d/test 
-rw-r--r--. 1 root root 24 3月  11 00:05 /etc/sudoers.d/test
[root@localhost ~]# chmod 440 /etc/sudoers.d/test 
[root@localhost ~]# ll /etc/sudoers.d/test 
-r--r-----. 1 root root 24 3月  11 00:05 /etc/sudoers.d/test

 

 

 

举报

相关推荐

Linux——系统安全及应用

linux系统安全及应用

十、《系统安全及应用》

Linux的系统安全和应用

Linux系统安全

0 条评论