为使用Packer的内置双因素认证的VPN构建您自己的组合OpenVPN / WiKID服务器。

在过去的教程中,我们向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软件令牌或从iOSAndroid安装。

启动令牌并选择“添加域”。 输入您在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令牌请求密码,并将其输入密码字段。 您应该被授予访问权。

有关:

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