Comments 19
Вот версия скрипта на expect:
spawn /opt/cisco/anyconnect/bin/vpn connect <vpn host>
expect "Username:"
send "\n"
expect "Password:"
send $::env(VPN_PWD)
send "\n"
expect "Answer:"
send $::env(VPN_TOTP)
send "\n"
expect "Connected"
Запускается:
VPN_PWD=<static_password> \
VPN_TOTP=$(ykman oath accounts code -s <token_name>) \
expect ciscovpn.ex
А если TOTP это MS Authenticator?
TOTP - это стандарт RFC 6238, а MS Authenticator - одна из его реализаций, аналогичная Google Authenticator или Яндекс Ключ.
Хорошо, вот есть у меня MS Authenticator на телефоне, Работает. Как мне скопировать его на PC? И чтобы корпоративное IT не спалило.
Без рута на телефоне никак. Но так-то MS Authenticator хранит (в своей локальной SQLite базе) такой же точно стандартный TOTP секрет, который можно в любой другой генератор кодов загрузить и никто ничего не "спалит", т.к. коды будут те же самые. Но без рута Вам Андроид файл этой базы прочитать не даст.
Ну и у MS есть ещё подтверждение не через TOTP коды, а через уведомление на зарегистрированном телефоне - это уже не стандарт, не перенести.
Никак не нужно этого делать. Это полностью перечеркивает весь смысл использования токена на отдельном устройстве. Это будет немногим лучше статичного пароля, записанного в текстовом файле.
В статье ключ находится вне ПК и чтобы получить код все еще нужно физическое взаимодействие
А "показать" код камере на ноутбуке, или как в моем предыдущем ответе, это тоже физическое взаимодействие?
Да без проблем- это потребует разблокировать экран (отпечатком или faceid). Стоит ли так заморачиваться только?
Ну хоть 6-значный код не вводить ручками. Но проще сохранить QR код. Даже на гитхабе софт для расшифровки нашелся: https://github.com/scito/extract_otp_secrets
Нужно перевыпустить его - в момент создания будет доступен сам токен, как в виде QR, так и виде строки, длиной 32 символа. Его можно будет добавить на любое количество устройств.
Del
Сложновато. Openconnect + expect выглядит попроще :)
А консольный вариант клиента не проьовали? Vpncli или как-то так ЕМНИП назывался, чтоб не автокликать
Только сейчас узнал, что он есть - /opt/cisco/anyconnect/bin/vpn. Правда при включенном GUI приложении он пишет ошибку:
error: Connect not available. Another AnyConnect application is running
or this functionality was not requested by this application.
Но в целом, если полностью отказаться от GUI, то можно использовать его в связке с expect. Хорошая идея - спасибо!
Вот версия скрипта на expect:
spawn /opt/cisco/anyconnect/bin/vpn connect <vpn host>
expect "Username:"
send "\n"
expect "Password:"
send $::env(VPN_PWD)
send "\n"
expect "Answer:"
send $::env(VPN_TOTP)
send "\n"
expect "Connected"
Запускается:
VPN_PWD=<static_password> \
VPN_TOTP=$(ykman oath accounts code -s <token_name>) \
expect ciscovpn.ex
О такое же но под win10 для CiscoConnect есть?
vpnstart() {
PASSWORD=`security find-generic-password -a username -s "domain.com" -w`
echo -n "Token: "
read -s -r vpnToken
echo "\n\n$vpnToken\n$PASSWORD" | /opt/cisco/anyconnect/bin/vpn -s connect vpn.domain.com
}
vpnstop() {
/opt/cisco/anyconnect/bin/vpn disconnect vpn.domain.com
}
может кому пригодится
Автоматизируем подключение Сisco AnyConnect на Mac OS