この記事では、接続時に確認リクエストを送信する Telegram ボットによる XNUMX 要素認証を有効にする OpenVPN サーバーのセットアップについて説明します。
OpenVPN は、有名な無料のオープンソース VPN サーバーであり、従業員による組織内部リソースへの安全なアクセスを組織するために広く使用されています。
VPN サーバーに接続するための認証には、通常、キーとユーザーのログイン/パスワードの組み合わせが使用されます。 同時に、クライアントに保存されているパスワードによって、セット全体が適切なレベルのセキュリティを提供しない単一の要素になってしまいます。 攻撃者は、クライアント コンピュータにアクセスすると、VPN サーバーにもアクセスします。 これは、Windows を実行しているマシンからの接続に特に当てはまります。
99 番目の要素を使用すると、不正アクセスのリスクが XNUMX% 軽減され、ユーザーの接続プロセスはまったく複雑になりません。
すぐに予約しましょう。実装するには、ニーズに応じて無料料金を使用できるサードパーティの認証サーバーmultifactor.ruに接続する必要があります。
どのように動作します
- OpenVPN は認証に openvpn-plugin-auth-pam プラグインを使用します
- プラグインはサーバー上のユーザーのパスワードをチェックし、Multifactor サービスの RADIUS プロトコル経由で XNUMX 番目の要素を要求します。
- Multifactor は Telegram ボット経由でユーザーにアクセスを確認するメッセージを送信します
- ユーザーは Telegram チャットでアクセス要求を確認し、VPN に接続します
OpenVPN サーバーのインストール
OpenVPN のインストールと構成のプロセスを説明した記事がインターネット上に多数あるため、重複することはありません。 ヘルプが必要な場合は、記事の最後にチュートリアルへのリンクがいくつかあります。
マルチファクターのセットアップ
に行く
作成したら、次の XNUMX つのオプションを使用できます。 NAS-IDentifier и 共有秘密、これらは後続の構成で必要になります。
[グループ] セクションで、[すべてのユーザー] グループ設定に移動し、[すべてのリソース] フラグを削除して、特定のグループのユーザーのみが VPN サーバーに接続できるようにします。
新しいグループ「VPN ユーザー」を作成し、Telegram を除くすべての認証方法を無効にし、ユーザーが作成された VPN リソースにアクセスできることを示します。
「ユーザー」セクションで、VPN にアクセスできるユーザーを作成し、そのユーザーを「VPN ユーザー」グループに追加して、認証の XNUMX 番目の要素を構成するためのリンクを送信します。 ユーザーのログインは、VPN サーバーのログインと一致する必要があります。
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 つのボタンを使用してアクセス要求を送信します。
XNUMX つのボタンでアクセスが許可され、XNUMX つ目のボタンでアクセスがブロックされます。
これで、パスワードをクライアントに安全に保存できるようになり、XNUMX 番目の要素によって OpenVPN サーバーが不正アクセスから確実に保護されます。
何かがうまくいかない場合
何も見逃していないかを順番に確認してください。
- OpenVPN を使用するサーバー上にパスワードが設定されたユーザーがいます
- サーバーは、UDP ポート 1812 経由でアドレス radius.multifactor.ru にアクセスできます。
- NAS-Identifier および Shared Secret パラメータが正しく指定されている
- 同じログインを持つユーザーが Multifactor システムで作成され、VPN ユーザー グループへのアクセスが許可されています。
- ユーザーは Telegram 経由で認証方法を設定しました
これまでに OpenVPN をセットアップしたことがない場合は、以下をお読みください。
手順は CentOS 7 での例を使用して作成されています。
出所: habr.com