栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

等保sudo权限配置

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

等保sudo权限配置

前言

由于近期协助等保,研究了一下Centos的权限配置,又有一些新的理解,于是写一篇文档对之前的安全设置进行补充

by:
之前写一半的老存稿,没什么可修改的,先发再说。。



su

可进行任何身份的切换,常用的操作如下,其他参数实际并不常用


 su -     代表使用 login-shell 的变量文件读取方式来登陆系统
          如果没有加用户名,则代表切换为 root 的身份
          如果没有加-,直接加用户名,则代表了读取的变量方式为 non-login shell 的方式

示例:
当su - root时,除了将root的身份赋予现在的用户之外,更会将环境设置成登录用户的环境变量
意思就是你用普通用户切root,加了-,不仅你现在身份是root.环境变量也是root的环境变量,使用任何root环境命令不会报错

当su root时,将root的身份赋予了现在的用户,但是仍保留现在用户的环境变量
意思就是你用普通用户切root,不加-,只是你现在身份是root.环境变量仍是普通用户环境变量,使用root的部分命令会报错

验证方法:
尝试切换用户,echo $PATH,观察环境变量



sudo

主要用于使用其它用户的身份执行命令,执行完命令之后恢复原本的身份


常用参数:

-b    把后续的命令放在后台中让系统自行执行,而不与目前的shell产生影响
-u    后面接想要执行命令的账号,若省略-u,则默认为root

通常和su搭配使用
https://blog.csdn.net/GX_1_11_real/article/details/89334708

补充:
sudo使用他人身份执行命令时,输入的是自己的密码,而不是他人的密码
切换用户时,即使密码输对了,报如下错误,证明该用户不在/etc/sudoers配置中
(xxxx不在 sudoers 文件中。此事将被报告)



sudoers配置技巧



/etc/sudoers文件中的格式:
ALL代表所有

root	            ALL=(ALL) 	                           ALL

用户账号             可以从哪里登录=(可以切换的身份)          可以执行的命令,要使用绝对路径

可以使用visudo命令修改

示例:

<1>设置用户组,可以sudo(仍需要输入密码)
%wheel      ALL=(ALL)                        ALL
%用户组名    可以从哪里登录=(可以切换的身份)    可以执行那些命令

在这个用户组里面的所有成员都可以使用sudo,sudo后可切换任何用户,可使用任何命令



<2>设置用户或用户组,可以sudo(无需输入密码)
monitor      ALL=(ALL)                        NOPASSWD:ALL
用户名       可以从哪里登录=(可以切换的身份)     可以执行那些命令

%wheel       ALL=(ALL)                        NOPASSWD:ALL
%用户组名     可以从哪里登录=(可以切换的身份)     可以执行那些命令

这个用户或在这个用户组里面的所有成员都可以不输入密码使用sudo,sudo后可切换任何用户,可使用任何命令
NOPASSWD 在可以执行哪些命令之前加上,可以免密码



<3>设置用户或用户组,可以sudo(无需输入密码),限制只能切换root
monitor      ALL=(root)                        NOPASSWD:ALL
用户名       可以从哪里登录=(可以切换的身份)     可以执行那些命令

%wheel       ALL=(root)                        NOPASSWD:ALL
%用户组名     可以从哪里登录=(可以切换的身份)     可以执行那些命令

这个用户或在这个用户组里面的所有成员都可以不输入密码使用sudo,sudo后仅可切换root,可使用任何命令



<4>设置用户或用户组,可以sudo(无需输入密码),限制只能切换root,限制可使用的命令
monitor      ALL=(root)                        NOPASSWD:/bin/cat, /bin/netstat, /usr/bin/iostate, /usr/sbin/iftop, /usr/bin/top, /bin/grep, /bin/find, /usr/bin/rsync, /usr/bin/iotop, /usr/bin/top, /usr/bin/ps, /usr/bin/pidstat, /usr/bin/less
用户名       可以从哪里登录=(可以切换的身份)     可以执行那些命令

%wheel       ALL=(root)                        NOPASSWD:/bin/cat, /bin/netstat, /usr/bin/iostate, /usr/sbin/iftop, /usr/bin/top, /bin/grep, /bin/find, /usr/bin/rsync, /usr/bin/iotop, /usr/bin/top, /usr/bin/ps, /usr/bin/pidstat, /usr/bin/less
%用户组名     可以从哪里登录=(可以切换的身份)     可以执行那些命令

