リモート認証ダイヤルインユーザーサービス(RADIUS)の信頼性とスケーラビリティ

投稿者 Zevenet | 3年2017月XNUMX日

概要

半径 or リモート認証ダイヤルインユーザーサービス は、ユーザーとデバイスの集中管理の認証、承認、およびアカウンティングを提供するネットワークプロトコルです。 これは、インターネット、ローカルサービス、WiFiアクセスポイントを介したワイヤレスネットワークなどへのアクセスを制御するために、インターネットサービスプロバイダーや企業によって広く使用されています。

RADIUSプロトコルは、トランスポート層としてTCPまたはUDPを使用することができ、以下のようなユーザデータベースと通信されるクライアント - サーバアーキテクチャを用いてアプリケーション層に実装される。 Active Directory, LDAPサービス or Linux会計システム。 最も一般的なRADIUSソリューションは、FreeRadiusまたはMicrosoft NPS Radiusサーバーです。

RADIUSメッセージングプロトコル

プロトコルメッセージングは​​、以下に示すように、クライアント要求とサーバー応答の方法に基づいています。

1. クライアントが アクセス要求 サーバーポートに対して認証される各ユーザーまたはデバイスのサーバーへのアクセス TCP / UDP 1812 (古いバージョンのサーバーでは 1645 認証のためにも)。
2. サーバーはポリシーに従って応答します アクセス許可 認証が許可されている場合 アクセス拒否 アクセスが許可されていない場合 アクセスチャレンジ サーバーがアクセスを判断するためにさらに情報を必要とする場合(2回目の検証のように:PIN、パスワード、証明書など)。

任意選択で、クライアントとサーバは、以下のように会計のメッセージを交換することができます。 会計依頼 及び 会計対応 固有のセッションIDを維持するため。

3. クライアントが 会計依頼 ポート経由でサーバーへ TCP / UDP 1813 会計セッション管理用(古いバージョンのサーバーでは 1646 認証のためにも)。
4. サーバーは 会計対応 新しいセッションを確認するためのメッセージ。

RADIUS環境では、ユーザデータベース管理のための追加サービスが必要となり、高可用性で考慮することが重要になります。これは他の特定の記事で扱われます。

RADIUSロードバランシングとハイアベイラビリティ環境

RADIUSサービスがダウンしている場合の問題は、ユーザーがサーバーネットワークにアクセスできない、またはアプリケーションにログインできない、ユーザーがデバイスでセッションを開くことができない、または権利を使用するための認証を取得できないというリスクを生み出す可能性がありますビジネスプロセス。 このような状況を解決するために、この記事の目的は、以下に示す環境をセットアップすることです。

Zevenetは、異なるサイトまたはローカルサイトにあるすべてのRADIUSサーバー間でRADIUSプロトコルメッセージを共有します。 次のセクションでは、この種の環境の構成、RADIUSサービスの高度なヘルスチェック、およびこのプロトコルのセキュリティ上の課題について説明します。

RADIUS仮想サービスの設定

RADIUSプロトコルの性質はUDPパケットに基づいているため、信頼性の高いRADIUS環境の構成は LSLB と農場 L4xNAT レイヤー4、ポートでのプロファイル 1812 及び 1813、プロトコルタイプはUDP、優先 DTA 透明性を持ち、クライアントIPをバックエンド側にするために NAT 完璧に動作するはずです)。

メディア サービス/製品client-radiusサーバー間で何らかのスティッキ性が要求されない限り、デフォルトでは持続性は必要ありません。

RADIUSがUDPではなくTCPを介して使用されている場合は、プロトコルタイプフィールドで変更できます。 それも設定することができます すべて TCPとUDPの両方を同じ仮想IPから同時に許可するためのプロトコル。

最後に、ポートを構成せずにバックエンドを構成し(クライアント接続の宛先ポートを使用するため)、接続をテストします。 RADIUS仮想サービスが正常に構成されたら、このサービスの高度なヘルスチェックを設定できます。

RADIUSアドバンストヘルスチェックの設定

高度なチェックがZevenetに名前とともに含まれています check_radius デフォルトフォルダの下 / usr / local / zenloadbalancer / app / libexec /.

このコマンドの助けはリストすることができます:

root@zevenet5# /usr/local/zenloadbalancer/app/libexec/check_radius --help
Tests to see if a RADIUS server is accepting connections.

Usage:
check_radius -H host -F config_file -u username -p password
			[-P port] [-t timeout] [-r retries] [-e expect]
			[-n nas-id] [-N nas-ip-addr]

