記事の目的
この記事の主な目標は、LDAP(FreeIPA)からの認証を使用したOpenVPNに基づいたVPNアクセスシステムをセットアップするための可能なシナリオの1つを示すことです。
聴衆
この記事はLinuxシステム管理者向けです。
はじめに
インフラストラクチャへのリモートアクセスは、リモートサポートやリモートサービス用のエンドサービスの使用など、多くのタスクを実行するために必要です。
OpenVPNについて
OpenVPNは、コンピューター間に暗号化されたポイントツーポイントまたはサーバークライアントチャネルを作成するための無料のオープンソース仮想プライベートネットワーク(VPN)テクノロジーです。 設定を変更することなく、NATの背後にあるコンピューターとファイアウォールの間に接続を確立できます。
インターネットには、OpenVPNとその構成方法を説明する多くの記事があります。
ソースデータ
複数のサーバーを含むインフラストラクチャがあり、すべてのサービスがLXCコンテナーとして実装されています。 このインフラストラクチャには、次の構成済みサーバーが既に含まれています。
サーバー | IP | OS | 説明 |
---|
server1 | 10.209.102.10 | CentOS 7.x | LXCコンテナーのハイパーバイザー。 |
freeIPA1 | 10.209.102.11 | CentOS 7.x | ユーザーアカウントとサービスへのアクセス権を集中管理するIDMシステム。 |
すべてのコンテナーは、libvirtのLXCドライバーを介して管理されます。 また、libvirtのLXCドライバーに後続のすべてのサービスをデプロイすることを想定しています。
server1では、コンテナはbr0という名前のネットワークブリッジを介してアクセスされます。
LDAPサーバーに接続するためのアカウントが発行されました。
タスク
インフラストラクチャへの従業員のリモートアクセスシステムを編成する必要があります。 前提条件は、ユーザー名とパスワードのペアに対する追加のユーザーチェックです。 このインフラストラクチャでは、ユーザーアカウントはFreeIPAに保存されるため、OpenVPN認証システムとFreeIPAの統合を構成する必要があります。
大きなブロックでは、次の問題を解決する必要があります。
•OpenVPN要求を処理するためのLXCコンテナーのインストールと構成
•OpenVPNサーバーのインストールと構成
•OpenVPNサーバーでのLDAP(FreeIPAに基づく)認証の構成
•OpenVPNクライアントの構成
LXCコンテナのインストール
•server1ハイパーバイザーに接続する
•リポジトリの説明を含むコンテナインフラストラクチャを作成する
[root@server1 /]
これらの操作の本質は、yumを介してCentOSをインストールすることです。これには、リポジトリへのパスを指定する必要があります。 yumがパッケージのダウンロード元を認識できるように、yum構成ファイルはインストールプロセスの前に作成する必要があります。 openvpn1コンテナファイルは/ var / lib / libvirt / lxc / openvpn1ディレクトリにあると想定されています。 このファイルシステムに十分なディスク領域を用意する必要があります。
•インストール場所を指定するオプション(--installroot)を使用して、CentOS 7ベースファイルをインストールします。
[root@server1 yum.repos.d]
•コンテナにrootユーザーのパスワードを設定します
[root@server1 yum.repos.d]
•端末がルートとして接続できるようにする
[root@server1 ssh]
•ホスト名を設定する
[root@server1 ssh]
•ネットワーク接続構成ファイルを作成する
[root@server1 /]
•resolv.confを構成します。 このバージョンでは、FreeIPAはDNSサービスを提供します。このため、IPAは最初のDNSです。
[root@server1 /]
•libvirtを介してLXCコンテナーを作成する
[root@server1 yum.repos.d]
•サーバーコンソールへの接続を試みます(CTRL +“]“出力)
[root@server1 /]
•SSHを介してLXCコンテナーに接続します(コンテナー内でさらにアクションが実行されます)
•クライアントをインストールし、ユーザーアカウントを集中管理するためにFreeIPA用に構成します。
[root@openvpn1 ~]
•デフォルトでは、libvirtのLXCドライバーはデバイス/ dev / net / tunをコンテナーに転送しません。 この問題を解決するには、仮想マシン構成の機能設定を変更する必要があります。 これをオフにする必要があります。
[root@openvpn1 ~]
•次に、構成を編集します
[root@server1 ~]
•tunインターフェイスを上げるには、コンテナ構成(hostdevブロック)にテキストを挿入する必要があります
<devices> <emulator>/usr/libexec/libvirt_lxc</emulator> <filesystem type='mount' accessmode='passthrough'> <source dir='/var/lib/libvirt/lxc/openvpn1/'/> <target dir='/'/> </filesystem> <interface type='bridge'> <mac address='00:16:3e:20:de:5a'/> <source bridge='br0'/> </interface> <console type='pty'> <target type='lxc' port='0'/> </console> <hostdev mode='capabilities' type='misc'> <source> <char>/dev/net/tun</char>
•コンテナーを起動する
[root@server1 ~]
OpenVPNサービスの基本構成
インターネットには、OpenVPNのインストールについて説明した興味深い詳細な記事が多数あります。 ここでは、インストールの瞬間を非常に簡単に見ていきます。
•EPELリポジトリを接続する
[root@openvpn1 ~]
•openvpnパッケージをインストールする
[root@openvpn1 ~]
•デモ設定をコピーする
[root@openvpn1 ~]
•構成ファイルを編集します(たとえば、構成ファイルを以下に示します)。
[root@openvpn1 ~]
•パケットルーティングをオンにする
[root@openvpn1 ~]
•firewalldインターフェイスを介して機能するために必要なポートを開く
[root@openvpn1 ~]
証明書と必要なセキュリティファイルの生成
•Diffie-Hellmanファイルを生成する
[root@openvpn1 ~]
•ta.keyファイルを生成します
[root@openvpn1 ~]
•easy-rsaの環境をセットアップする
[root@openvpn1 ~]
•ファイル/ etc / openvpn / easy-rsa / varsを編集します
[root@openvpn1 ~]
•easy-rsaインフラストラクチャを使用して証明機関(CA)を作成する
[root@openvpn1 ~]
•証明書をOpenVPNサーバー設定ディレクトリにコピーします。
[root@openvpn1 ~]
FreeIPA(ldap auth)を介した認証の構成
主なアイデアは、キー認証に加えて、ログイン/パスワードのペアを使用して、リモート接続サービスのセキュリティを強化することです。 FreeIPAサービスが既に構成され、実行されていることが前提です。 vpnusersグループのユーザーにはリモート接続権限があります
•IPAサーバーにvpnusersグループを作成し、OpenVPNを介したリモート接続権限が必要なユーザーに割り当てます。
•パッケージopenvpn-auth-ldapを収集します
CentOS 7用のopenvpn-auth-ldapを構築できないという問題があります。この問題は、Fedora 23パッケージのsrc.rpmを使用して簡単に解決できます(もちろん、rootユーザーからパッケージを収集することはお勧めできません)。 ここでは、依存関係パッケージをインストールし、RPMパッケージを別のホストに構築することを強くお勧めします。 手順を簡素化するために、同じサーバー上に構築します。
[root@openvpn1 ~]
•openvpn-auth-ldapパッケージをインストールします
[root@openvpn1 ~]
•認証ファイルを編集します。 LDAPサーバー上のアカウントは、必要なパスワードで既に作成されていることに注意してください
[root@openvpn1 SPECS]
•openvpn設定ファイルを編集します
[root@openvpn1 ~]
•OpenVPNサービスを再起動します
[root@openvpn1 ~]
<H1 <クライアントアクセスの構成
•クライアント証明書を生成する
[root@openvpn1 ~]
•必要なファイルを1か所にコピーする
[root@openvpn1 ~]
•構成ファイルを作成する
[root@openvpn1 ~]
•ディレクトリ/ルート/クライアントからクライアントにファイルを転送します
•Linuxからの接続:
[root@client ~]