Telegram ボットを使用した OpenVPN の XNUMX 要素認証

この記事では、接続時に確認リクエストを送信する Telegram ボットによる XNUMX 要素認証を有効にする OpenVPN サーバーのセットアップについて説明します。

OpenVPN は、有名な無料のオープンソース VPN サーバーであり、従業員による組織内部リソースへの安全なアクセスを組織するために広く使用されています。

VPN サーバーに接続するための認証には、通常、キーとユーザーのログイン/パスワードの組み合わせが使用されます。 同時に、クライアントに保存されているパスワードによって、セット全体が適切なレベルのセキュリティを提供しない単一の要素になってしまいます。 攻撃者は、クライアント コンピュータにアクセスすると、VPN サーバーにもアクセスします。 これは、Windows を実行しているマシンからの接続に特に当てはまります。

99 番目の要素を使用すると、不正アクセスのリスクが XNUMX% 軽減され、ユーザーの接続プロセスはまったく複雑になりません。

すぐに予約しましょう。実装するには、ニーズに応じて無料料金を使用できるサードパーティの認証サーバーmultifactor.ruに接続する必要があります。

どのように動作します

  1. OpenVPN は認証に openvpn-plugin-auth-pam プラグインを使用します
  2. プラグインはサーバー上のユーザーのパスワードをチェックし、Multifactor サービスの RADIUS プロトコル経由で XNUMX 番目の要素を要求します。
  3. Multifactor は Telegram ボット経由でユーザーにアクセスを確認するメッセージを送信します
  4. ユーザーは Telegram チャットでアクセス要求を確認し、VPN に接続します

OpenVPN サーバーのインストール

OpenVPN のインストールと構成のプロセスを説明した記事がインターネット上に多数あるため、重複することはありません。 ヘルプが必要な場合は、記事の最後にチュートリアルへのリンクがいくつかあります。

マルチファクターのセットアップ

に行く 多要素制御システム、「リソース」セクションに移動し、新しい VPN を作成します。
作成したら、次の XNUMX つのオプションを使用できます。 NAS-IDentifier и 共有秘密、これらは後続の構成で必要になります。

Telegram ボットを使用した OpenVPN の XNUMX 要素認証

[グループ] セクションで、[すべてのユーザー] グループ設定に移動し、[すべてのリソース] フラグを削除して、特定のグループのユーザーのみが VPN サーバーに接続できるようにします。

新しいグループ「VPN ユーザー」を作成し、Telegram を除くすべての認証方法を無効にし、ユーザーが作成された VPN リソースにアクセスできることを示します。

Telegram ボットを使用した OpenVPN の XNUMX 要素認証

「ユーザー」セクションで、VPN にアクセスできるユーザーを作成し、そのユーザーを「VPN ユーザー」グループに追加して、認証の XNUMX 番目の要素を構成するためのリンクを送信します。 ユーザーのログインは、VPN サーバーのログインと一致する必要があります。

Telegram ボットを使用した OpenVPN の XNUMX 要素認証

OpenVPN サーバーのセットアップ

ファイルを開く /etc/openvpn/server.conf PAM モジュールを使用して認証用のプラグインを追加します

plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn

プラグインはディレクトリに配置できます。 /usr/lib/openvpn/plugins/ または /usr/lib64/openvpn/plugins/ システムによって異なります。

次に、pam_radius_auth モジュールをインストールする必要があります

$ sudo yum install pam_radius

編集するためにファイルを開きます /etc/pam_radius.conf Multifactor の RADIUS サーバーのアドレスを指定します。

radius.multifactor.ru   shared_secret   40

ここで:

  • radius.multifactor.ru — サーバーアドレス
  • shared_secret - 対応する VPN 設定パラメータからコピーします
  • 40 秒 - 余裕のあるリクエスト待機のタイムアウト

残りのサーバーは削除するかコメントアウトする必要があります (先頭にセミコロンを付けます)。

次に、サービスタイプ openvpn のファイルを作成します

$ sudo vi /etc/pam.d/openvpn

そしてそれを書き込んでください

auth    required pam_radius_auth.so skip_passwd client_id=[NAS-IDentifier]
auth    substack     password-auth
account substack     password-auth

最初の行は、PAM モジュール pam_radius_auth をパラメータと接続します。

  • Skip_passwd - RADIUS Multifactor サーバーへのユーザーのパスワードの送信を無効にします (パスワードを知る必要はありません)。
  • client_id — [NAS-Identifier] を VPN リソース設定の対応するパラメーターに置き換えます。
    考えられるパラメータはすべて次のとおりです。 モジュールのドキュメント.

XNUMX 行目と XNUMX 行目には、サーバー上のログイン、パスワード、ユーザー権限のシステム検証と、XNUMX 番目の認証要素が含まれています。

OpenVPNを再起動する

$ sudo systemctl restart openvpn@server

クライアントのセットアップ

ユーザーのログインとパスワードの要求をクライアント構成ファイルに含めます。

auth-user-pass

Проверка

OpenVPN クライアントを起動し、サーバーに接続し、ユーザー名とパスワードを入力します。 Telegram ボットは XNUMX つのボタンを使用してアクセス要求を送信します。

Telegram ボットを使用した OpenVPN の XNUMX 要素認証

XNUMX つのボタンでアクセスが許可され、XNUMX つ目のボタンでアクセスがブロックされます。

これで、パスワードをクライアントに安全に保存できるようになり、XNUMX 番目の要素によって OpenVPN サーバーが不正アクセスから確実に保護されます。

何かがうまくいかない場合

何も見逃していないかを順番に確認してください。

  • OpenVPN を使用するサーバー上にパスワードが設定されたユーザーがいます
  • サーバーは、UDP ポート 1812 経由でアドレス radius.multifactor.ru にアクセスできます。
  • NAS-Identifier および Shared Secret パラメータが正しく指定されている
  • 同じログインを持つユーザーが Multifactor システムで作成され、VPN ユーザー グループへのアクセスが許可されています。
  • ユーザーは Telegram 経由で認証方法を設定しました

これまでに OpenVPN をセットアップしたことがない場合は、以下をお読みください。 詳細記事.

手順は CentOS 7 での例を使用して作成されています。

出所: habr.com

コメントを追加します