这个用户或在这个用户组里面的所有成员都可以不输入密码使用sudo,sudo后仅可切换root,仅使用规定的命令



<5>设置某些的用户,可以sudo(无需输入密码),限制可使用的命令
User_Alias Monitor = monitor1, monitor2
用户别名(具有sudo权限的用户的列表) =  用户1,用户2...

Monitor              ALL=(ALL)                         NOPASSWD: /bin/cat, /bin/netstat, /usr/bin/iostate, /usr/sbin/iftop, /usr/bin/top, /bin/grep, /bin/find, /usr/bin/rsync, /usr/bin/iotop, /usr/bin/top, /usr/bin/ps, /usr/bin/pidstat, /usr/bin/less 
用户名/用户别名       可以从哪里登录=(可以切换的身份)     可以执行那些命令

这个用户别名里的所有成员,都可以不输入密码使用sudo,仅使用规定的命令
和用户组的区别是不用为了可sudo,去为用户修改用户组
配置User_Alias,就是配置具有sudo权限的用户的列表,相当于配置一个变量



<6>设置某些的用户,可以sudo(无需输入密码),限制只能切换root,限制可使用的命令
User_Alias Monitor = monitor1, monitor2
用户别名(具有sudo权限的用户的列表) =  用户1,用户2...

Cmnd_Alias WATCH = /bin/cat, /bin/netstat, /usr/bin/iostate, /usr/sbin/iftop, /usr/bin/top, /bin/grep, /bin/find, /usr/bin/rsync, /usr/bin/iotop, /usr/bin/ps ,!/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd, !/usr/bin/passwd root,!/bin/rm *
命令别名(命令列表) =  命令1,命令2...

Monitor              ALL=(ALL)                         NOPASSWD: WATCH
用户名/用户别名       可以从哪里登录=(可以切换的身份)     可以执行那些命令

这个用户别名里的所有成员,都可以不输入密码使用sudo,仅使用规定的命令
配置Cmnd_Alias,就是配置具有sudo权限的命令的列表,相当于配置一个变量

!/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd, !/usr/bin/passwd root ,!/bin/rm *
这是限制用户使用sudo给其他用户改密码和删除文件
你要是不sudo,直接使用命令删除自己有权限的文件是可以


<7>其他

Host_Alias 可登陆用户别名
Runas_Alias 可切换用户别名
这2个也和上面是同一个用法,但是我不常用



等保相关

需求对管理用户进行角色划分和权限分离,如划分为系统管理员、安全管理员和审计管理员等角色。

根据需求,最少需要配置3个权限或用户。一个最小权限的用户用于审计,查看日志;一个系统管理员需要可切到root,有所有权限;普通用户,可sudo,不免密,限制部分命令。根据上面的演示可自行配置。

实际上仅通过jumpserver配置服务器资产和登陆用户权限,就可以满足多个等保需求,无需配置多个服务。如要求说明哪些配置符合拉哪些需求,把配置截图并说明清楚即可
(进行角色划分和权限分离,日志审计,身份鉴别, 登陆操作审核)
https://github.com/jumpserver/jumpserver



补充

限制一些命令的方法:

去用户的家目录下修改,.bash_profile or .bashrc,添加别名或环境变量,并soure

export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
alias rm='echo "do not use rm command"'
alias passwd='echo "do not use passwd command"'

如果极端点:
把需要命令复制一份,再把那个特殊用户的环境变量给改了



当su,sudoers配置正常,而su切换用户,始终出现如下报错:
su: cannot open session: Permission denied

查看/etc/security/limits.conf的设置,并修改为正常
https://blog.csdn.net/GX_1_11_real/article/details/120549038

注意:
<1>nofile的soft limit不能超过其hard limit
nofile的hard limit不能超过/proc/sys/fs/nr_open
nofile的值的上限是由/proc/sys/fs/nr_open限制的,默认是1048576
如果你修改limit.conf的nofile,超过这个值就会导致连接ssh失败
当配置的大于100万,注意一下

<2>不建议调整前面的用户(即*),常有调整用户导致的事故
<3>第三列参数,老版本Centos6.X只支持数字,不建议没看版本就设置成 unlimited

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/748705.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号