企业安全拥抱开源之利用Freeipa实现Liunx用户身份、权限的统一管理

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

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

在《 企业安全拥抱开源之FREEOTP部署实战 》一文中(下面简称上文),已经介绍了Freeipa的部署方法和OTP的启用方法,本文继续深入介绍如何将Linux接入进行统一的身份管理。

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

0×01 序

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

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

0×02 准备工作

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实现Liunx用户身份、权限的统一管理

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

2.设置用户配置文件

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

企业安全拥抱开源之利用Freeipa实现Liunx用户身份、权限的统一管理

命令:

#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权限组,添加权限:

企业安全拥抱开源之利用Freeipa实现Liunx用户身份、权限的统一管理

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

企业安全拥抱开源之利用Freeipa实现Liunx用户身份、权限的统一管理

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

a)安装ipa client

# yum install ipa-client

配置ipa client

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

企业安全拥抱开源之利用Freeipa实现Liunx用户身份、权限的统一管理

b)配置ipa-client

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

# ipa-client-install

企业安全拥抱开源之利用Freeipa实现Liunx用户身份、权限的统一管理

c)为用户创建home目录

# mkdir /home/username

0×03 登录系统测试

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

企业安全拥抱开源之利用Freeipa实现Liunx用户身份、权限的统一管理

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

企业安全拥抱开源之利用Freeipa实现Liunx用户身份、权限的统一管理

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

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

0×04权限管理

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

1.创建HBAC规则

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

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

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

企业安全拥抱开源之利用Freeipa实现Liunx用户身份、权限的统一管理

2.创建sudo规则

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

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

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

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

Via Service:已启用sshd、sudo服务

创建适当的sudo规则**

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

企业安全拥抱开源之利用Freeipa实现Liunx用户身份、权限的统一管理

3.验证sudo规则

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

企业安全拥抱开源之利用Freeipa实现Liunx用户身份、权限的统一管理

 
标签: Linux命令 开源
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 每天一条linux命令——halt
    halt命令用来关闭正在运行的Linux操作系统。halt命令会先检测系统的runlevel,若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统。 语法:halt(选项)选项:-d:不要在wtmp中记录;-f:不论目前的runlevel为何,不调用shutdown即强制关闭系统;-i:
    02-10
  • 几个linux命令查看堆栈内存问题 几个linux命令
      公司编写代码,发现整个在程序里面调用system时候总是失败,原因是can't allocate memory ,根本原因不是内存不足,而是堆栈内存不够。使用ulimit -s 2048后有所好转但是发现一旦系统进程开启多了后仍然会挂。后来使用objdump -x 后发现了原因有个动态库
    02-09
  • Linux命令总结--rm命令 linux的rmp命令
    (来源于http://www.cnblogs.com/xqzt/p/5398919.html)1、命令简介rm(Remove file 删除目录或文件)删除文件,对于链接文件,只是删除整个链接文件,而原有文件保持不变。新手在删除文件之前一定要知道这些:很重要1.可以用mv代替rm的绝对不要用rm,不要着急
    02-09
  • Linux命令行批量创建目录详解 linux创建目录
    以前一直用-p创建目录链,觉得很方便了。在空目录/opt/app/myapp里创建src,再创建main,再创建javamkdir -p /opt/app/myapp/src/main/java没想到还可以这样玩##¥%……*(root@vm1:~/tmp# mkdir -p src/{{main,test}/{java,resources},main/webapp}root@vm1:
    02-09
  • Linux命令之乐--script和scriptplay
    script和scriptplay可以把终端会话记录到一个文件中,可以用来制作命令行教学视屏。 开始录制会话[root@new test]# script -t 2timing.log -a output.sessionScript started, file is output.session[root@new test]# echo hellohello[root@new test]# echo
    02-09
  • java 开发常用的Linux命令
    1.查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt文件。find . -name "*.xml" 递归查找所有的xml文件find . -name "*.xml" |xargs grep "hello world" 递归查找所有文件内容中包含hello world的xml文件grep -H 'spring' *.xml 查找所
    02-09
  • 常用Linux命令整理 Linux常用命令总结
    常用Linux命令整理常见系统命令export 查看或修改环境变量# 例:临时修改命令提示符为字符串$export PS1=$# 例:临时修改命令提示符显示系统时间 时间使用\t 表示export PS1="[\u@\h \t \W]\$"man 查看linux系统的手册# 例:查看ls命令如何使用man ls # 回车
    02-09 Linux
  • linux命令行—《命令行快速入门》 linux常用命令csdn
    linux命令行—《命令行快速入门》 linux常用命
    pwd print working directory 打印工作目录hostname my computer's network name 电脑在网络中的名称mkdir make directory 创建路径cd change directory 改变路径ls list directory 列出路径下的内容rmdir remove directory 删除路径pushd push directory 推
    02-09
  • Linux命令(五) 五个常用的linux命令
    Linux命令(五) 五个常用的linux命令
    jenkins触发钉钉报警机制1、安装钉钉插件钉钉报警需要安装Ding Talk插件,支持钉钉报警2、打开钉钉创建钉钉机器人2.1选择机器人类型——自定义2.2添加机器人2.3填写机器人信息填写机器人姓名—设置安全设置为加密类型,并复制出来加密值2.4创建完成保持webhoo
    02-09
  • 03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-其他基础命令
    03_Linux基础-文件类型-主辅提示符-第1提示符-L
    03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-{1..100}-du-cd-cp-file-mv-echo-id-shell-ln-env-set-which-rpm-/usr-/与/root-hostname-vim-cat-pwd-alias-unalias-ls-ASCII-wc-chmod博客
    02-09
点击排行