由于近期协助等保,研究了一下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



