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. Unity Gizmos绘制指定长宽的网格

    using UnityEngine; using System.Collections; public class GridMap : MonoBehaviour { ; //宽度 ; //长度 vo ...

  2. docker exit status 255解决

    一 windows开发整docker就是痛苦,在公司win7电脑想拿起几年没再用的docker 结果直接报错 Error getting IP address: ssh command error: ...

  3. spring增强

    1.前置增强 接口:ISomeService public interface ISomeService { public void doSome(); } 类 public class MyBefo ...

  4. java之struts框架入门教程

    本教程主要讲述struts的简单入门操作 使用的是myeclipse工具 1.创建web项目 2.复制struts必要的jar包到 WebRoot/WEB-INF/lib 下 jar包列表如下: as ...

  5. 会话跟踪之Session

    Session是服务端使用记录客户端状态的一种机制,Session使用简单,但是和Cookie相比,增加了服务器的存储压力[因为为了追求速度,服务器将Session放置在了内存中].Cookie是保存 ...

  6. nginx停止后再启动出现: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误的解决方法

    为了备份数据 手动停止了服务器的nginx 结果启动时报错 nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" fail ...

  7. Spring Boot相关组件的添加

    在勾选相关组件后, pom.xml文件上发生了根本的变化 1.这是最简单的项目的pom文件 <?xml version="1.0" encoding="UTF-8& ...

  8. Win7系统如何设置FTP详细过程

    1.安装FTP组件 点击:控制面板—>程序和功能—>打开或关闭Windows功能.勾选“FTP服务器”及“FTP服务”“FTP扩展性”,点击“确定”,安装FTP组件. 2.添加FTP站点 ...

  9. SQL Server 删除当前数据库中所有数据库 ,无视约束

    Sql Server中清空所有数据表中的记录 清空所有数据表中的记录: exec sp_msforeachtable  @Command1 ='truncate table ?' 删除所有数据表: e ...

  10. [习题] FindControl 简单练习--GridView + CheckBox,点选多列数据(复选删除)#3 List或数组

    [习题] FindControl 简单练习--GridView + CheckBox,点选多列数据(复选删除)#3 List或数组 之前的范例,使用字符串.文字来记录将删除的文章ID 后续会有很多小缺 ...