Живий вигляд команд оболонки Linux, виконаних іншим користувачем?


27

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

Редагувати: в ідеалі щось, що можна легко включати та вимикати.


ttyrpldздається гарним. рекомендується в цьому питанні. serverfault.com/questions/40011/…
hayalci

Відповіді:


16

як root, ви можете замінити їх оболонку простим скриптом обгортки, який записував їх команди перед тим, як передати їх до справжньої оболонки. Це працюватиме лише до того, як вони ввійдуть у систему.


20
Ми зробили це для моніторингу зламаного облікового запису у попереднього роботодавця. Створено "/ bin / bash" (помітити пробіл), який був обгорткою навколо сценарію-команди. Працював як шарм :)
Командир Кін

Дуже розумний! +1
EMP

9

Використовуйте нюхальний, якщо ви хочете перейти на сеанс користувача або screen -xякщо у вас є співпраця.

Будьте в курсі, що шпигунство на ваших користувачів може бути підпорядковане чи навіть незаконне незаконне, залежно від місцевого законодавства.


7

Зміна шкаралупи дуже тривіально обходити, краще обклеїти оболонку, але вам доведеться заклеїти всі оболонки. Наш улюблений зломщик використовує це, як бонус, він не турбує себе відключенням bash_history.

ssh host /bin/sh -i  

Snoopy - це обгортка навколо функцій exec, і записує будь-який зовнішній бінарний файл, який виконується (не вбудований оболонкою)

Пропозиція @David Шмітта попахує використовує кращий метод, він вводить псевдотермінал.

ttysnoop використовує той самий метод, але він не дотриманий. (У мене, ймовірно, виникли проблеми з підключенням до журналу ssh, не можу пам'ятати)

Ви можете спробувати виправити ssh, щоб записати сеанс, але цей патч старий .

псевдоподия і rootsh можуть бути використані для реєстрації законного sudos. А shwatcr - інша річ, щоб контролювати входи в систему.


Що саме ssh host /bin/sh -iпотрібно робити?
Майк Пеннінгтон

+1 для snoopy, не ідеально, але робив те, що нам потрібно для цього.
скин

4

Якщо ви співпрацюєте, ви можете використовувати екран GNU між двома користувачами - один встановити сеанс екрана, а потім приєднати іншого screen -x.

Якщо ви хочете, щоб корінь "шпигував" за іншими користувачами без їх відома, найкращим та найефективнішим рішенням може стати програмне забезпечення / апаратне забезпечення кейлоггерів.


4

Sysdig - це потужний інструмент вивчення системного рівня - це те, що ви хочете;)

приклад:

sysdig -i spy_users

Категорія: Безпека

spy_users Відображення інтерактивної активності користувача

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


2

Ви можете спробувати патч bash-BOFH. Шукайте виправлення.


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", запустіть пару команд та "історію" після цього ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.