linux用户权限控制实现,企业安全拥抱开源之利用Freeipa实现Linux用户身份、权限的统一管理...

*本文原创作者:agui,本文属FreeBuf原创奖励计划,未经许可禁止转载在《企业安全拥抱开源之FREEOTP部署实战》一文中(下面简称上文),已经介绍了Freeipa的部署方法和OTP的启用方法,本文继续深入介绍如何将Linux接入进行统一的身份管理。

在未部署统一身份管理系统时,管理员需要分别在每一台主机上为对应的系统管理员创建、维护账号和密码,无法进行统一的管理。当主机数量增加到一定程度后,也将难以进行有效的安全管理,对账号密码泄露等问题难以进行控制。统一身份认证系统可以帮助我们解决这一问题。Windows环境下可以使用域账号进行身份管理,而在Linux环境下,上文中我们部署的Freeipa已经提供了相关功能,可以快速、便捷的将linux系统接入,进行统一的身份认证和权限管理。

0x01 序

本文假设系统管理员已将域账号同步至Freeipa或已在Freeipa中建立了用户账号(username)。

本文client使用CentOS 7作为测试环境。

0x02 准备工作

1. 批量启用令牌

将域账号同步至Freeipa后,上文介绍了使用WEBUI启用令牌的方法,为便于批量操作,管理员也可采用下列脚本简化启用令牌的过程:

命令详细用法请使用ipa help topics查询。#!/bin/bash

#查询所有ipa用户并打印

ipa user-find | grep User | awk -F ':''{print $2}' > userlist.txt

#删除不需要处理的用户,默认admin、autoenroll用户不进行处理

if [ -f userlist.txt ]; then

cat userlist.txt | sed '/admin/d' | sed '/autoenroll/d' >newuserlist.txt

rm -f userlist.txt

else if [ -f newuserlist.txt ]; then

#修改所有用户的认证方式为otp

#为每个用户启用令牌

for USERNAME in `cat newuserlist.txt`

do

ipauser-mod $USERNAME --user-auth-type=otp

ipa otptoken-add --type=totp \

--not-before=20170112000000Z \

--not-after=20200113000000Z \

--owner=$USERNAME \

--algo=sha512 --digits=8 \

--interval=60 \

--desc="token for$USERNAME" $USERNAME >>otplist

done

else

echo "user auth type modify failed"

fi

执行完毕后,用户令牌配置文件输出至otplist,输出结果如图所示。

利用新创建的账号登录Freeipa WebUI测试无误后,即可进行接下来的步骤。

2. 设置用户配置文件

使用管理员账号登录WebUI,找到需要设置的用户,设置用户登录shell、home目录、SSH public keys等,本例中设置如下:

fd7cd7e02d0f952d91f9ea49f3afba34.png

命令:#ipa user-mod USERNAME --shell=/bin/bash--homedir=/home/USERNAME

3. 创建autoenroll用户

为方便主机Host加入Freeipa管理,应创建单独的用户用于自动注册主机,

新建帐号autoenroll,需要登录一下web,更新一下密码。

Web UI创建 enroll帐号的步骤:

【IPA Server ->Role Based ACL -> ROLES】添加Enroll组 -> 选择PRIVILEGES权限组,添加权限:

194301691c2f4c26cbbf55c837d26ccb.png

同时,将autoenroll用户加入enroll组中

514edac8af6b0b8fed5ae552a2ee86b1.png

4. 客户机安装和配置ipa-client

a) 安装ipa client# yum install ipa-client

配置ipa client

在主机未加入Freeipa统一管理之前,主机中只创建了root账号,未创建其它账号,Freeipa用户显而易见是无法直接登录主机的:

2431bdb6dc49d8f7ce2b6b36a9876201.png

b) 配置ipa-client

执行ipa-client-install,按照提示输domain name、freeipa hostname、autoenroll账号密码等信息后,确认执行:# ipa-client-install

7b1fabea674c483c5cc5dbd7f01b58dd.png

c) 为用户创建home目录# mkdir /home/username

0x03 登录系统测试

执行成功后,再次尝试使用Freeipa中已有用户账号连接主机,此时已可以成功登录:

cb10bf89987d2ff89e0ab601741e6648.png

如果已开启OTP,则会要求连续输入密码、OTP后才可成功登录,登录提示信息如下:

eb7aec7f7827b0b90d5e77c9b7a80834.png

提示First Factor:请输入你的密码,如果已进行AD同步,此处为域账号密码

提示Second Factor:请输入你的OTP,通常为6位或8位数字

0x04权限管理

Freeipa提供了统一权限管理功能,可直观的通过web ui进行配置,

1. 创建HBAC规则

【Policy-Host Based Access Control】,根据需要创建控制规则,

规则设置简单易懂,即【什么用户(组)可以通过什么服务(组)访问哪台主机(组)】,在创建响应的用户、用户组、主机、主机组、服务、服务组后即可进行筛选、添加等操作。

配置完毕后,请删除删除默认的allow_all规则。

5135120d94b984f1e1f97bfc5f5bef75.png

2. 创建sudo规则

在未创建sudo规则前,登录用户只具备普通用户权限,如果需进行系统管理操作,需要创建对应的sudo规则。

a) **首先检查确认上一节HBAC配置:**

Who:需要使用sudo的用户或用户组已配置

Accessing:需访问的主机或主机组已配置

Via Service:已启用sshd、sudo服务

b) **创建适当的sudo规则**

【Policy-Sudo-Sudo Rules】,创建新的Sudo规则,名为“admin_sudo_rule”

5b5568b024b310da4e3d62489c7d31c4.png

3. 验证sudo规则

SSH远程登录验证是否可正常登录,同时执行sudo command验证是否可正常执行。如出现要求反复输入密码的情况,请检查上述配置是否正确。

20eaeae96886cf443f06d50e519efea5.png

0x05 参考内容

*本文原创作者:agui,本文属FreeBuf原创奖励计划,未经许可禁止转载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值