Может ли пользователь root в Linux иметь представление в реальном времени (или почти в реальном времени) о командах оболочки, выполняемых другим пользователем, вошедшим в систему через терминал или SSH? Очевидно, они хранятся в .bash_history, но они сохраняются только тогда, когда пользователь выходит из системы, и их тоже можно отключить.
Изменить: в идеале то, что можно легко включить и выключить.
от имени пользователя root вы можете заменить их оболочку простым сценарием-оболочкой, который записывал их команды перед передачей их реальной оболочке. Это будет работать только до их входа в систему.
Использовать нюхательный если вы хотите нарушить сеанс пользователя или screen -x
если у вас есть сотрудничество.
Однако имейте в виду, что слежка за вашими пользователями может регулироваться законодательством или даже быть незаконной в зависимости от вашего местного законодательства.
Обойти изменение оболочки очень легко, лучше исправить саму оболочку, но вы должны исправить все оболочки. Наш любимый взломщик использует это, в качестве бонуса он не утруждает себя отключением bash_history.
ssh host /bin/sh -i
Снупи является оболочкой для функций exec и регистрирует любые внешний двоичный файл который выполняется (не встроенные функции оболочки)
Предложение @David Schmitt нюхательный использует более лучший метод, он касается псевдотерминала.
ttysnoop использует тот же метод, но его не обслуживают. (У меня, вероятно, были проблемы с тем, чтобы он регистрировал ssh-соединения, не могу вспомнить)
Вы можете попробовать исправить ssh для регистрации сеанса, но этот патч старый.
псевдопод и корень может использоваться для регистрации законных судо. И Shwatcr Другое дело следить за логинами.
Если вы готовы сотрудничать, вы можете использовать Экран GNU между двумя пользователями - пусть один установит сеанс экрана, затем другой подключится, используя screen -x
.
Если вы хотите, чтобы root «шпионил» за другими пользователями без их ведома, лучшим и наиболее эффективным решением может быть программный / аппаратный кейлоггер.
Sysdig это мощный инструмент исследования системного уровня - это то, что вам нужно;)
sysdig -i spy_users
spy_users Отображение интерактивной активности пользователя
перечисляет все команды, которые пользователи запускают в интерактивном режиме (например, из bash), и каждый каталог, который пользователи посещают
Вы можете попробовать патч bash-BOFH. Найдите патч.
Я написал метод для регистрации всех команд / встроенных функций bash в текстовом файле или на сервере системного журнала без использования патча или специального исполняемого инструмента.
Его очень легко развернуть, так как это простой сценарий оболочки, который необходимо вызвать один раз при инициализации bash.
Смотрите метод здесь: http://blog.pointsoftware.ch/index.php/howto-bash-audit-command-logger
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>
Кажется, работает очень хорошо, если вы не против сортировки кучей разрывов строк.
Снупи предназначен для облегченного ведения журнала команд.
Если вы хотите видеть в реальном времени команды, выполняемые в вашей системе, это может быть оно. Предупреждение: snoopy не является подходящим решением для аудита, и его легко обойти.
Однако, если вы хотите видеть каждый символ, введенный в терминал, вам придется использовать другой инструмент.
Раскрытие информации: я текущий сопровождающий.
попробуйте этот экспорт HISTTIMEFORMAT = "% T", затем запустите пару команд и "историю" ...