在过去的教程中,我们向OpenVPN添加了一次性密码,并使用Packer创建了一个WiKID服务器。 在本教程中,我们使用Packer创建组合的OpenVPN / WiKID服务器。 Packer允许我们使用代码创建VMware,VirtualBox,EC2,GCE,Docker等图像。 请注意,将您的双因素身份验证服务器和VPN服务器组合在一个盒子上可能是或可能不是您的最佳解决方案。 我们通常喜欢分离安全性和灵活性。 但是,如果您需要快速的话,PCI审核员星期一到达 - 或者您处于压制状态,并且需要短时间内的安全出站连接。 你还有一些灵活性。 您可以向WiKID服务器添加更多服务。 您可以禁用OpenVPN服务器,而是切换到其他VPN。
构建组合服务器
首先,下载并安装Packer 。
从GitHub查看我们的Packer脚本 。 这些脚本包含一个主要的JSON文件,它告诉Packer它是做什么的,一个包含Anaconda构建脚本的http目录,上传到图像的文件目录以及在构建映像之后运行的配置程序。 基本上Packer从一些源(如ISO或AMI)开始,构建基于Anaconda的服务器(至少对于CentOS),上传任何文件,然后运行配置程序。 打包机主要面向创建幂等服务器。 在我们的情况下,我们正在使用它来执行命令,允许我们运行一个命令,而不是大约50个(仅供配置)。
在构建之前,需要编辑几个文件。 首先,编辑/文件/ vars 。 这是创建OpenVPN证书的标准vars文件。 只需输入cert字段的值。
# These are the default values for fields # which will be placed in the certificate. # Don't leave any of these fields blank. export KEY_COUNTRY="US" export KEY_PROVINCE="GA" export KEY_CITY="Atlanta" export KEY_ORG="WiKID Systems Inc" export KEY_EMAIL="me@wikidsystems.com" export KEY_OU="WiKID Systems, Inc"
接下来,您需要编辑/ files / server中的共享密码。 该文件将告诉PAM要使用的RADIUS服务器。 在这种情况下,它直接与WiKID服务器通话。 共享密码用于对半径流量进行编码。 由于WiKID在同一台服务器上运行,请将localhost作为服务器:
# server[:port] shared_secret timeout (s) 127.0.0.1 secret 3
你以后会需要这个共享的秘密。
看看centos-6-x86-64.json 。 您可以按原样运行,但您可能想编辑一些东西。 您应该确认source_ami(列出的ami在美国东部)或将其切换到您首选的CentOS AMI之一。 如果您正在VMware或VirtualBox上构建,则需要将iso_url更改为硬盘驱动器上CentOS ISO的位置,并更新MD5Sum。 您可能需要编辑名称和说明。 您也可以更改EC2区域。 最重要的是,您可以更改root密码的ssh_password。
一旦你对JSON文件感到满意,你可以用Packer来验证它:
$packer_location/packer verify centos-6-x86-64.json
如果这样工作,建立它。 您可以在命令行中指定目标平台:
$packer_location/packer build --only=virtualbox-iso centos-6-x86-64.json
如果您为EC2构建,请将所需的凭据放在命令行中:
$packer_location/packer build -var 'aws_access_key=XXXXXXXXXXXXXXXXXXXX' -var 'aws_secret_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' --only=amazon-ebs centos66.json
如果您看命令运行,您将看到一个完整的OpenVPN服务器正在构建完整的新证书!
配置WiKID双因素认证服务器
创建后,您将需要启动AMI或导入虚拟机。 启动VirtBox并选择文件,导入设备。 将其指向由build命令创建的output-virtualbox-iso目录,然后打开OVF文件。 对虚拟机进行任何更改(例如内存或网络)并启动服务器。
使用root / wikid登录,或者您可能将JSON密码设置为JSON文件。 我们将使用快速启动配置选项配置WiKID服务器 。 将文件复制到当前目录:
cp /opt/WiKID/conf/sample-quick-setup.properties wikid.conf
根据这些说明编辑wikid.conf。 使用服务器的外部IP地址或零填充的EC2实例作为域代码。 因此,54.163.165.73变为054163165073.对于RADIUS主机,请使用localhost和您在/ files / server中创建的共享密钥:
information for setting up a RADIUS host radiushostip=127.0.0.1 radiushostsecret=secret ; *NOTE*: YOU SHOULD REMOVE THIS SETTING AFTER CONFIGURATION FOR SECURITY
如果您在虚拟机上,则可以通过运行以下命令配置网络:
wikidctl setup
在EC2上,您可以配置WiKID服务器:
wikidctl quick-setup configfile=wikid.conf
您将看到配置信息滚动过去。 启动WiKID服务器:
wikidctl start
系统将提示您输入在wikid.conf中设置的密码。 浏览到WIKIDAdmin界面,网址为:https://yourserver.com/WiKIDAdmin/,您应该看到您的域名已创建,您的radius网络客户端已配置,并且所有必需的证书已完成。
离开服务器之前,您应该使用'useradd $ username'将您的用户名作为帐户添加到服务器上。 没有必要添加密码。
注册WiKID软件令牌
从应用商店下载WiKID软件令牌或从iOS或Android安装。
启动令牌并选择“添加域”。 输入您在wikid.conf中设置的域标识码,您应该双重提示设置您的PIN。 这样做,你会得到一个注册码。 转到WiKIDAdmin Web UI,然后单击用户选项卡,然后手动验证用户。 点击您的注册码并输入您的用户名。 该过程将令牌(和已交换的密钥)与用户相关联。
设置VPN客户端
将ca.crt下载到客户端:
scp -i ~/Downloads/wikid.pem root@yourserver.com:/etc/openvpn/ca.crt .
编辑client.conf OpenVPN文件。 将远程服务器设置为组合的WiKID / OpenVPN服务器:
# The hostname/IP and port of the server. # You can have multiple remote entries # to load balance between the servers. remote yourserver.com 1194
注释出证书和密钥的行。 离开CA. 由于我们使用WiKID来验证和识别用户,所以不需要它们。
ca ca.crt #cert client.crt #key client.key
在文件的底部,告诉客户端提示输入密码:
auth-user-pass
现在启动OpenVPN客户端:
sudo openvpn client.conf
系统将提示您输入用户名和密码。 从您的WiKID令牌请求密码,并将其输入密码字段。 您应该被授予访问权。
有关: