Так что я прочитал многие посты, связанные с этим, и просто запутался больше, чем раньше. Существуют рекомендации для различных инструментов, включая ttyrec, snoopy, acct, rooth, sudosh, ttyrpld, аудит unix и другие.
В моем случае я хочу иметь возможность регистрировать все команды, выполняемые в системе (например, историю с включенными метками времени), но я также хочу знать, кто что сделал? Тем не менее, мы все регистрируемся через ssh для одной и той же небольшой группы учетных записей пользователей (в зависимости от того, что мы делаем). Как я могу получить журнал команд, включающий информацию, которую «кто» даст мне (относительно подключения), чтобы я мог проследить действие для конкретного человека, представляющего собой просто общего «пользователя»?
Ответы:
auditd
Пакет предназначен для этого, вы можете использовать PAM присвоить каждому Войти идентификатор сеанса , так что вы можете отслеживать активность на счет обратно к первоначальному входа в систему (а затем проверьте журнал регистрации , чтобы определить , где этот человек вошел в систему с), а также использованиеausearch
команда , чтобы найти события , которые вы хотите получить . вы можете прочитать довольно полное руководство здесь , хотя некоторые мелкие детали должны быть изменены , чтобы соответствовать вашему распределению. У Redhat есть сайт с FAQ и некоторыми другими документами здесь .Поскольку это не зависит от попыток регистрировать команды, введенные в оболочку, или записывать историю команд пользователей, необходимо регистрировать такие вещи, как открытие vi (что может быть сделано через X или in
screen
), написание сценария (возможно, один символ в время с командами вырезания / вставки vi и несколькими запусками,:.!/usr/games/fortune
чтобы получить исходные данные, которые вы, возможно, не сможете зарегистрировать), затем запустите:%!/bin/bash
команду.источник
В вашем распоряжении уже есть множество инструментов, на которые ваш вопрос (и эти ответы) намекают, например, на историю, snoopy, auddd, журналы sudo и т. Д. ... но если у вас есть "Подмножество учетных записей", которые используют люди, есть на сервере нет возможности сказать, кто что сделал. Единственный способ точно определить, кто это сделал, - это если пользователи имеют свои собственные компьютеры, которые они специально используют, и используют клавиатурные шпионы, чтобы сказать, что они физически печатали на этой клавиатуре.
Всякий раз, когда вы делитесь учетными записями, вы не можете сказать, что на самом деле происходит, поскольку вам потребуются дополнительные доказательства того, кто использовал вашу корневую учетную запись или учетную запись bob, или что бы ни делали ваши люди. Если вы пытаетесь выяснить, что произошло в конкретном инциденте, вам, возможно, придется пересмотреть свои политики и процедуры доступа, процедуры восстановления, а также оценить своих сотрудников и / или, при необходимости, провести переподготовку (или их надежность с помощью конфиденциальных учетных записей). чем непосредственно сосредоточиться на поиске того, кто что-то сделал, так как это может поглотить больше ресурсов, чем вы можете найти, чтобы найти человека, который сделал это.
В противном случае, возможно, вы захотите изучить методы судебно-медицинской экспертизы для отслеживания того, что произошло (создание образа диска, отслеживание журналов и т. Д.). Если вы не расследуете инцидент, изучите свои политики и внедрите лучшее отслеживание и проверку аккаунта (только у вас есть root, только Боб использует свою учетную запись, используя sudo, чтобы получить доступ к более высоким привилегиям, устанавливать и отслеживать audd и т. д.), и будьте осторожны, чтобы ваш круг не чувствовал себя так, будто его держат под микроскопом, или вы можете оттолкнуть людей, пытающихся чтобы сделать свою работу (или помешать им сделать свою работу).
источник
Linux audd ( http://people.redhat.com/sgrubb/audit/ ) даст вам больше возможностей для наблюдения за тем, кто что сделал. У вас есть больше об этом в ответе ДерфК.
Однако никто ничего не скажет вам, вошедшему в систему как webadmin, если есть n человек, которые имеют доступ к учетной записи webadmin. Я бы предложил использовать именованные учетные записи для каждого пользователя, а затем использовать su - или sudo для запуска команд из учетной записи «function».
источник