Linux 服务器用户权限管理改造方案与实施项目

  1. 在了解公司业务流程后,提出权限整改方案改进公司超级权限root泛滥的现状。
  2. 我首先撰写方案后,给boss看,取得boss的支持后,召集大家开会讨论。
  3. 讨论确定可行后,由我负责推进实施。
  4. 实施后结果,公司的服务器权限管理更加的清晰了。
  5. 制订账号权限申请流程及权限申请表格。

具体内容

  1 问题现状

    当前我们公司服务器上百台,各个服务器上的管理人员很多(开发+运维+架构+DBA+产品+市场),在大家登陆使用LInux服务器的时,不同职能的员工水平不同,因此导致操作很不规范,root权限泛滥(几乎大部分人员都有root权限),经常导致文件等莫名其妙的丢失,老手和新手员工对服务器的熟知度也不同,这样使得公司服务器安全存在很打的不稳定性、及操作安全隐患,据调查企业服务器环境,50%以上的安全问题都来自于内部,而不是外部。为了解决以上问题,单个用户管理权限过大现状,现提出针对Linux服务器用户权限集中管理的解决方案。

  2 项目需求

    我们既希望超级用户root密码掌握在少数或者唯一的管理员手中,又希望多个系统管理员或相关有权限的人员,能够完成更多更复杂的自身职能的工作,又不至于越权操作导致系统安全隐患。

    那么,如何解决多个系统管理员都能管理系统而又不让超级权限泛滥的需求呢?这就需要sudo管理替代或结合su命令来完成这样的苛刻且必要的企业服务器用户管理需求。

  3 具体实现

    针对公司里不同部门,根据员工的具体职能(例如:开发,运维,数据库管理员),分等级、分层次的实现对Linux服务器管理的权限的最小化、规划化。这样既减少了运维管理成本,消除了安全隐患,有提高了工作效率,实现了高质量的、快速化的完成项目进度,以及日常系统维护。

  4 实施方案

    说明:实施方案一样是由积极主动发现问题的运维人员提出问题,然后写好方案,在召集大家讨论可行性,最后确定方案,实施部署,最后后期维护。

    思想:在提出问题前,一定要想到如何解决,一并发出解决方案。

    到此为止:你应该已经写完了权限规划方案。

  4.1 信息采集(含整改方案流程)

    1.1 召集相关各部门领导通过会议讨论或是与各组领导沟通确定权限管理方案的可行性。需要支持的人员:运维经理、CTO支持、各部门组的领导。我们作为运维人员,拿着类似老师这个项目方案,给大家讲解这个文档,通过会议形式做演讲,慷慨激昂的演说,取得大佬们的支持和认可,才是项目能够得以最终实施的前提,当然,即使不实施,那么,你的能力也得到了锻炼,老大对你的积极主动思考网站架构问题也会另眼相看。

    1.2 确定方案可行性后,会议负责人汇总、提交、审核所有相关员工对Linux服务器的权限的需求。

取得大佬们支持后,通过发邮件或者联系相关人员取得需要的相关人员的权限信息。比如说,请各个部门经理整理归类本部门需要登录Linux权限的人员名单、职位、及负责的业务及权限,如果说不清楚权限细节,就说负责的业务细节,这样就可以确定需要啥权限了。

    1.3 按照需要执行的Linux 命令程序及公司业务服务来规划权限和人员对于配置。

主要运维人员根据上面收集的人员名单,需要的业务及权限角色,对应账号配置权限,实际就是配置sudo配置文件。

    1.4 权限方案一旦实施后,所有员工必须通过《员工Linux服务器管理权限申请表》来申请对应的权限,确定审批流程,规范化管理。这里实施后把握住权限申请流程很重要,否则,大家不听话,方案实施玩就会泡汤的。

    1.5 写操作说明,对各部门进行操作讲解。sudu执行命令,涉及PATH变量问题,运维提取处理好。

  4.2 收集员工职能和对应权限

    次过程召集大家开会确定,或者请各组领导安排人员进行统计汇总,人员及对应的工作职责,交给运维人员,由运维人员优化职能对应的系统权限。

