1

Можно ли перечислить сессию ssh с информацией tty/pts и датой входа в систему и выхода из системы на клиенте? эквивалент последней команды на сервере.

Мои пользователи используют прокси-сервер ssh для подключения к серверу, но с прокси-сервера они используют общую учетную запись для подключения к серверу. Я хотел бы сравнить tty/pts id между клиентом и сервером. На сервере я использую этот скрипт для получения этой информации за текущий день:

#!/bin/bash
today="$(date '+%a %b %e')"
last | awk -v pattern="$today" '$0 ~ pattern && /pts/ {print $0 "#line#"}'
exit 0

Спасибо

1 ответ1

0

В нескольких словах

Используйте логи ssh на обеих машинах: он дает PID порожденной оболочки. Это должно позволить вам связать PID оболочки с выполнением программы и иметь определенное совпадение с tty. Для более глубокого аудита вы можете использовать инструмент аудита.

Другими словами

last

С помощью простого last вы можете получить список соединений, связанных с используемым tty.
У вас может быть два списка: один с вашего прокси-сервера (я бы хотел назвать его Gateway, GW), а другой - с вашего сервера. last команда по умолчанию дает вам имя пользователя, pts/tty, IP/hostname. войти в дата-время, срубы из дата-время. Вы можете изменить в формате, и т.д. И т.д.

Тогда вам придется поработать над оверлеями того периода и угадать, кто был.

Проблема, которую я вижу, заключается в том, что таким образом вы должны создать инструмент (скрипт), который даст вам все возможные совпадения и очистить их, в то время как вы найдете хорошие совпадения. Тем не менее, у вас могут быть странные ситуации.

Давайте сделаем тематическое исследование. Первый пользователь, скажем Nicolas, может войти в GW. Затем он идет, чтобы взять кофе или отвечает на звонок. Тем временем второй пользователь, скажем, Hastur, входит в GW и быстрее, чем первый пользователь, входит на сервер. Как раз в этот момент ваш двойной журнал запутан. Теперь Хастур чувствует потребность в кофе, и Николас заходит на сервер. Кто будет первым, кто закончит кофе и первым подключится к программе?

/var/log/auth (или другой файл журнала ssh)[ 1 ]..

Существуют файлы журналов, используемые для контроля входа и выхода из системы в каждой системе. Ищите правильный путь и имя, те, которые зависят от системы. С

sudo grep TheUsername /var/log/auth.log

вы получите строки, похожие на

May  1 16:17:43 owl sshd[9024]: Accepted publickey for root from 192.168.0.101 port 37384 ssh2
May  1 16:17:43 owl sshd[9024]: pam_unix(sshd:session): session opened for user root by (uid=0)

где у вас есть правильное время входа в систему, и даже PID ([9024]) и IP. На этот раз вы можете сопоставить данные этого файла с last командой, которая знает tty, или вы могли как-то зарегистрировать внутри программы PID оболочки, которая вызвала саму программу (это можно сделать с помощью системного вызова). в оболочку).

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

audit tools [ 2 ], [ 3 ]

Если у вас есть авторизация, и она является законной, вы можете использовать инструмент аудита и вести полный журнал оболочки на хост-машине.

Рекомендации

  • [ 1 ] Регистрация попыток доступа по SSH
  • [ 2 ] shell / ssh / tty logger
  • [ 3 ] Журнал сессии BASH на удаленном хосте.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .