# Прозрачная авторизация Kerberos на Linux
# Симптомы

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

# Решение

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

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

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

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

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

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

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

```txt
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](https://docs.usergate.com/avtomatizaciya-avtorizacii-i-sbrosa-sessii-avtorizacii-na-usergate-dlya-domennogo-pol6zovatelya_202.html#Linux)

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

```txt
#!/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}
```