Linux 账号密码安全 与 su、sudo登录控制

您所在的位置:网站首页 linux登陆用户名和密码 Linux 账号密码安全 与 su、sudo登录控制

Linux 账号密码安全 与 su、sudo登录控制

#Linux 账号密码安全 与 su、sudo登录控制| 来源: 网络整理| 查看: 265

前言

wheel 用户组介绍 用户和组基本命令

一、账号安全控制 1.1 系统账号清理

 系统账号信息和系统密码信息分别在 /etc/passwd 和 /etc/shadow 中,新增用户信息就是在这两个文件中末尾加一行。  比如我用 useradd zhangsan、passwd zhangsan 123456 创建 zhangsan 用户 并且 设置密码,此时 zhangsan 默认是可登录系统的。

1.1.1 禁止用户登录系统

 执行命令查看用户登录Shell信息:cat /etc/passwd | grep zhangsan ,查看最后一个字段,如果是 /bin/bash 为可登录系统,/sbin/nologin 和 /bin/false 为禁止用户登录系统。 描述  如果想让 zhangsan 禁止用户登陆系统,需要 用管理员 root 账号,执行 usermod -s /sbin/nologin zhangsan 即可。  如果想让 用户登陆系统,需要 用管理员 root 账号,执行 usermod -s /bin/bash 用户名 改回即可。 描述

1.1.2 锁定用户账号

方法一 :  锁定:usermod -L 用户名  解锁:usermod -U 用户名  查询账号状态:passwd -S 用户名 描述 方法二 :  锁定:passwd -l 用户名  解锁:passwd -u 用户名 描述

1.1.3 删除无用的账号

 userdel -r 用户名

1.1.4 锁定账号文件 chattr

 命令格式 :chattr [选项] 文件夹  作用:修改文件在 Linux 第二扩展文件系统(E2fs)上的特有属性  操作符:

: 用来 文件上的选定的属性; : 用来 文件上的选定的属性; : 用来 该文件的唯一属性.

 /etc/passwd、/etc/shadow 这两个文件保存重要的用户信息,就算使用 root 用户也不能随意地修改,为了保护这两个文件不被修改,可以使用 chattr 命令锁定这两个文件,多个文件空号隔开。  锁定文件:  查看文件状态:  解锁文件:chattr -i /etc/passwd /etc/shadow  示例:锁定修改密码文件后,用户 新增用户、修改密码、进入 vim 编辑界面进行编辑 操作不了,会显示鉴定令牌操作错误等信息。 描述

1.2 密码安全控制

 用户账号密码信息保存在 /etc/shadow 文件中。  每条记录字段信息:  字段3:上次修改密码的时间;  字段4:密码的最短有效天数,默认值为 0,表示不进行限制;  字段5:密码的最长有效天数(过期天数),默认值为 99999,表示永不过期;  字段6:提前多少天警告用户密码将过期,默认值为 7;  字段7:在密码过期之后多少天禁用此用户;  字段8:帐号失效时间,默认值为空,表示账号永久可用。

1.2.1 设置密码有效期 chage 、/login.defs

方法一:chage 命令,适用于已存在用户  命令格式:chage -M 天数 用户  作用:管理密码失效配置,实际上修改的是 /etc/shasow 中的第五个字段。

如: chage -M 30 zhangsan #设置张三的 密码有效期为30天,实际修改的是第5字段 #强制用户修改密码 chage -d 0 zhangsan #强制要求用户下次登录时修改密码,实际修改的是第3字段为0 #当第3字段为0时,会影响到第5字段,即自本次修改密码后,经过0天以后必须再次修改密码 #设置完后重新登录系统,会提示 更改 STRESS 密码

描述

方法二:修改密码配置文件,适用于新建用户。  修改配置文件:vim /etc/login.defs  执行命令:vim /etc/login.defs,查看信息,创建用户组的默认配置都在这里。 描述  将 PASS_MAX_DAYS 修改为 30, wq 保存,新建个用户 lisi ,查看 shadow 文件发现密码有效期已生效。 描述 描述

1.2.2 设定用户账号失效期

 与密码有效期不同,用户账号到达失效期后,此用户账户将被系统作废。  账号失效期位于用户账号文件的 第8字段,默认值为空,表示账号永久可用。 方法一:usermod -e 天数 用户名 方法二:chage -E 天数 用户名 描述

1.3 历史命令

  history 命令查看历史命令,一般系统默认记录命令的数量为1000条。存在的风险:别的人也能看得一清二楚。   临时清除 history 信息: history -c,重启失效;

