Pull to refresh

Comments 19

PinnedPinned comments

Вот версия скрипта на 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 - это стандарт RFC 6238, а MS Authenticator - одна из его реализаций, аналогичная Google Authenticator или Яндекс Ключ.

Хорошо, вот есть у меня MS Authenticator на телефоне, Работает. Как мне скопировать его на PC? И чтобы корпоративное IT не спалило.

Без рута на телефоне никак. Но так-то MS Authenticator хранит (в своей локальной SQLite базе) такой же точно стандартный TOTP секрет, который можно в любой другой генератор кодов загрузить и никто ничего не "спалит", т.к. коды будут те же самые. Но без рута Вам Андроид файл этой базы прочитать не даст.

Ну и у MS есть ещё подтверждение не через TOTP коды, а через уведомление на зарегистрированном телефоне - это уже не стандарт, не перенести.

CISCO требует только 6 значный код из телефона. Интересно, а можно, подключив телефон (Android) по USB, запустить Authenticator удаленно, удаленно же выбрать нужный аккаунт и распознать код с экрана?

Никак не нужно этого делать. Это полностью перечеркивает весь смысл использования токена на отдельном устройстве. Это будет немногим лучше статичного пароля, записанного в текстовом файле.

В статье ключ находится вне ПК и чтобы получить код все еще нужно физическое взаимодействие

А "показать" код камере на ноутбуке, или как в моем предыдущем ответе, это тоже физическое взаимодействие?

Да без проблем- это потребует разблокировать экран (отпечатком или faceid). Стоит ли так заморачиваться только?

Нужно перевыпустить его - в момент создания будет доступен сам токен, как в виде QR, так и виде строки, длиной 32 символа. Его можно будет добавить на любое количество устройств.

Если предыдущий телефон доступен с приложением, то да. Как бы при следующем апгрейде телефона не забыть сохранить QR.

Сложновато. Openconnect + expect выглядит попроще :)

Не всегда можно обойтись опенконнектом - может быть накручено posture и hostscan. Второй в принципе кое-как обходится, про первый - не попадалось

А консольный вариант клиента не проьовали? 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
}

может кому пригодится

Sign up to leave a comment.

Articles