過去のチュートリアルでは、OpenVPNにワンタイムパスワードを追加し、Packerを使用してWiKIDサーバーを作成しました。このチュートリアルでは、Packerを使用してOpenVPN/WiKIDを組み合わせたサーバーを作成します。 Packerを使用すると、コードを使用してVMware、VirtualBox、EC2、GCE、Dockerなどのイメージを作成できます。 2要素認証サーバーとVPNサーバーを1つのボックスに組み合わせることが、最適なソリューションである場合とそうでない場合があることに注意してください。私たちは通常、セキュリティと柔軟性のために職務を分離するのが好きです。ただし、何か速いものが必要な場合(PCI監査人が月曜日に到着する場合)、または抑圧的な状態にあり、短期間の安全なアウトバウンド接続が必要な場合。そして、あなたはまだある程度の柔軟性を持っています。 WiKIDサーバーにサービスを追加できます。 OpenVPNサーバーを無効にして、代わりに別のVPNに切り替えることができます。
まず、Packerをダウンロードしてインストールします。
GitHubからPackerスクリプトをチェックアウトしてください。スクリプトは、Packerに何をするかを指示するメインJSONファイル、Anacondaビルドスクリプトを含むhttpディレクトリ、イメージにアップロードされるファイルディレクトリ、およびイメージのビルド後に実行されるプロビジョナーで構成されます。基本的に、PackerはISOやAMIなどのソースから開始し、Anaconda(少なくともCentOSの場合)に基づいてサーバーを構築し、ファイルをアップロードしてからプロビジョナーを実行します。 Packerは、主にべき等サーバーの作成を対象としています。この例では、これを使用してコマンドを実行しているため、約50個ではなく1個のコマンドを実行できます(プロビジョニング用)。
ビルドする前に、いくつかのファイルを編集する必要があります。まず、 / files / varsを編集します 。これは、OpenVPN証明書を作成するための標準のvarsファイルです。証明書フィールドに値を入力するだけです。
# 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="[email protected]" export KEY_OU="WiKID Systems, Inc"
次に、 / files / serverの共有シークレットを編集する必要があります 。このファイルは、使用するRADIUSサーバーをPAMに通知します。この場合、WiKIDサーバーと直接通信しています。共有シークレットは、radiusトラフィックをエンコードするために使用されます。 WiKIDは同じサーバーで実行されているため、ローカルホストをサーバーとして保持します。
# server[:port] shared_secret timeout (s) 127.0.0.1 secret 3
この共有秘密は後で必要になります。
centos-6-x86-64.jsonをご覧ください 。そのまま実行できますが、いくつか編集したい場合があります。 source_ami(リストされているamiは米国東部にあります)を確認するか、お好みのCentOSAMIの1つに切り替える必要があります。 VMwareまたはVirtualBoxでビルドしている場合は、iso_urlをハードドライブ上のCentOS ISOの場所に変更し、MD5Sumを更新する必要があります。名前と説明を編集することをお勧めします。 EC2リージョンを変更することもできます。最も重要なのは、ルートパスワードである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サーバーが新しい証明書で完全に構築されていることがわかります!
WiKID2要素認証サーバーを構成します
作成したら、AMIを起動するか、仮想マシンをインポートする必要があります。 VirtBoxを起動し、[ファイル]、[アプライアンスのインポート]の順に選択します。 buildコマンドで作成したoutput-virtualbox-isoディレクトリをポイントし、OVFファイルを開きます。仮想マシン(メモリやネットワークなど)に必要な変更を加えて、サーバーを起動します。
root/wikidまたはJSONファイルのようにrootパスワードを設定したものを使用してログインします。クイックスタート構成オプションを使用してWiKIDサーバーを構成します。ファイルを現在のディレクトリにコピーします:
cp /opt/WiKID/conf/sample-quick-setup.properties wikid.conf
それらの指示に従ってwikid.confを編集します。ドメインコードとしてゼロが埋め込まれたサーバーまたはEC2インスタンスの外部IPアドレスを使用します。したがって、54.163.165.73は054163165073になります。RADIUSホストの場合は、 / 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
VMを使用している場合は、次のコマンドを実行してネットワークを構成できます。
wikidctl setup
EC2では、WiKIDサーバーを設定するだけです。
wikidctl quick-setup configfile=wikid.conf
構成情報がスクロールして表示されます。 WiKIDサーバーを起動します:
wikidctl start
wikid.confで設定したパスフレーズの入力を求められます。 https://yourserver.com/WiKIDAdmin/でWIKIDAdminインターフェースを参照すると、ドメインが作成され、radiusネットワーククライアントが構成され、必要なすべての証明書が完了していることがわかります。
サーバーを離れる前に、「useradd $ username」を使用して、サーバー上のアカウントとしてユーザー名を追加する必要があります。パスワードを追加する必要はありません。
WiKIDソフトウェアトークンを登録する
WiKIDソフトウェアトークンをダウンロードするか、iOSまたは market:// search?q =pname:com.wikidsystems.android用にインストールします アプリストアのAndroid向け。
トークンを開始し、[ドメインの追加]を選択します。 wikid.confで設定したドメインIDコードを入力すると、PINの設定を二重に求められます。そうすれば、登録コードが返されます。 WiKIDAdmin Web UIに移動し、[ユーザー]タブをクリックして、[ユーザーを手動で検証する]をクリックします。登録コードをクリックして、ユーザー名を入力します。このプロセスは、トークン(および交換されたキー)をユーザーに関連付けます。
VPNクライアントをセットアップする
ca.crtをクライアントにダウンロードします:
scp -i ~/Downloads/wikid.pem [email protected]:/etc/openvpn/ca.crt .
client.confOpenVPNファイルを編集します。リモートサーバーを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トークンからパスコードを要求し、パスワードフィールドに入力します。アクセスを許可する必要があります。
関連:
- WiKID-2要素認証サーバー
- OpenVPN
- パッカー