1.3.1 减少记录命令的数量

  /etc/profile 是全局的系统配置文件,在这里修改 减少记录命令的数量,当在用户登录时就会执行一次。   输入 :export HISTSIZE=数量

示例:这里我们设置为50条历史命令 执行:vim /etc/profile 输入:export HISTSIZE=50 #export 表示将该参数设置为全局变量,在所有配置中都生效 wq保存退出后使用命令 `source /etc/profile` 或 `. /etc/profile`重启配置文件

描述 描述

再执行 `history` 命令查看,发现默认历史命令已经 只有50条了。 或者保持默认的 HISTSIZE=1000 不变,在配置文件末尾加上 export HISTSIZE=50 也可以。 或者 手动执行 echo "" > ~/.bash_history #清空历史命令文件,因为历史命令都保存在家目录下的 .bash_history 文件中 #在切换bash shell 时就会执行一次清空 或者执行 vim ~/.bashrc,添加一行 echo "" > ~/.bash_history , 或者执行 vim /etc/bash_profile,添加一行 echo "" > ~/.bash_history ,开机时自动清空历史命令文件 1.3.2 登录时自动清空历史命令

  方法:vim /etc/rc.d/rc.local

/etc/rc.d/rc.local 自动启动脚本,但系统默认没有执行权限 所以还需赋可执行的权限:chmod +x rc.local 然后 执行 vim /etc/rc.d/rc.local 进入编辑, 在里面 增一行 echo "" > ~/.bash_history 改完后保存重启系统

描述  在/etc 下有这个文件的软链接,所以可以也直接执行 vim /etc/rc.local。

1.4 终端自动注销

  方法:在 vim /etc/profile 文件中设置 TMOUT 系统环境变量

示例:闲置600秒后自动注销 输入 vim /etc/profile 末行输入:export TMOUT=600 wq 保存并退出

描述

执行命令 source /etc/profile 重启文件即可。

描述  到了注销时间后,自动登出: 描述

二、使用su命令切换用户 2.1 su 用途及用法

 用途:Substitute User (切换用户)  格式:su - 目标用户

带 选项表示将 root 切换到 任意用户,不验证密码; 普通用户切换其他用户,须验证目标用户密码; 描述 2.2 限制使用 su 命令的用户

 前提:因为普通用户可以切换到root,所以root密码又被破解风险,破解后普通用户能执行所有的操作,所以需要对 su 的用户做限制。  wheel 概念:wheel组 是Unix系统一个遗留物,理解成是管理员用户的组,组中的用户都或多或少地拥有root的部分功能和权限,比如su命令。  当服务器需要做比日常例行维护更高级的工作的时候,就经常需要用到root权限了。而这个wheel组就是建立用来归纳一些特殊的系统用户用的。也就是说 如果你不是 wheel 组成员,那就没有 root身上任何的特权。也因为这样,使用 wheel 组成员用户的话,会尽量减少对系统“摧毁性”破坏的概率和风险。  1 . 如果想要给 允许使用 su 的用户 root 的权限,需要将其加到 wheel 组(系统中已存在)中。执行命令:gpasswd -a 用户 wheel,查看组 groups 用户 。  2 . 然后 启用 pam_wheel 认证模块,首先进入配置文件:vim /etc/pam.d/su。 描述

 开启限制使用 su:将第六行 #注释 去掉,wq 保存并退出: 描述

 效果:没有加到 wheel 组内的其他用户将无法使用 su 命令进行切换,只有加入到 wheel 组中的 zhangsan 可以进行 su 切换 到 root,lisi 不在 wheel 组中,就不可以。 描述 使用 exit 可等出到最原始的用户。 描述  对于 /etc/pam.d/su 文件中的配置:

,这种状态下是允许所有用户间使用su命令进行切换的。 如果第2行不注释,pam rootok.so 模块的主要作用是使uid为0的用户,即root用户能够直接通过认证切换普通用户不需要输入密码; 两行都注释也是运行所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码; 如果开启第6行,表示只有root用户和wheel组内的用户才可以使用su命令。 如果注释第1行,开启第6行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令。 2.3 查看su操作记录 日志文件:,新执行的操作信息会新增在末尾。 三、 PAM 安全认证

 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险。为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换。  比如,我们可以通过PAM 安全认证的用法之一,如上面2.2章节中的,通过修改 /etc/pam.d/su 文件来禁止普通用户使用su命令。 PAM认证原理:

PAM认证一般遵循的顺序:Service (服务) → PAM (配置文件) → pam_ *.so; 。 用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。 不同的应用程序所对应的PAM模块也是不同的。

