UniFiコントローラー、RADIUSログインの表示

しばらく前に、* nixシステムにインストールされたコントローラーのWebベースのコントロールパネルで、許可されたRADIUSユーザーのログインの表示を構成する方法を説明した記事(Habrですが、再び見つかりませんでした)を読みました。 この特定のソリューションは* .nixにのみ適していると感じたため、Windows + NPS(別名RADIUSサーバー)に実装することに触発されました。



また、猫の下には、Windowsイベントからスケジューラタスクにデータを転送する方法に関する情報があります。



だった







なります







APとNPSの設定方法に関する情報は提供していませんが、 「Active Directoryアカウントを使用したワイヤレスクライアントの認証」のレビューを使用できます。 私の場合、NPSサーバーはWi-Fi認証のみに使用され、Unifiコントローラーは同じマシン上にあることに注意してください。 構成が異なる場合の対処方法を以下に示します。



計画の実施に直接進みます。 まず、成功したユーザー認証の瞬間を「キャッチ」し、キー情報を取得する必要があります。これは、クライアントデバイスのMACアドレスと認証ユーザーのログインを意味します。 これを行うには、Windowsスケジューラでタスクを作成します。トリガーは、NPSサーバーによる正常な承認のイベントになります(ログ:「セキュリティ」、ソース:「Microsoft Windowsセキュリティ監査」、イベントコード:6272)。 アクションでは、将来のCMDを示します(後で戻ります)。



トリガー設定




Windows GUIを介してイベントからスクリプトへのデータ転送を構成することはできませんが、問題ではありません。XMLでタスクをエクスポートし、テキストエディターで開きます。 EventTriggerブロックに興味があります:



<EventTrigger> <Enabled>true</Enabled> <Subscription><QueryList><Query Id="0" Path="Security"><Select Path="Security">*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and EventID=6272]]</Select></Query></QueryList></Subscription> </EventTrigger>
      
      





イベントから「借用」されたパラメーターを含むValueQueriesブロックを挿入します。



 <EventTrigger> <Enabled>true</Enabled> <Subscription><QueryList><Query Id="0" Path="Security"><Select Path="Security">*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and EventID=6272]]</Select></Query></QueryList></Subscription>
      
      



  <ValueQueries> <Value name="SubjectUserName">Event/EventData/Data[@Name='SubjectUserName']</Value> <Value name="CallingStationID">Event/EventData/Data[@Name='CallingStationID']</Value> </ValueQueries>
      
      



 </EventTrigger>
      
      





タスクの全文、オプションのパラメーターなし(habraparserは&gt;&lt;つまり、山括弧ではなくSubscriptionブロックにある必要があります。そうでない場合、インポートは失敗します)
 <?xml version="1.0" encoding="UTF-16"?> <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> <Triggers> <EventTrigger> <Enabled>true</Enabled> <Subscription><QueryList><Query Id="0" Path="Security"><Select Path="Security">*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and EventID=6272]]</Select></Query></QueryList></Subscription> <ValueQueries> <Value name="SubjectUserName">Event/EventData/Data[@Name='SubjectUserName']</Value> <Value name="CallingStationID">Event/EventData/Data[@Name='CallingStationID']</Value> </ValueQueries> </EventTrigger> </Triggers> <Actions Context="Author"> <Exec> <Command>C:\name_for_mac_unifi.cmd</Command> <Arguments>$(SubjectUserName) $(CallingStationID)</Arguments> </Exec> </Actions> </Task>
      
      







スケジューラに戻り、以前に作成したタスクを削除し、修正したXMLをインポートし、次の引数をスクリプトに追加します。 $(SubjectUserName)$(CallingStationID)



イベントとオプションについて
イベントパラメータをタスクに転送する方法については、 こちらをご覧ください



NPSサーバーがWi-Fiネットワークだけでなく多くのポリシーを提供している場合、上記のリンクはタスク条件(サブスクリプションブロック)に追加のフィルターを追加する方法を示します。この場合、NPSポリシーの名前でフィルターできます。



必要なデータがすべて揃ったので、スクリプトに進みます。 その中で、Unifi Controllerが使用するmongoデータベースが編集されます。つまり、クライアントデバイスのMACアドレスを持つレコードのユーザーコレクションで、nameプロパティがユーザーのログインと同じに設定されます(定期的な更新)。 CMDでは、次のようになります。



 @ECHO off set user=%1 set mac=%2 ::    -  : set mac=%mac:-=:% ::        -     ,  "sleep" ping -n 60 127.0.0.1 > nul :: mongo ,     mongo js      mongo.exe 127.0.0.1:27117/ace --eval "var mac='%mac%'; db.user.update({ mac:mac.toLowerCase()},{$set:{name:'%user%'} });"
      
      





MONGOクライアントとサーバーについて少し
mongoバイナリの中には、Unifi Controllerで提供されるクライアントはありません。 個別にダウンロードする必要がありますが、ダウンロードを提案したクライアントはサーバーよりも新しいため、更新する必要はありませんでした。 同じバージョンのクライアントをダウンロードすることで解決します。



次のようにクライアントとサーバーのバージョンを確認します。



 C:\>mongo.exe 127.0.0.1:27117/ace MongoDB shell version: 2.2.2 connecting to: 127.0.0.1:27117/ace > db.version() 2.2.2 > version() version: 2.2.2 >
      
      





MongoDB Webサイトにこのバージョンをダウンロードするリンクはありませんが、問題はありません。目的のプラットフォームの任意のバージョンへのリンクを取得します。



fastdl.mongodb.org/win32/mongodb-win32-i386-2.2.7.zip



そして、必要なmongoのバージョンを置き換えます:



fastdl.mongodb.org/win32/mongodb-win32-i386-2.2.2.zip



C 2.2.2が「万歳」に合格しました。



そして、はい、私はサードパーティのマシンから接続できませんでした。おそらく、ベースの設定が原因であったかもしれません。 ただし、データベースにリモートで接続できない場合でも、mongoサーバーがインストールされているマシンでローカルコマンドをリモートで実行することはできません。



それだけです、幸運を! 私は訂正/批判を受け入れます。



Unifi API
アイデア全体を実装して記事を開始した後、私はunifi api (明らかに、最初に述べた元の記事では、それが実装されていました)という言及に会いましたが、公式wikiのリンク検索は情報を開示しませんでした。 リポジトリ内の情報は、いくつかの方法の秘密を明らかにしました。



ログインを変更するには、 $ baseurl / api / cmd / stamgrを参照して、行json = {'cmd': 'update-sta'、 'mac': '$ {mac}'、 'name': '$ 2を渡すことができると思います'、'メール ':' $ 3 '}



All Articles