#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 согласно данной статьи:
Скрипт для автоматизации авторизации 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}