Как вы можете войти в каждую введенную команду

24

Как вы можете регистрировать каждую команду, которую кто-то ввел в оболочку?

Я спрашиваю как на основе защиты себя, если вы вошли на чужой сервер и что-то сломалось, или если кто-то еще вошел на ваш сервер (умышленно или злонамеренно).

Даже новичок может история обхода с unset historyили создать новую оболочку , чтобы скрыть свои следы.

Мне любопытно, как старшие администраторы Linux отслеживают, какие команды были введены / внесены изменения в систему.

spuder
источник

Ответы:

29

Проверьте аудит . Если вы добавите

-a exit,always -F arch=b64 -S execve
-a exit,always -F arch=b32 -S execve

для /etc/audit/audit.rulesкаждой выполненной команды будут зарегистрированы. Смотрите: http://whmcr.com/2011/10/14/auditd-logging-all-commands/

Затем отправьте его на сервер системного журнала.

Камень
источник
Конечно, execveэто не единственный системный вызов, который вам нужен для входа. Почему не execvpтак хорошо? Или execl? и т.д.
2rs2ts
На самом деле, я заметил, что на странице руководства для execнего написано, что « exec() семейство функций заменяет текущий образ процесса новым образом процесса. Функции, описанные на этой странице руководства, являются внешними execve(2)». Поэтому, хотя я не уверен, execveatчто могу быть уверен в execсемье.
2rs2ts
5

Вы можете использовать команду сценария . Эта команда не включена в POSIX, но вы найдете полезным хранить в файле все нажатия клавиш, а также сообщения об ошибках и вывод. Вы можете позже просмотреть файл. Если вы выполняете какую-то важную работу и хотите вести журнал всех своих действий, вы должны вызвать эту команду сразу после входа в систему:

$ script
Сценарий запущен, файл является машинописным
$ _ Обратите внимание, что это еще одна оболочка - дочерняя оболочка входа в систему

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

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

Если вы хотите добавить новый сеанс к старому файлу, используйте: script -a Добавляет новый сеанс к машинописному тексту, здесь применяется то же правило по умолчанию

Это один из способов, с помощью которого системный администратор может отслеживать сеансы. Надеюсь, что это было информативно и полезно. Ура!

отметка
источник