Автоматизация авторизации и сброса сессии авторизации на UserGate для доменного пользователя

ID статьи: 202
Последнее обновление: 20 сен, 2023
KnowledgeBase:
Product: UserGate NGFW
Version: 6.1.8, 6.1.9

Windows

При использовании прозрачной авторизации пользователей по протоколу Kerberos существует возможность автоматизировать авторизацию пользователей на captive-портале UserGate в момент их авторизации на ПК и сброс авторизации на UserGate в момент завершения их сессии на ПК. Для этого используется штатные механизм logon и logoff скриптов Windows(см. п. Автоматическая регистрация пользователя на UserGate UTM посредством REST API) и механизм Group Policy домена Active Directory (см. документацию Microsoft). В качестве скрипта автоматической авторизации предлагается следующий вариант скрипта PowerShell:

$Response = Invoke-WebRequest -Uri http://detectportal.firefox.com/ -Proxy 'http://auth.trusted.com:8090' -ProxyUseDefaultCredentials
Write-Host $Response.StatusDescription

где auth.trusted.com - домен Auth captive-портала, настроенный на UserGate в разделе UserGate ➜Настройки ➜ Модули. http://detectportal.firefox.com/ - любой доверенный, гарантированно доступный Интернет-ресурс, предпочтительно HTTP, а не HTTPS. В качестве скрипта автоматического сброса сессии авторизованного на UserGate пользователя предлагается следующий вариант скрипта PowerShell:

$Session = New-Object Microsoft.PowerShell.Commands.WebRequestSession
$Cookie = New-Object System.Net.Cookie
$Cookie.Name = 'csrf_token'
$Cookie.Value = 'foo'
$Cookie.Domain = 'logout.trusted.com'
$Session.Cookies.Add($Cookie);
$Body = @{
    csrfmiddlewaretoken = 'foo'
}
$Response = Invoke-WebRequest -Uri http://logout.trusted.com:8002/cpa/logout -Method POST -Body $Body -WebSession $Session
Write-Host $Response.StatusDescription

где logout.trusted.com - домен Logout captive-портала, указанный на UserGate в разделе UserGate ➜Настройки ➜ Модули.

ПримечаниеВ случае, когда доменными политиками определено использование нескольких logon/logoff скриптов, рекомендуется указанный logoff-скрипт использовать последним, а logon-скрипт - ближе к началу списка.

Linux

Для использования прозрачной авторизации на ОС семейства Linux, подойдет следующая команда

curl --proxy-negotiate -u:user -x auth.usergate.demo:8090 http://cbr.ru &> /dev/null

Где

  • -u:user - Буквально. Не нужно подставлять имя какого-то конкретного пользователя.
  • auth.usergate.demo - FQDN вашего проки сервера UserGate
  • http://cbr.ru - Любой url. Его цель лишь в заполнении соответсвующего поля при формировании web запроса к прокси-серверу. 

Для осуществления сброса авторизации, можно использовать команду

curl --cookie "csrf_token=foo" -v -X POST -d "csrfmiddlewaretoken=foo" -H "Content-Type: application/x-www-form-urlencoded" http://logout.usergate.demo:8002/cpa/logout

Где logout.usergate.demo - FQDN вашего проки сервера UserGate 

ПримечаниеКоманда должна выполняться с того же адреса, на котором работает уже авторизоавнный пользователь и сессию которого надо прекратить.

ПримечаниеПользовательский компьютер с ОС Linux доолжен быть настроен на взаимодействие и авторизацию пользователя с помощью домена.

Данные команды можно запустить штатными средствами ОС:

С помощью xprofile

В домашней директории пользователя создайте файл .xprofile (точка обязательна) и сделайте файл исполняемым (chmod +x ~/.xprofile).

Далее, пропишите в файле следующие строки:

#!/bin/bash
/path-to-curl/curl --proxy-negotiate -u:user -x auth.usergate.demo:8090 http://cbr.ru &> /dev/null
trap '. /path-to-curl/curl --cookie "csrf_token=foo" -v -X POST -d "csrfmiddlewaretoken=foo" -H "Content-Type: application/x-www-form-urlencoded" http://logout.usergate.demo:8002/cpa/logout; exit' 0

С помощью system.d

В этом случае необходимо создать файл сервиса и зарегистрировать его в systemd.

  1. Для этого создайте файл с произвольным именем, например, auth.service в каталоге ~/.config/systemd/user.

Добавьте в файл следующее:

[Unit]

Description=Auth service on UserGate UTM
After=network.target network-online.target
Wants=network-online.target

[Service]

Type=oneshot
RemainAfterExit=true
TimeoutStartSec=0
ExecStart=/path-to-curl/curl --proxy-negotiate -u:user -x auth.usergate.demo:8090 http://cbr.ru > /dev/null
ExecStop=/path-to-curl/curl --cookie "csrf_token=foo" -v -X POST -d "csrfmiddlewaretoken=foo" -H "Content-Type: application/x-www-form-urlencoded" http://logout.usergate.demo:8002/cpa/logout

[Install]

WantedBy=default.target
  1. Выполните команды (вместо auth.service укажите название файла, созданного на шаге 1):
systemctl --user daemon-reload
systemctl --user enable auth.service

Эта статья была:   Полезна | Не полезна
Сообщить об ошибке
ID статьи: 202
Последнее обновление: 20 сен, 2023
Ревизия: 14
Просмотры: 9174
Комментарии: 0
Теги