ssh-соединение не записывает запись в wtmp и не оставляет историю команд.

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

У меня есть пользователь root, который использует Java-приложение для входа на сервера, которые я администрирую. Когда этот SSH-клиент входит в систему, он не записывает запись в wtmp (или utmp, насколько я могу судить). Он, похоже, не оставляет истории команд (используется bash). Однако он оставляет записи в /var/log/secure, и соединения отображаются в команде ‘netstat‘, однако ничего не отображается в ‘w‘, ‘last‘ или ‘who‘. Пользователь доверенный, но это становится проблемой при диагностике проблем и отслеживании истории команд. Это также является проблемой безопасности (если этот пользователь может это сделать, то и другие тоже).

Существуют ли способы (конфигурация sshd?), чтобы заставить все входящие SSH-соединения записывать запись в wtmp и также историю команд как обычно?

Не уверен насчет конфигурации сервера, но с клиентской стороны это можно решить, используя ssh -t.

Обратите внимание, что первая команда ssh не показывает недавнюю запись, но ssh -t показывает:

strongbad@LAPPIER :~$ ssh [email protected] 'echo "               now:   $(date)"; last --dns --hostlast --limit 10'
               now:   Пн 28 Окт 16:32:17 GMT 2024
pi       pts/2        Пн Окт 28 16:27 - 16:27  (00:00)     BLOCK.homestarrunner.com
pi       pts/1        Пн Окт 28 15:53   все еще в системе    LAPPIER.homestarrunner.com
pi       pts/0        Пн Окт 28 15:19   все еще в системе    BLOCK.homestarrunner.com
pi       pts/0        Пн Окт 28 12:50 - 15:07  (02:16)     LAPPIER.homestarrunner.com
pi       pts/1        Пн Окт 28 02:50 - 07:08  (04:17)     COMP00E9.homestarrunner.com
pi       pts/0        Пн Окт 28 01:30 - 03:44  (02:14)     COMP00E9.homestarrunner.com
pi       pts/0        Сб Окт 26 17:32 - 20:45  (03:13)     LAPPY486.homestarrunner.com
pi       pts/1        Сб Окт 26 06:41 - 08:55  (02:14)     COMPY386.homestarrunner.com
pi       pts/0        Сб Окт 26 06:21 - 09:33  (03:12)     COMPY386.homestarrunner.com
pi       pts/0        Пт Окт 25 19:17 - 22:32  (03:15)     TANDY400.homestarrunner.com

wtmp начинается Чт Янв  1 01:00:03 1970


strongbad@LAPPIER:~$ ssh -t [email protected] 'echo "               now:   $(date)"; last --dns --hostlast --limit 10'
               now:   Пн 28 Окт 16:32:28 GMT 2024
pi       pts/2        Пн Окт 28 16:32   все еще в системе    LAPPIER.homestarrunner.com
pi       pts/2        Пн Окт 28 16:27 - 16:27  (00:00)     BLOCK.homestarrunner.com
pi       pts/1        Пн Окт 28 15:53   все еще в системе    LAPPIER.homestarrunner.com
pi       pts/0        Пн Окт 28 15:19   все еще в системе    BLOCK.homestarrunner.com
pi       pts/0        Пн Окт 28 12:50 - 15:07  (02:16)     LAPPIER.homestarrunner.com
pi       pts/1        Пн Окт 28 02:50 - 07:08  (04:17)     COMP00E9.homestarrunner.com
pi       pts/0        Пн Окт 28 01:30 - 03:44  (02:14)     COMP00E9.homestarrunner.com
pi       pts/0        Сб Окт 26 17:32 - 20:45  (03:13)     LAPPY486.homestarrunner.com
pi       pts/1        Сб Окт 26 06:41 - 08:55  (02:14)     COMPY386.homestarrunner.com
pi       pts/0        Сб Окт 26 06:21 - 09:33  (03:12)     COMPY386.homestarrunner.com

wtmp начинается Чт Янв  1 01:00:03 1970
Подключение к 86.75.30.9 закрыто.

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

Когда вы сталкиваетесь с проблемой, когда SSH-соединения не записываются в системные файлы журнала wtmp или utmp и не оставляют историю команд в bash, это может создавать сложности как для администрирования, так и для обеспечения безопасности. Давайте разберем эту проблему и найдем пути ее решения.

Природа проблемы

Как вы уже отметили, при использовании вашего Java-приложения для входа через SSH не создается запись в wtmp или utmp, хотя в других логах (например, в /var/log/secure) все же появляются записи о соединениях. Это может быть связано с несколькими аспектами:

  1. Отсутствие интерактивной сессии: SSH-сессии создают записи в wtmp только тогда, когда они считаются интерактивными. Если ваше приложение не инициирует сессию в интерактивном режиме, то записи не будут созданы.

  2. Использование команды без вида терминала: При передаче команд через SSH без параметра -t SSH не создает псевдо-терминал, что может привести к игнорированию записей о входе.

  3. Конфигурация SSH: В конфигурациях sshd иногда могут быть заданы параметры, влияющие на ведение лога.

Решения

1. Использование ключа -t в SSH

Ваше упоминание о варианте использования ssh -t указывает на правильное направление. Этот ключ позволяет SSH создать псевдо-терминал, что обеспечит запись о входе в систему. Однако это решение может быть временным, так как постоянное добавление -t в каждую команду неудобно.

2. Изменение конфигурации SSH

Если использование ключа -t не является приемлемым решением, вы можете рассмотреть возможность изменения конфигурации SSH. Вот несколько настроек, которые могут повлиять на запись в wtmp и utmp:

  • Откройте файл конфигурации SSHD, например, /etc/ssh/sshd_config.

  • Убедитесь, что параметр UsePAM установлен в yes. Это может помочь с обработкой регистрации пользователей.

    UsePAM yes
  • Перезапустите службу SSH после внесения изменений:

    sudo systemctl restart sshd

3. Автоматизация использования -t

Вы можете учитывать возможность создания оболочки, где для всех подключений всегда будет список команд на то, чтобы автоматически добавлять параметр -t. Например, создайте alias в .bashrc:

alias ssh='ssh -t'

4. Мониторинг безопасности

Так как у вас есть проблемы с безопасностью, учтите, что если ваш пользователь имеет возможность выходить из системы без записи в системные журналы, это может создать уязвимость. Кроме введения способов регистрации с помощью -t, рассмотрите возможность внедрения системы мониторинга команд или аудит действий пользователей. Вам также могут помочь такие инструменты, как auditd, которые могут предоставить дополнительные возможности для отслеживания.

Заключение

Ваша проблема заключается в том, что SSH-сессии, инициированные без псевдо-терминала, не ведут запись в utmp и wtmp. Использование ключа -t является простым решением, но стоит учитывать возможность автоматизации и конфигурации SSH для повышения надежности. Будьте бдительны относительно безопасности и используйте дополнительные инструменты мониторинга, чтобы защитить свои серверы от несанкционированного доступа.

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

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