Почему подключение к VPN создает новый вход от моего локального пользователя?

Вопрос или проблема

Когда я работаю из дома, я подключаюсь с моего компьютера под управлением Linux к VPN с помощью этой команды:

$ sudo openconnect --protocol=anyconnect -u usernameatwork --authgroup=MFA foo.bar.baz.work

что требует от меня

  1. ввести пароль моего локального пользователя, просто потому что я использую sudo,
  2. ввести пароль моего пользователя в VPN на работе,
  3. подтвердить с другого устройства из-за MFA.

Я только что заметил, что

  • до шага 1, who на моем локальном компьютере показывает, что я единственный, кто вошел в мой компьютер:
myself   tty1         2025-01-14 17:47
  • сразу после шага 1, who на моем локальном компьютере показывает, что я только что вошел в систему еще раз:
myself   tty1         2025-01-14 17:47
myself   pts/2        2025-02-03 07:17

Что означает вторая строка вывода?

Я имею в виду, я подключился к VPN. Почему это означает, что я повторно вошел в свою собственную систему?

Когда вы используете openconnect для VPN, вы можете заметить дополнительную запись о входе в список who, как эта:

myself   tty1         2025-01-14 17:47  
myself   pts/2        2025-02-03 07:17  

Это происходит, потому что openconnect запускает новую активную сессию.

Когда вы запускаете openconnect, он может инициировать обмен с PAM (Плагин-модули аутентификации), который обрабатывает простые процессы входа.

  • Это взаимодействие может создать новый псевдотерминал (pts/X), поэтому who показывает дополнительную запись. (Использование sudo также запускает новую оболочку.)
  • Поскольку вы используете sudo, это может запустить новую оболочку или сессию как часть процесса входа.
  • Некоторые VPN-приложения, такие как openconnect, могут запускать шаги сессии PAM, что делает это похожим на новый вход в систему.
  • Некоторые настройки VPN создают виртуальный терминал.

Вхожу ли я дважды?

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

Если вы хотите этого избежать, попробуйте запустить openconnect без sudo (если возможно), или используйте:

sudo openconnect --background --protocol=anyconnect -u usernameatwork --authgroup=MFA foo.bar.baz.work

Флаг --background может помочь предотвратить создание интерактивной сессии.

Ответ или решение

При подключении к VPN с использованием команды openconnect в Linux, вы можете заметить, что команда who отображает дополнительную запись о входе. Это явление обычно вызывает недоумение, особенно если никаких действий, кроме подключения к VPN, не производилось. Чтобы понять это поведение, необходимо рассмотреть аспекты работы сессий, PAM (Pluggable Authentication Modules), и псевдотерминалов.

Теория

Когда вы используете команду sudo openconnect, система начинает новый процесс, который требует повышения привилегий (первый факт). На этом этапе будет запущен процесс openconnect, который инициирует взаимодействие с PAM — это модуль, управляющий процессами аутентификации в Linux. PAM может инициировать новую сессию или открыть псевдотерминал (pts), что видно в выводе who.

Когда запускается псевдотерминал, система его регистрирует как новую сессию. Характерно то, что sudo подразумевает использование другого уровня привилегий, что потенциально может инициировать новые сессии или процессы.

Пример

Рассмотрим последовательность действий:

  1. Вы выполняете sudo openconnect --protocol=anyconnect -u usernameatwork --authgroup=MFA foo.bar.baz.work.
  2. Вводите пароль локального пользователя и проходите авторизацию на удаленном VPN сервере.
  3. В ходе аутентификации PAM обрабатывает создание новой сессии и может быть инициирован новый pts.

К примеру, ваш изначальный вход выглядел следующим образом:

myself   tty1         2025-01-14 17:47

После того как вы выполните команду, who покажет:

myself   tty1         2025-01-14 17:47
myself   pts/2        2025-02-03 07:17

Применение

Важно понимать, что появление нового входа в who не означает, что вы действительно вошли в систему дважды одновременно. Это просто побочный эффект запуска процесса openconnect, взаимодействующего с PAM, который и открывает новый псевдотерминал. Это совершенно безвредное и ожидаемое поведение.

Для минимизации подобного поведения, можно рассмотреть следующие действия:

  • Запустить openconnect без использования sudo, если это возможно. Это может помочь избежать создаваемых новых сессий командой sudo.
  • Использовать флаг --background, чтобы сделать процесс менее интерактивным, что поможет не создать новый терминал:
    sudo openconnect --background --protocol=anyconnect -u usernameatwork --authgroup=MFA foo.bar.baz.work

Эти методы потенциально смогут помочь избежать создания нового линейного подключения и сведут к минимуму конфуд в данных о сеансе.

Для ИТ-специалистов такое понимание помогает не только правильно осознавать процесс взаимодействия с VPN, но и управлять системными ресурсами более оптимально, учитывая внутренние процессы, запускаемые при работе с повышенными привилегиями. Тонкое понимание механизмов Linux позволяет более уверенно подходить к настройке и эксплуатации VPN, обеспечивая должный уровень сетевой безопасности и эффективности процессов. Если у вас есть специфические требования к поведению сессии, вы всегда можете исследовать скрипты и настройки PAM или системы в целом, чтобы соответствовать своим уникальным корпоративным политикам или личным предпочтениям.

Оцените материал
Добавить комментарий

Капча загружается...