ESET Online pomocník

Vyhľadať Slovenčina
Vyberte kapitolu

Vytvorenie klientov ESA RADIUS cez API

Ak máte integrovanú ochranu ESA pre viaceré prihlásenia z desktopového prostredia Linux/Mac prostredníctvom modulov PAM a potrebujete v programe ESA nakonfigurovať veľa klientov RADIUS, nasledujúci skript PowerShell vám uľahčí prácu.

Prerekvizity

1.Nakonfigurujte klienta RADIUS v nástroji ESA Web Console.

Basic Settings > IP address: zadajte IP adresu počítača hosťujúceho modul PAM, pomocou ktorej sa k nemu server ESA RADIUS dostane.

Basic Settings > Shared Secret: zadajte rovnakú zdieľanú tajnú informáciu, akú ste nastavili v zariadení VPN.

Authentication > Client Type > Client validates user name and password - use Access-Challenge.

2.Povoľte ESA API a pridajte prihlasovacie údaje API pre Management API v nástroji ESA Web Console.

3.V súbore .csv uveďte IP adresu a Shared Secret každého VPN zariadenia v tomto formáte: <IP address>;<Shared Secret>.

Napríklad:

192.168.0.11;test1

192.168.0.12;test2

192.168.0.13;test3
 

Ak spúšťate skript na inom počítači, než na ktorom je nainštalovaný autentifikačný server:

1.Uistite sa, že certifikát ESA na danom počítači je dôveryhodný.

2.Uistite sa, že certifikát obsahuje úplný názov domény (FQDN) autentifikačného servera v zozname alternatívnych názvov DNS.

Ako skript funguje?

Skript prečíta každý riadok súboru .csv a vytvorí toľko klientov RADIUS, koľko riadkov IP adries so zdieľanými tajnými informáciami nájde. Sekcia Authentication každého klienta RADIUS bude nakonfigurovaná podľa prednastaveného klienta RADIUS.

Príklad skriptu PowerShell na vytvorenie nového klienta ESA RADIUS cez ESA API – súbor sa volá create_radius_clients.ps1

# configuration

 

# Management API credentials - username:password

$credentials = "kjssgmarkm:dapweburnx"

 

# IP address or FQDN of the Authentication Server

$esaAuthenticationServer = "127.0.0.1:8001"

 

# Name of ESA RADIUS Server foudn in ESA Web Console at Componets > RADIUS

$radiusServerName = "BTSH00049D (Authentication Server computer)"

 

# Name of the pre-configured ESA RADIUS client

$baseRadiusClientName = "Base Client"

 

# List of IP Address and Shared Secret of each VPN appliance is saved in the clients.csv file.

# The clients.csv file is in the same directory where the this PowerShell script resides

$csvImportFilePath = $PSScriptRoot + "\\clients.csv"

 

# headers preparation

 

$ErrorActionPreference = "Stop"

 

$encodedCredentials = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($credentials))

$basicAuthHeader = "Basic $encodedCredentials"

$headers = @{Authorization = $basicAuthHeader}

 

# find RADIUS server

 

$body = @{

  componentType = "radius"

}

$bodyStr = $body | ConvertTo-Json

$response = Invoke-WebRequest -Uri https://$esaAuthenticationServer/manage/v2/GetComponentSettings -Method POST -Body $bodyStr -ContentType "application/json" -Headers $headers

 

$components = $response.Content | ConvertFrom-Json

 

$radiusServerKey = $null

foreach ($component in $components)

{

  if ($component.Info.Name -ceq $radiusServerName) {

    $radiusServerKey = $component.Info.Key

  }

}

 

if ($radiusServerKey -ceq $null) {

  Throw "RADIUS server not found: " + $radiusServerName

}

 

# base RADIUS client

 

$body = @{

  componentKey = $radiusServerKey

}

$bodyStr = $body | ConvertTo-Json

$response = Invoke-WebRequest -Uri https://$esaAuthenticationServer/manage/v2/GetRadiusClients -Method POST -Body $bodyStr -ContentType "application/json" -Headers $headers

 

$clients = $response.Content | ConvertFrom-Json

 

$baseRadiusClientSettings = $null

foreach ($client in $clients)

{

  if ($client.ClientName -ceq $baseRadiusClientName) {

    $baseRadiusClientSettings = $client

  }

}

 

if ($baseRadiusClientSettings -ceq $null) {

    Throw "RADIUS client not found: " + $baseRadiusClientName

}

 

# create clients

 

foreach($line in [System.IO.File]::ReadLines($csvImportFilePath))

{

  $fields = $line.Split(';')

  if ($fields.Count -cne 2) {

    Throw "Invalid fields count: " + $line

  }

 

  $ip = $fields[0]

  $sharedSecret = $fields[1]

 

  $newClientSettings = $baseRadiusClientSettings | ConvertTo-Json | ConvertFrom-Json

  $newClientSettings.Id = [guid]::NewGuid().ToString("d")

  $newClientSettings.ClientName = "Generated - " + $ip

  $newClientSettings.ClientIp = $ip

  $newClientSettings.SharedSecret = $sharedSecret

 

  $body = @{

    componentKey = $radiusServerKey;

    client = $newClientSettings

  }

  $bodyStr = $body | ConvertTo-Json

  $response = Invoke-WebRequest -Uri https://$esaAuthenticationServer/manage/v2/CreateRadiusClient -Method POST -Body $bodyStr -ContentType "application/json" -Headers $headers

}

 

echo "success"