描述

PAM认证流程: 描述 控制类型也称做 Control Flags, 用于PAM验证类型的返回结果:

验证失败时仍然继续,但会返回 Fail; 验证失败则立即结束整个验证过程,返回 Fail; 验证成功则立即返回,不再继续,否则忽略结果并继续; 不用于验证,只显示信息(通常用于session类型) 其实都需要认证通过,只是如果失败的话,返回失败的点不一样。 就比如 PAM的su配置文件 /etc/pam.d/su 文件中: 第一列代表 (auth、account、password、session) 第二列代表 (required、requisite、sufficient、optional、include) 第三列代表 ,默认是在 目录下,如果不在此默认路径下,要填写绝对路径。 第四列代表 ,这个需要根据所使用的模块来添加。 四、使用sudo机制提升权限

 命令格式:sudo 授权命令  用途:sudo授权命令,以其他用户身份(如root)执行授权的命令,一般给普通用户提权  应用场景:如果我是普通用户,我想执行一个命令操作但是我没有这个命令的权限(通常是存在操作风险的命令);这时候 root 用户就可以通过修改配置,再执行 sudo 命令 将这个命令授权给我,我就能使用这个命令了。

4.1 配置sudo授权

 配置方式: 修改 visudo 或者 /etc/sudoers 配置文件  记录格式:用户 主机名=(用户) 命令程序列表:

:直接授权指定的用户名,或采用 “ ” 的形式授权一个组的所有用户,如 。 :使用此规则的主机名。默认主机名为 ,有修改过主机名则用实际的主机名, 则代表所有主机都可执行; (): :允许授权的用户通过sudo方式执行的特权命令,,多个命令之间以逗号 “” 进行分隔。 则代表系统中的所有命令,“ ” 表示除了这个命令;  如果不知道命令的绝对路径,使用 which 命令 查看 。  注: ① 是只读文件,文件的默认权限为 440,保存退出时须执行 命令强制操作; ②  比如用普通用户 zhangsan 创建网卡,结果无操作权限: 描述

 此时用 root 用户登录,执行 visudo,在末尾添加 zhangsan ALL=/sbin/ifconfig,wq保存,再看 /etc/sudoers 文件,发现也增加了: 描述 描述  执行 su zhangsan 切换到张三用户,执行 sudo 命令,输入一次登录密码,就能执行 ifconfig 命令成功新增网卡 ens33:1,因为已经授权了 /sbin/ifconfig 命令了。 描述 描述  默认需要输入密码,如果不需要,则执行 zhangsan ALL=NOPASSWD:/sbin/ifconfig 即可。 其他例子:

username localhost=/sbin/ifconfig #说明username 只在localhost主机上拥有ifconfig权限 username ALL=/sbin/*,!/sbin/reboot,!/sbin/poweroff #通配符“*”表示所有、取反符号“!”表示排除 #表示username 在所有主机上拥有除了重启和关机的所有权限 %wheel ALL=(ALL) NOPASSWD: ALL #系统已存在的默认配置 #表示wheel组内的所有成员无需验证密码即可使用sudo执行任何命令 username ALL=(root)NOPASSWD: /bin/kill #表示username 用户不需要输入密码即可执行kill命令 USERS HOSTS=NOPASSWD:CMNDS #表示USERS 用户不需要输入密码即可执行CMNDS命令 4.2 sudo 设置别名

 通过上面sudo的例子我们知道,除了对组进行设置,对用户来说,只能一个个根据用户名进行设置,比较繁琐,我们可以通过设置 用户别名、命令别名、主机别名来进行设置。  如果不知道命令的绝对路径,使用 which 命令 查看 。 别名关键字与格式:

(养成良好的编程习惯,全局变量用大写,如 USERS 、HOSTS、CMNDS) 同一个文件中别名不能重复 例子:  我们设置sudo授权时在 visudo 文件中设置别名。  执行 visudo命令 在默认添加别名配置,  再执行USERS HOSTS=CMNDS 使配置生效,  如果不需要用户输入密码,可执行USERS HOSTS=NOPASSWD:CMNDS  保存文件使配置生效 描述 描述 4.3 启动sudo操作日志

 启动sudo操作日志后,才会保存 sudo 使用记录。  在 /etc/sudoers 中新增一行代码:Defaults logfile = /var/log/sudo: 描述  设置完之后重新执行 sudo 命令,记录会添加到这个日志文件中。 描述

4.4 查看sudo命令列表

 使用命令 sudo -l 查看自己能使用哪些授权命令: 描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3