#550: Прозрачная авторизация Kerberos на Linux

Отредактирована: 195 дней назад

Симптомы

Необходимо настроить прозрачную авторизацию Kerberos на Linux (Ubuntu, Debian, Centos, Astra, Red OS, Alt, Rosa)

Решение

Для настройки прозрачной аутентификации на Linux вам необходимо выполнить следующее:

1) В captive-портале использовать профиль аутентификации Kerberos

2) Linux машина обязательно должна быть заведена в домен AD (для работы тикетов Kerberos)

3) Процесс аутентификации происходит непосредственно с помощью данной команды:

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

В команде лучше использовать URL именно с HTTP, а не HTTPS.

Для проверки корректности работы команды вы можете выполнить её в следующем виде:

curl --proxy-negotiate -u:user -x auth.usergate.demo:8090 http://cbr.ru --verbose

4) Если в 3 пункте вам удалось убедиться в выполнении прозрачной аутентификации командой curl,
следующим шагом вы можете настроить автоматизацию аутентификации через xprofile или system.d согласно данной статьи:

https://docs.usergate.com/avtomatizaciya-avtorizacii-i-sbrosa-sessii-avtorizacii-na-usergate-dlya-domennogo-pol6zovatelya_202.html#Linux

Скрипт для автоматизации авторизации Linux через systemd:

#!/usr/bin/env bash

#создаем каталог для службы
mkdir -p $HOME/.config/systemd/user/

#создаем файл конфигурации службы аутентификации
cat      EOF    $HOME/.config/systemd/user/auth.service
[Unit]
Description=Auth service on UserGate UTM
After=network.target network-online.target
Wants=network-online.target

[Service]
Type=oneshot
TimeoutStartSec=0
ExecStart=/usr/bin/curl --proxy-negotiate -u:user -x auth.usergate.demo:8090 http://cbr.ru

[Install]
WantedBy=default.target
EOF

#создаем файл конфигурации таймера службы аутентификации
cat      EOF    $HOME/.config/systemd/user/auth.timer
[Unit]
Description=Run auth service every 10 minutes

[Timer]
#Триггер будет ориентироваться на время последнего запуска целевого юнита
#OnUnitActiveSec=10m
#Триггер будет ориентироваться на последнее время завершения работы целевого юнита.
OnUnitInactiveSec=10m

[Install]
WantedBy=timers.target
EOF

#обновляем список демонов, включаем и запускаем таймер и службу
systemctl --user daemon-reload
systemctl --user start auth.{service,timer}
systemctl --user enable auth.{service,timer}