IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    企业安全拥抱开源之FREEOTP部署实战

    -Y.c发表于 2016-12-07 22:00:08
    love 0

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

    安全建设过程中,总体预算、投入产出比均是首先需要考虑的问题,缺少具备开发能力的人员、缺少资金预算的情况下,开源产品就成了必然的选择。

    1.jpg

    0×01 前言

    虎符是古代皇帝调兵遣将用的兵符,用青铜或者黄金做成伏虎形状的令牌,劈为两半,其中一半交给将帅,另一半由皇帝保存,只有两个虎符同时合并使用,持符者即获得调兵遣将权。虎符也大致可看做是双因素身份认证的早期应用了。

    0×02 2FA&OTP

    2FA,双因素认证。一是你知道什么,一是你有什么或者你是什么,比如说,你需要提供密码,同时你还需提供动态口令,又或者采用虹膜、指纹等生物特征作为第二因素进行身份认证,当然,指纹因容易被伪造,很多安全专家并不推荐使用。

    企业安全管理中,综合成本、部署维护难易程度等原因,OTP是一个不错的选择。OTP全称为One-Time-Password,也称动态口令,在需要强身份认证的场合比较常用,常见的应用有网银硬件令牌、手机令牌等。具备动态口令功能的商业产品比较多,有实力的企业可以自行选择。本文中我们选择Freeotp作为OTP解决方案。

    Freeotp是一款来自Red Hat的开源的软令牌解决方案,支持HTOP和TOTP,同时提供了IOS和Android客户端。Freeotp已集成在Freeipa中,这里我们从部署Freeipa开始。

    0×03 Freeipa安装 

    测试环境

    os:centos7 

    ipa_hostname:ipatest 

    ipa_domain:example.com 

    ipa_address 1.1.1.1 

    IPA NetBIOS:IPATEST 

    ad_hostname:it-dc01 

    ad_domain:it.local 

    ad_address:2.2.2.2

    部署过程

    1、更新系统 

    yum update -y 

    2、安装freeipa相关组件 

    yum install -y "*ipa-server""*ipa-server-trust-ad" bind bind-dyndb-ldap ipa-server-dns 

    3、系统配置 

    echo "1.1.1.1 ipatest.example.com ipatest" >>/etc/hosts 

    hostname ipatest.example.com 

    4、ipa服务配置 

    ipa-server-install -a mypassword1 -p mypassword2 --domain=example.com--realm=EXAMPLE.COM --setup-dns --no-forwarders -U 

    5、获取ipa管理员权限 

    kinit admin 

    6、防火墙iptables安装配置 

    chkconfig firewalld off 

    service firewalld stop 

    yum install -y iptables-services 

    chkconfig iptables on 

    echo "*filter" > /etc/sysconfig/iptables 

    echo ":INPUT ACCEPT [0:0]" >> /etc/sysconfig/iptables 

    echo ":FORWARD ACCEPT [0:0]" >> /etc/sysconfig/iptables 

    echo ":OUTPUT ACCEPT [0:0]" >> /etc/sysconfig/iptables 

    echo "-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT">> /etc/sysconfig/iptables 

    echo "-A INPUT -p icmp -j ACCEPT" >> /etc/sysconfig/iptables 

    echo "-A INPUT -i lo -j ACCEPT" >> /etc/sysconfig/iptables 

    echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -jACCEPT" >> /etc/sysconfig/iptables 

    echo "# -A INPUT -s ad_ip_address -p tcp -m multiport --dports 389,636 -mstate --state NEW,ESTABLISHED -j REJECT" >> /etc/sysconfig/iptables 

    echo "-A INPUT -p tcp -m multiport --dports80,88,443,389,636,88,464,53,138,139,445 -m state --state NEW,ESTABLISHED -jACCEPT" >> /etc/sysconfig/iptables 

    echo "-A INPUT -p udp -m multiport --dports 88,464,53,123,138,139,389,445-m state --state NEW,ESTABLISHED -j ACCEPT" >>/etc/sysconfig/iptables 

    echo "-A INPUT -p udp -j REJECT" >> /etc/sysconfig/iptables 

    echo "-A INPUT -p tcp -j REJECT" >> /etc/sysconfig/iptables 

    echo "-A FORWARD -j REJECT --reject-with icmp-host-prohibited">> /etc/sysconfig/iptables 

    echo "COMMIT" >> /etc/sysconfig/iptables 

    service iptables restart 

    至此Freeipa安装完毕。

    Dns服务器配置域名解析ipatest.example.com后即可通过 https:// ipatest.example.com管理ipa服务器。如需与已经部署的MS AD 系统进行集成,还需要进行账户密码等的同步设置,具体配置请参考:

    http://gatwards.org/techblog/ipaactive-directory-sync-configuration

    http://directory.fedoraproject.org/docs/389ds/download.html#windows-password-synchronization

    0×04 FREEOTP配置

    首先登陆freeipa服务器。用户名admin,密码是上一节安装过程中配置的mypassword1。

    1、启用OTP

    服务端启用OTP有两种方式。

    一是在全局配置中,为所有用户启用OTP:依次找到【IPA Server】-【Configuration】-【Default user authentication types】,勾选【Two factorauthentication (password + OTP)】

    2.png

    二是为每一个用户分别启用OTP:

    3.png

    2、添加、删除、禁用、启用令牌

    依次进入【Authentication】-【OTP tokens】,根据需要选择添加、删除或禁用、启用令牌

    4.png

    令牌配置:

    5.png

    3、客户端导入令牌:

    在应用市场搜索freeotp,下载并安装客户端。

    客户端可以通过扫描服务端添加令牌配置后生成的二维码添加令牌。

    6.png

    0×05 应用场景和配置实例

    应用场景:WEB应用认证、VPN用户登录认证等

    应用的接入可以直接采用LDAP协议,这里不再详述。

    配置实例:ITOP配置实例 

    'authent-ldap' => array ( 

    'host' => '1.1.1.1', 

    'port' => 389, 

    'default_user'=>'uid=test123,CN=users,CN=accounts,DC=example,DC=com', 

    'default_pwd'=> 'testpass!!', 

    'base_dn' => 'CN=users,CN=accounts,DC=example,DC=com', 

    'user_query' => '(&(uid=%1$s))', 

    'options' => array ( 

    17 => 3, 

    8 => 0, 

    ), 

    同时,在ITOP中添加对应的用户test123后即可进行登录测试,经过验证,OTP系统运行正常,原有的密码被替换成了密码+OTP。

    7.png

    0×06 后续工作

    至此,资金和技术问题已经解决,接下来的工作就是如何推动业务部门接入OTP系统了。

    0×07 参考内容

    Multi-factor authentication

    https://en.wikipedia.org/wiki/Multi-factor_authentication

    FreeIPA

    http://www.freeipa.org/page/Main_Page

    ACIs Manually

    https://www.centos.org/docs/5/html/CDS/ag/8.0/Managing_Access_Control-Creating_ACIs_Manually.html

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



沪ICP备19023445号-2号
友情链接