Каждый новый подключающийся пользователь порождает новый sshd
сеанс с определенным PID. Вы можете использовать, pstree
чтобы напечатать, какие команды наследуются от какого sshd
сеанса, а затем перепроверить этот PID /var/log/auth.log
.
Пример (анонимный): я вошел на удаленный сервер с 3 одновременными сеансами с тем же удаленным пользователем. Теперь я хочу выяснить, с какого IP пришел клиент, который выполнил команду watch date
.
$ pstree -p | grep watch
| |-sshd(15243)---sshd(15342)---bash(15343)---watch(15450)
$ sudo grep 15243 /var/log/auth.log
Mar 7 15:37:29 XXXXXXXXXX sshd[15243]: Accepted publickey for XXXXXXXXXX from 12.34.56.78 port 48218 ssh2
Mar 7 15:37:29 XXXXXXXXXX sshd[15243]: pam_unix(sshd:session): session opened for user XXXXXXXXXX by (uid=0)
Mar 7 15:37:44 XXXXXXXXXX sudo: XXXXXXXXXX : TTY=pts/7 ; PWD=/home/XXXXXXXXXX ; USER=root ; COMMAND=/bin/grep 15243 /var/log/auth.log
pstree -p
показывает, что watch
команда наследуется с sshd
помощью PID 15243. grep
ing для этого PID в /var/auth/auth.log
показывает, что именно IP 12.34.56.78 начал этот сеанс. Поэтому это также пользователь, который начал watch
.
Что касается поиска history
специально для этого пользователя, это невозможно сделать из того, что я вижу, когда все удаленные пользователи используют одного и того же локального пользователя SSH. Кроме того, он может быть легко подделан / деактивирован и т. Д., Поэтому он не очень надежен. Если он сохранен в файле истории, вы можете просто найти cp
команду и заглянуть в файл в обратном направлении, но если ее там нет, то делать особо нечего.
Даниэль Андерссон
источник
grep: /var/log/auth.log: No such file or directory
:-(/var/log/secure
./var/log/auth.log.1
и т. Д. Существуют, попробуйте их, чтобы увидеть, содержат ли они информацию. После этого перезапуститеrsyslog
(sudo service rsyslog restart
) и посмотрите, начнет ли он заполнятьсяauth.log
, что он уже должен делать. По умолчанию SSHD регистрируется/var/log/auth.log
в Ubuntu , поэтому, если вы явно не изменили цели ведения журнала с помощью/etc/ssh/ssd_config
или/etc/syslog.conf
(вы можете проверить, к какому файлуauth
здесь записан уровень), он должен быть там. Если нет: что-то не так :-).Вы можете добавить эти две строки в / etc / profile или / etc / bashrc для регистрации всех команд, выполняемых bash:
Это будет использовать системный журнал для записи каждой выполненной команды вместе с пользователем, который сделал, и его IP-адрес в формате, подобном этому:
Кроме того, вы можете добавить строку ниже в вашу конфигурацию системного журнала (/etc/syslog.conf), чтобы перенаправить сообщения local3 в определенный файл.
источник
syslog-ng
как улучшение и файл конфигурации/etc/syslog-ng/syslog-ng.conf
.Вы могли бы использовать Snoopy для этого.
Вам необходимо настроить его на запись настраиваемой переменной среды (SSH_CLIENT), указав IP =% {env: SSH_CLIENT} в определении формата сообщения журнала (./configure flag или настраивается в snoopy.ini начиная с версии 2.x).
Раскрытие: сопровождающий Snoopy здесь.
источник
Предполагая , что вы используете Баш,
history
только покажет вам СВОЮ историю командной строки. По умолчанию это читает~/.bash_history
для истории. Обратите внимание, что это можно изменить (хотя и маловероятно), выполнив что-то вродеHISTFILE=/home/userFoo/.my_alt_history
.Предполагая, что вы являетесь пользователем root, вы можете просмотреть все каталоги пользователя и прочитать их историю, чтобы увидеть, кто выполняет эту команду.
источник
ps -aux | grep "cp file1.sh file2.sh"