Options:
 -h, --help
    Print detailed help screen
 -V, --version
    Print version information
 --extra-opts=[section][@file]
    Read options from an ini file. See
    https://www.monitoring-plugins.org/doc/extra-opts.html
    for usage and examples.
 -H, --hostname=ADDRESS
    Host name, IP Address, or unix socket (must be an absolute path)
 -P, --port=INTEGER
    Port number (default: 1645)
 -u, --username=STRING
    The user to authenticate
 -p, --password=STRING
    Password for autentication (SECURITY RISK)
 -n, --nas-id=STRING
    NAS identifier
 -N, --nas-ip-address=STRING
    NAS IP Address
 -F, --filename=STRING
    Configuration file
 -e, --expect=STRING
    Response string to expect from the server
 -r, --retries=INTEGER
    Number of times to retry a failed connection
 -t, --timeout=INTEGER
    Seconds before connection times out (default: 10)

This plugin tests a RADIUS server to see if it is accepting connections.
The server to test must be specified in the invocation, as well as a user
name and password. A configuration file may also be present. The format of
the configuration file is described in the radiusclient library sources.
The password option presents a substantial security issue because the
password can possibly be determined by careful watching of the command line
in a process listing. This risk is exacerbated because the plugin will
typically be executed at regular predictable intervals. Please be sure that
the password used does not allow access to sensitive system resources.

まず、次のコマンド例を実行して、正しく機能しているかどうかを確認しましょう(Zevenetの独自のRADIUSクライアント構成パラメーターを使用してください)。

root@zevenet5# cd /usr/local/zenloadbalancer/app/libexec/
root@zevenet5# ./check_radius -H <RADIUS_SERVER_IP> -P <RADIUS_SERVER_PORT> -u <DUMMY_USER_NAME> -p <DUMMY_USER_PASSWD> -F <RADIUS_CLIENT_CONFIG_FILE>

テストは、ZevenetアプライアンスからXNUMXつの特定のRADIUSサーバーに対して、ダミーのユーザー検証と、オプションで特定のクライアントパラメーターのクライアント構成ファイルを使用して実行されます。 コマンドをテストして、次のコマンドを取得したら OK サーバーから 故障 ダウンしている場合は、で高度なヘルスチェックを構成できます。 サービス/製品 作成したばかりの仮想サービスのセクション。

を使用することを忘れないでください HOST 以下のようにZevenetで高度なヘルスチェックを設定するときのトークン。

check_radius -H HOST -P 1812 -u johndoe -p johnspass -F /etc/radius_client.cfg

下を参照してください サービス/製品 セクション構成

RADIUSセキュリティオプション

RADIUSプロトコルは、UDPを介したパケットごとの認証と整合性チェックにMD5アルゴリズムを伝統的に使用してきました。 これらXNUMXつはセキュリティの暗号化と保護を提供しないため、いくつかのアプローチが研究されています。

RADIUS overの展開 IPsec or インターネットプロトコルセキュリティ 広く展開されていますが、ネットワーク層に暗黙的に含まれているため、アプリケーション層がセキュリティポリシーを認識しないため、このオプションにはいくつかの問題があります。 このアプローチをZevenetで使用するには、まだ統合されていないため、手動で構成する必要があります。

の仕様 DTLS or データグラムトランスポート層セキュリティ 暗号化を提供し、そのようなトラフィックのセキュリティポリシーを監視および制御することを許可します。

他のオプションはRADIUS overです TLS それは信頼性とインオーダートランスポート層のTCP機能を提供します。

この種のアプローチでは、 IANA の公式エントリを作成しました RadSec (RADIUSセキュリティ)UDPを使う 2083 ポート RADIUS / TLS 実装

もう1つの選択肢は、ダイジェストレイヤと認証レイヤを次のように強化することです。 EAP (拡張認証プロトコルそれはリンク確立層ではなく接続認証フェーズの間に使われます、MD5弱いダイジェストの使用を避けます。

さらに、Zevenetを使用すると、悪意のあるパケットやホスト、DoS攻撃、総当たり攻撃などから、RADIUSサービスをIPDSモジュールで保護することができます。

RADIUSプロキシ機能

複数のRADIUSサーバーが異なるサイトに展開されている場合、認証、承認、およびアカウンティングデータを管理するサイトにクライアント接続を転送することは興味深いことです。 現在、ZevenetはRADIUSプロキシ機能をサポートしていませんが、まもなく含まれる予定です。 最新の開発を楽しみにしています!

可用性が高くスケーラブルなネットワークアクセスサービスをお楽しみください。

上の共有:

GNU Free Documentation Licenseの条項に基づくドキュメンテーション。

この記事は役に立ちましたか?

関連記事