*本文原创作者:agui,本文属FreeBuf原创奖励计划,未经许可禁止转载
安全建设过程中,总体预算、投入产出比均是首先需要考虑的问题,缺少具备开发能力的人员、缺少资金预算的情况下,开源产品就成了必然的选择。
虎符是古代皇帝调兵遣将用的兵符,用青铜或者黄金做成伏虎形状的令牌,劈为两半,其中一半交给将帅,另一半由皇帝保存,只有两个虎符同时合并使用,持符者即获得调兵遣将权。虎符也大致可看做是双因素身份认证的早期应用了。
2FA,双因素认证。一是你知道什么,一是你有什么或者你是什么,比如说,你需要提供密码,同时你还需提供动态口令,又或者采用虹膜、指纹等生物特征作为第二因素进行身份认证,当然,指纹因容易被伪造,很多安全专家并不推荐使用。
企业安全管理中,综合成本、部署维护难易程度等原因,OTP是一个不错的选择。OTP全称为One-Time-Password,也称动态口令,在需要强身份认证的场合比较常用,常见的应用有网银硬件令牌、手机令牌等。具备动态口令功能的商业产品比较多,有实力的企业可以自行选择。本文中我们选择Freeotp作为OTP解决方案。
Freeotp是一款来自Red Hat的开源的软令牌解决方案,支持HTOP和TOTP,同时提供了IOS和Android客户端。Freeotp已集成在Freeipa中,这里我们从部署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
首先登陆freeipa服务器。用户名admin,密码是上一节安装过程中配置的mypassword1。
服务端启用OTP有两种方式。
一是在全局配置中,为所有用户启用OTP:依次找到【IPA Server】-【Configuration】-【Default user authentication types】,勾选【Two factorauthentication (password + OTP)】
二是为每一个用户分别启用OTP:
依次进入【Authentication】-【OTP tokens】,根据需要选择添加、删除或禁用、启用令牌
令牌配置:
在应用市场搜索freeotp,下载并安装客户端。
客户端可以通过扫描服务端添加令牌配置后生成的二维码添加令牌。
应用场景: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。
至此,资金和技术问题已经解决,接下来的工作就是如何推动业务部门接入OTP系统了。
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原创奖励计划,未经许可禁止转载