首页 > 代码库 > 用户权限管理
用户权限管理
一、服务器用户权限集中管理解决方案
<一>思路
1、了解公司业务流程,提出权限整改解决方案,改进公司超级权限root泛滥的现状
2、首先撰写方案给老大,取得老大支持后,召集大家开会讨论
3、讨论确定可行后,由我负责推进实施
4、实施后教过,公司服务器权限管理更加清晰
5、制定账号权限申请流程及权限申请表格
<二>存在问题
1、服务器数量较多(100台)
2、各个服务器管理人员较多(开发、运维、DBA等)
3、新、老员工对服务器的熟悉程度及人员技术参差不齐
4、操作规范不一致,避免误操作。
以上问题导致服务器文件莫名丢失,使服务器安全存在很大隐患。其实%50的安全隐患都来自于内部。
为了解决以上问题,解决单个用户权限过大问题,现提出针对linux服务器用户权限集中管理解决办法
<三>项目需求
1、解决思想
即希望root密码掌握在少数或唯一的管理员手中,有希望多个系统管理员或相关有权限的人员,能够完成更多复杂的自身职能相关的工作,又不至于越权。
2、解决办法
用sudo命令来代替或结合su命令来完成用户管理需求
3、最小化原则:1)安装软件最小化。2)目录、文件权限最小化。3)用户权限最小化。4)程序运行权限最小化
<四>具体实现
针对公司不同部门,根据员工具体只能,(开发、运维、DBA)分等级,分层次的实现对linux服务器管理权限最小化、规范化。
<五>实施流程
1、信息采集
(1)获得领导(运维经理、总监、cto)支持,
(2)通过会议形式为相关部门讲解,取得各部门认可
(3)确定方案可行性
(4)通过发邮件或联系相关人员取得需要相关权限的信息。
如:姓名、职位、负责的业务、权限等
(5)根据人员名单,需要的业务及权限角色,对应账号配置权限。实际就是配置sudo配置文件
(6)一旦实施后,所有员工必须通过《员工linux服务器管理权限申请表》,确定审批流程
(7)写操作说明,对各个部门进行操作讲解。
例:类似于下表
人员名单 职位 负责的业务 对应服务器权限
张三 开发经理 blog业务 要求有all权限,但不能切到root
2、收集员工职能和对应权限
案例:
1、建立3个初级运维,1个高级运维,1个运维经理,密码统一111111
for user in chuji001 chuji002 chuji003 net001 senior001 manager001
do
useradd $user
echo "111111" |passwd --stdin $user
done
建立5个开发人员,属于phpers组,密码统一111111
groupadd -g 999 phpers
for n in `seq 5`
do
useradd -g phpers php00$n
echo "111111"|passwd --stdin php00$n
done
for user in kaifamanager001 senioprphpers
do
useradd $user
echo "111111"|passwd --stdin $user
done
2、编辑visudo创建别名
(1)根据职位创建命令别名
##Cmnd_Alias
初级运维 Cmnd_Alias CY_CMD_1 = /usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig,/bin/netstat,/sbin/route
高级运维 Cmnd_Alias GY_CMD_1 = /usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/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/binup2date,/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,/bin/tail app/log*,/bin/grep /app/log*,/bin/cat,/bin/ls,/bin/sh ~/scripts/deploy.sh
高级网络 Cmnd_Alias CW_CMD_1 = /sbin/route,/sbin/ifconfit,/bin/ping,/sbin/dhclient,/usr/bin/net,/sbin/iptables,/usr/bin/rfcomm,/usr/bin/wvdial,/sbin/iwconfig,/sbin/mii-tool,/bincat /var/log/+*
(2)创建用户别名
##User_Alias
User_Alias CHUJIADMINS = chuji001,chuji002,chuji003
User_Alias GWNETADMINS = net001
User_Alias CHUJI_KAIFA = %phpers
(3)提权到root身份执行任务
##Runas_Alias
Runas_Alias OP = root
(4)配置相关人员权限
#pri
senior001 ALL=(OP) GY_CDM_1
manager001 ALL=(ALL) NOPASSWD:ALL
kaifaamanager001 ALL=(ALL) ALL,/usr/bin/passwd[A-Za-z]*,!/usr/bin/passwd root,!/usr/sbin/visudo,!/usr/bin/vim,!/bin/vi,!/usr/bin/sudo su -,!/bin/su
seniorphpers ALL=(OP) GK_CMD_1
CHUJIADMINS ALL=(OP) CY_CMD_1
GWNETADMINS ALL=(OP) CW_CMD_1
CHUJI_KAIFA ALL=(OP) Gk_CMD_1
注意:
1)别名要大写
2)命令的路径要全路径
3)超过用“\”换行
4)不建议给ALL后,在排除其他命令
<六>实战调试测试
<七>成功后
发送邮件周知所有人权限已经生效。并说明。
<八>制定权限申请流程
<九>后期维护
服务器多了可批量分发sudo
二、sudo命令日志审计
1、通过sudo和syslog配合,实现对所有用户使用的命令进行审计并记录
2、使所有执行过的命令都有记录可查,杜绝内部人员的操作安全隐患
注意:sudo命令日志审计,只记录执行sudo命令的用户操作。并不纪录普通用户的操作。
<一>
1、软件安装
需要安装sudo和rsyslog
rpm -qa |egrep "sudo|rsyslog" //查看是否安装sudo和rsyslog
如果没有安装执行以下命令安装
yum install sudo rsyslog -y
2、配置sudoers
1)在sudoers文件,添加日志路径
echo "Defaults logfile=/var/log/sudo.log" >>/etc/sudoers
2)在rsyslog.conf文件,添加日志路径
echo "local2.debug /var/log/sudo.log" >>/etc/rsyslog.conf
/etc/init.d/rsyslog restart //重启rsyslog服务
ll /var/log/sudo.log //查看是否生成sudo.log文件
3、配置完成后如要查看其他用户使用sudo的操作记录,查看/var/log/sudo.log文件即可
4、日志集中管理
1)可通过crontab+rsync实现集中审计,将多台服务器日志推送到日志服务器统一管理。
2)也可通过rsyslog直接推送至日志服务器,通过更改配置文件推送,但不推荐
3)第三方日志搜集工具scribe,flume,stom,logstash
用户权限管理