Просмотр в реальном времени команд оболочки Linux, выполненных другим пользователем?


27

Возможно ли, чтобы пользователь root в Linux имел представление в реальном времени (или близкое к реальному) представления команд оболочки, выполняемых другим пользователем, вошедшим в систему через терминал или SSH? Очевидно, они хранятся в .bash_history, но они сохраняются только тогда, когда пользователь выходит из системы, и также могут быть отключены.

Редактировать: в идеале то, что можно легко включать и выключать.


ttyrpldвыглядит неплохо. рекомендуется в этом вопросе. serverfault.com/questions/40011/…
hayalci

Ответы:


16

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


20
Мы сделали это, чтобы отслеживать взломанный аккаунт у предыдущего работодателя. Создал "/ bin / bash" (обратите внимание на пробел), который был оберткой для команды script. Работал как шарм :)
Командир Кин

Очень умно! +1
EMP

9

Используйте sniffy, если вы хотите войти в сеанс пользователя или screen -xесли у вас есть сотрудничество.

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


7

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

ssh host /bin/sh -i  

Snoopy является оберткой вокруг exec-функций и регистрирует любой исполняемый внешний бинарный файл (не встроенные в оболочку)

Предложение @David Шмитта попахивающий использует лучший метод, он вводит псевдотерминала.

ttysnoop использует тот же метод, но он не поддерживается. (У меня, вероятно, были проблемы с регистрацией соединений SSH, не помню)

Вы можете попробовать установить патч ssh для входа в сеанс, но этот патч устарел .

псевдопод и rooth могут использоваться для регистрации законных sudos. И shwatcr - это еще одна вещь для мониторинга входов в систему.


Что именно ssh host /bin/sh -iдолжен делать?
Майк Пеннингтон

+1 для snoopy, не идеально, но сделал то, что нам нужно было сделать.
скинп

4

Если вы сотрудничаете, вы можете использовать экран GNU между двумя пользователями - один из них установит сеанс экрана, а затем другой, используя соединение screen -x.

Если вы хотите, чтобы root «шпионил» за другими пользователями без их ведома, лучшим и наиболее эффективным решением может быть программное / аппаратное обеспечение кейлоггера.


4

Sysdig - мощный инструмент исследования системного уровня - это то, что вы хотите;)

пример:

sysdig -i spy_users

Категория: Безопасность

spy_users Показать интерактивную активность пользователя

перечисляет каждую команду, которую пользователи запускают в интерактивном режиме (например, из bash), и каждый каталог, который посещают пользователи



1

Я написал метод для записи всех команд / встроенных команд bash в текстовый файл или сервер 'syslog' без использования патча или специального исполняемого инструмента.

Его очень легко развернуть, так как это простой сценарий оболочки, который нужно вызывать один раз при инициализации 'bash'.

Смотрите метод здесь: http://blog.pointsoftware.ch/index.php/howto-bash-audit-command-logger


Добро пожаловать в сбой сервера! Мы действительно предпочитаем, чтобы ответы содержали контент, а не указатели на контент. Это гарантирует, что ответ останется доступным, даже если ссылка не работает. Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
user9517 поддерживает GoFundMonica

Добро пожаловать в сбой сервера! Пожалуйста , ознакомьтесь с Правилами форума , в частности , я хотел бы продвигать продукты или веб - сайтов я аффилированные с здесь? ,
user9517 поддерживает GoFundMonica

1
function spy() { 
   ptsnum=`ps awfux | grep pt[s]\/"$1" | awk '/bas[h]/{print $2}'` ; 
   /usr/bin/strace -s 1000 -t -f -p $ptsnum 2>&1 3>&1 \
        | grep -Poi 'write\(...\"[[:print:]]{1,2}\"[.][.][.][,]..\)' ; 
}

[436] klikevil@epiphany ~ $ w<br>
 09:36:43 up 12:06,  6 users,  load average: 0.46, 0.29, 0.20<br>
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT<br>
klikevil pts/0    75.125.126.8     23:05    2:19m 10:33   0.18s cmd                                      <br>
klikevil pts/1    75.125.126.8     00:18    6:50m  0.06s  0.04s sshd: klikevil [priv]<br>
klikevil tty7     :0               09:02   17:07m  2:02   0.32s x-session-manager<br>
klikevil pts/2    :0.0             09:03    3:30   0.08s  0.08s bash<br>
klikevil pts/3    :0.0             09:03    0.00s  0.76s  0.00s w<br>
klikevil pts/4    :0.0             09:06    3:13   0.46s  0.00s /bin/sh /usr/bin/thunder<br>
[437] klikevil@epiphany ~ $ spy 2<br>
write(2, "e"..., 1)<br>
write(2, "c"..., 1)<br>
write(2, "h"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "s"..., 1)<br>
write(2, "u"..., 1)<br>
write(2, "p"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "d"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, "g"..., 1)<br>
write(2, "\n"..., 1)<br>
^C<br>

Кажется, работает довольно хорошо, если вы не возражаете разобраться в куче разрывов строк.


1

Snoopy предназначен для облегченной регистрации команд.

Если вы хотите в реальном времени просматривать команды, выполняемые в вашей системе, это может быть именно так. Предупреждение: snoopy не является правильным решением аудита и может легко обойтись.

Однако, если вы хотите видеть каждого персонажа, набранного в терминале, вам придется использовать другой инструмент.

Раскрытие информации: я текущий сопровождающий.


-3

попробуйте этот экспорт HISTTIMEFORMAT = "% T", запустите пару команд и "history" впоследствии ...

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.