1)运维组:

级别 权限

初级运维

a,b,c,d

查看系统信息,查看网络状态

/usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostnaem,/sbin/ifconfig,

/bin/netstat,/sbin/route

高级运维 查看系统信息,查看和修改网络配置,进程管理,软件包管理,存储管理

/usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostnaem,/sbin/ifconfig,

/bin/netstat,/sbin/route,/sbin/iptables,/etc/init.d/network,/bin/nice,/bin/kill,

/usr/bin/kill,/usr/bin/killall,/bin/rpm,/usr/bin/up2date,/usr/bin/yum,

/sbin/fdisk,/sbin/sfdisk,/sbin/parted,/sbin/partprobe,/bin/mount,/bin/umount

运维经理 超级用户所有权限
ALL

2)开发组:

级别 权限

初级开发

root查看权限,对应服务查看日志的权限

/usr/bin/tail /app/log*,/bin/grep /app/log*,/bin/cat,/bin/ls

高级开发 root查看权限,对应服务查看日志的权限,重启对应服务的权限

/sbin/service,/sbin/chkconfig,/usr/bin/tail /app/log*,/bin/grep /app/log*,/bin/cat,/bin/ls

开发经理 项目所在服务器的ALL权限,不能修改root密码
ALL,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,!/usr/sbin/visudo,!/usr/bin/vi *suduers*

      权限分配:普通用户的权限,对应服务的查看日志的权限,重启对应服务的权限

      大公司:项目负责制的规定。

3)架构组:

级别 权限
架构工程师 普通用户的权限
不加入sudo列表

4)DBA组:

    

级别 权限
初级DBA 普通用户的权限
不加入sudo列表
高级DBA 项目所在服务器的ALL权限,不能修改root密码
ALL,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,!/usr/sbin/visudo,!/usr/bin/vi *suduers*

5)网络组:

级别 权限
初级网络 普通用户的权限
不加入sudo列表
高级网络 项目所在服务器的ALL权限

/sbin/route,/sbin/ifconfig,/bin/ping,/sbin/dhclient,/usr/bin/net,

/sbin/iptables,/usr/bin/rfcomm,/usr/bin/wvdial,/sbin/iwconfig,

/sbin/mii-tool,/bin/cat /var/log/*

  5. 模拟用户创建角色

    建立3个初级运维,一个高级运维,一个网络工程师,一个运维经理,密码统一123

for user in chuji001 chuji002 net001 senior001 manager001
do
useradd $user
echo ""|passwd --stdin $user
done

  建立5个开发人员,属于phpers组

groupadd -g  phpers
for n in `seq `
do
useradd -g phpers php00$n
echo ""|passwd --stdin php00$n
done
for user in kaifamanager001 seniorphpers
do
useradd $user
echo ""|passwd --stdin $user
done

  

    visudo 编辑文件

##Cmnd_Alias by gaogzhen##2018.12.03
Cmnd_Alias CY_CMD_1 = usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostnaem,/sbin/ifconfig,/bin/netstat,/sbin/route
Cmnd_Alias GY_CMD_1 = /usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostnaem,/sbin/ifconfig,/bin/netstat,/sbin/route,/sbin/iptables,/etc/init.d/network,/bin/nice,/bin/kill,/usr/bin/kill,/usr/bin/killall,/bin/rpm,/usr/bin/up2date,/usr/bin/yum,/sbin/fdisk,/sbin/sfdisk,/sbin/parted,/sbin/partprobe,/bin/mount,/bin/umount
Cmnd_Alias CK_CMD_1 = /usr/bin/tail /app/log*,/bin/grep /app/log*,/bin/cat,/bin/ls
Cmnd_Alias GK_CMD_1 = /sbin/service,/sbin/chkconfig,/usr/bin/tail /app/log*,/bin/grep /app/log*,/bin/cat,/bin/ls
Cmnd_Alias GW_CMD_1 = /sbin/route,/sbin/ifconfig,/bin/ping,/sbin/dhclient,/usr/bin/net,/sbin/iptables,/usr/bin/rfcomm,/usr/bin/wvdial,/sbin/iwconfig,/sbin/mii-tool,/bin/cat var/log/*

##User_Alias by gaogzhen##2018.12.03
User_Alias CHUJIADINS = chuji001,chuji002,chuji003
User_Alias GWNETADINS = net001
User_Alias CHUJI_KAIFA = %phpers

##Runas_Alias by gaogzhen##2018.12.03

Runas_Alias OP = root

#pri config

senior001 ALL=(OP) GY_CMD_1

manager001 ALL=(ALL) NOPASSWD:ALL

kaifamanager001 ALL=(ALL) ALL,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,!/usr/sbin/visudo,!/usr/bin/vi *suduers*

seniorphpers ALL=(OP) GK_CMD_1

CHUJIADINS ALL=(OP) CY_CMD_1

GWNETADINS ALL=(OP) GW_CMD_1

CHUJI_KAIFA ALL=(OP) CK_CMD_1

  5. 实战调试测试

  6.成功后发邮件通知所有人权限配置生效。并附带操作说明。

有必要的话,培训讲解

  7.制订权限申请流程及申请表

见单独文档

  8.后期维护:不是特别紧急的需要,一律走申请流程

服务器多了,可以通过封软件批量分发/etc/sudoers(主要权限和语法检查)。

出来权限上的控制,在账户有效时间上也进行限制,现在线上多少用户的权限位永久权限可以使用以下方式进行时间上的控制。这样才能让安全最大化。http://oldboy.blog.51cto.com/2561410/1289144

/home/anca,/home/zuma,所有的程序都在账户目录下面。启动的时候也是通过这个账户。也可以不设置密码,禁止密码登录

提升:授权ALL在进行排除有时让我们防不胜防,,这种先开后管的策略并不是好的策略。

白名单机制

  8.sudo配置注意事项

a)命令别名下的成员必须是文件或者目录的绝对路径

b)别名名称是包含大写字母、数字、下划线,大写字母必须大写

c)一个别名下有多个成员,成员与成员之间,通过“,”号分隔;成员必须是有效实际存在的。

d)成员别名受别名类别Host_alias、User_Alias、Runas_Alias、Cmnd_Alias、制约,定义什么类型的别名,就要有什么类型的成员相配。

e)别名规则是每行算一个规则,过一个一个别名规则一行容不下时,可以通过“\”反斜杠来换行

f)指定切换的用户要用()括号括起来。如果省略括号,则默认为root用户:

g)如果不需要密码直接运行命令的,应该加NOPASSWD:参数

h)禁止某类程序或者命令执行,要在命令动作前面加上“!”号,并且放在运行命令的后面

i)用户组前面必须加%号

Linux 服务器用户权限管理改造方案与实施项目的更多相关文章

  1. 简单的Linux的用户权限管理

    企业生产环境用户权限集中管理方案案例 建立中要添加如下的项目经验: 在了解公司业务流程后,提出权限整改解决方案,改进公司超级用户Root权限泛滥的问题. 我首先写好方案后,给老大看,取得老大的支持后, ...

  2. Linux:用户权限管理

    用户与用户组的概念 超级用户 拥有对系统的最高管理权限,默认是 root 用户 普通用户 只能对自己目录下的文件进行访问和修改,具有登录系统的权限. 虚拟用户 也叫"伪"用户,这类 ...

  3. Linux系统用户权限管理

    Linux系统中三种基本权限 用户属主.用户属组及其它人权限 -rw-r--r-- 1 root root 762 11-11 20:34 a.out 文件类型 ls命令中的缩写 应用 一般文件 - ...

  4. Linux之用户权限管理

    chmod(更改目录或文件权限) 在linux中,文件的权限分为3中,拥有者,群组,其他人.而chmod则是对权限更改的命令. u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个组,o 表示其 ...

  5. linux 用户管理,用户权限管理,用户组管理

    linux 用户管理,用户权限管理,用户组管理 一:ls -l 命令 解释 第个d表示是目录,如果是文件是-,如果是连接是l 第2到4个 rwx 表示创建者的操作权限 r 读,w 写,x 执行 第5到 ...

  6. Linux下安装SVN,仓库创建,用户权限管理

    Exported from Notepad++           Linux下安装SVN,仓库创建,用户权限管理 1.SVN安装 Ubuntu系统下安装:sudoapt-getinstallsubv ...

  7. Linux常用命令之用户权限管理chmod、chown、chgrp、umask命令讲解

    这节课我们重点来学习权限管理命令,说到权限大家可能第一时间能想到的就是读.写.执行 rwx 三种权限,在正式讲解权限命令之前,先简单的介绍一下rwx权限对于文件和目录的不同含义. 权限字符 权限 对文 ...

  8. Linux_CentOS用户管理 和 用户权限管理 chmod、ACL、 visudo

    一.用户管理 Linux 系统同时可以支持多个用户,每个用户对自己的文件设备有特殊的权利,能够保 证用户之间互不干扰.就像手机开了助手一样,同时登陆多个 qq 账号,当硬件配置非常高 时,每个用户还可 ...

  9. Python 学习 第十篇 CMDB用户权限管理

    Python 学习 第十篇 CMDB用户权限管理 2016-10-10 16:29:17 标签: python 版权声明:原创作品,谢绝转载!否则将追究法律责任. 不管是什么系统,用户权限都是至关重要 ...

随机推荐

  1. 如何设计企业移动应用 by宋凯

    移动应用设计内部培训 by宋凯 企业移动应用的特点:简约.效率.增强ERP与环境的结合.及时.安全.企业内社交. 一句话定义你的移动应用:然后围绕这句话来设计你的APP. 一:如何定义你的应用: 1, ...

  2. HiveSQLException: Error while compiling statement: No privilege 'Create' found for outputs { database:default }

    今天用Hive的JDBC实例时出现了HiveSQLException: Error while compiling statement: No privilege 'Create' found for ...

  3. PHP session变量的销毁

    1.何为session? 相当于一个客户端(可以是浏览器.app.ftp等其他,而且同一个浏览器多开几个又算是不同的客户端)对服务器的一个访问,这个期间服务器为此建立一个唯一的标示(session_i ...

  4. sql server数据类型char和nchar,varchar和nvarchar,text和ntext

    varchar和nvarchar的区别: varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的字节 ...

  5. 记录下laravel 5.2的auth/logout路由工作不正常的问题

  6. AJPFX关于面向对象之封装,继承,多态 (上)

    Java是一种面向对象的语言,这是大家都知道的,他与那些像c语言等面向过程语言不同的是它本身所具有的面向对象的特性--封装,继承,多态,这也就是传说中的面向对象三大特性 一:从类和对象开始说起: Oo ...

  7. OS进程同步与通信

    信号量机制 信号量用于互斥 P(S) 临界区 V(S) ----- P(S) 临界区 V(S) 生产者消费者: typedef int semaphore //信号量值设置为1就是互斥量 semaph ...

  8. CSS单词换行and断词,你真的完全了解吗

    背景 某天老板在群里反馈,英文单词为什么被截断了? 很显然,这是我们前端的锅,自行背锅.这个问题太简单了,css里加两行属性,分分钟搞定. 开心的提交代码,刷新页面.我擦,怎么还是没有断词?不可能啊! ...

  9. 有关 C# 命名参数和可选参数

    有关 C# 命名参数和可选参数 #1.命名参数: 所谓“命名参数 ( Named Arguments )”,是指方法中定义了一些“有名字”的参数. 给方法参数命名之后,在调用方法时就可以直接根据参数名 ...

  10. sudo用户权限添加问题

    现象:通过visudo或者vim /etc/sudoers文件添加用户权限后,该用户测试时依然需要输入密码解决:查看/etc/passwd用户id可能重复并且重复的uid排在该用户上面