Intereting Posts
RHEL: справочная страница для файлов конфигурации интерфейса Как запросить подпись EFI как позволить bash читать «нажатую клавишу» во время нажатия не после нажатия ENTER ip-таблицы по команде route и таблица iptables командой iptables, то же самое? Как понизить реализацию Ubuntu Samba scp файл с одного сервера на другой, получил «разрешение отказано», Как настроить «бедный человек» настольный кластер Linux? Разделение содержимого файла на другие файлы на основе значения синтаксического анализа в файле Почему в группе / etc / group есть поле члена группы и / etc / gshadow Почему `su“ не перечитывает / etc / environment? разрешение на файлы Как определить время настенных часов процесса? Количество ядер процессора в зависимости от частоты ядер в Qemu / Virtualbox Замените произвольные символы в середине строки IP-адреса с помощью sed Как остановить доступ к telnet для определенного IP-адреса?

Как отслеживать / записывать команды, выполненные в оболочке?

Могут ли команды записываться в файл журнала перед их выполнением в любых оболочках? Я знаю, что есть патч для ssh для регистрации всех команд из сеансов ssh, но я хочу записывать даже команды, выполняемые с веб-сервера cgi или php-скриптами.

Могут ли команды записываться в файл журнала перед их выполнением в любых оболочках?

Учитывая другие вопросы, я полагаю, что другой способ подумать об этом может быть «Что я могу сделать, чтобы убедиться, что я получаю запись каждой команды, которая была выполнена?»

Инструменты учета, предоставленные демоном auditd , разработанным RedHat, но доступным для любого Linux, могут сделать это. Программное обеспечение предоставляет механизмы для записи не только выполненных команд, но и потребляемых ресурсов, длины сеансов, использования суицида SUID, изменения важных системных файлов, изменений в разрешениях на файлы, изменений в системном времени и т. Д. И т. Д. И т. Д. Он является всеобъемлющим, способным наблюдать как файлы, так и системные вызовы. Он может даже включаться в ядро ​​во время загрузки с аргументом, audit=1 . Неважно, выполнялись ли команды из консоли, сеанса SSH или из демона. Обычно файлы журнала обычно хранятся в /var/log/audit , и если вы ищете исполняемые команды, их можно найти, например, с помощью grep exec /var/log/audit/audit.log .


Общие понятия безопасности и регистрации

Остальная часть этого вопроса выходит за рамки вопроса, но, возможно, важна из-за тега безопасности на вопрос или будущих читателей. Вы можете получить хорошую общую базовую конфигурацию безопасности, которая, вероятно, будет в основном уместна для вашей системы Linux через DISA RHEL-6 STIG (неофициальная ссылка для удобства просмотра), и есть десятки записей, связанных с аудитом, которые вы может также использоваться для ваших систем. Точная реализация концепций может различаться между основными дистрибутивами Linux, но оставаться полезной в качестве сводки реальных практических методов обеспечения безопасности. (DISA предлагает множество других хороших исходных условий для многих других систем и программных продуктов).

Учтите, что, несмотря на то, что мониторинг и ведение журнала являются фантастическими, вы действительно не отстаете от задачи чтения каждой строки журналов, а также эффективно ассоциируете одно событие с другим в своем сознании по мере продолжения потока сообщений? Считайте также, что целостность регистрируемых данных имеет первостепенное значение. Можете ли вы доверять тому, что одна система, сама система, на которой установлено и настроена учетная программа, никогда не будет скомпрометирована? Как насчет откровений, таких как Shellshock ?

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

Одной из стратегий сохранения целостности регистрируемых данных является обеспечение того, чтобы все протоколирование хранилось не только локально, но и дистанционно посредством пересылки на центральный сервер протоколирования.

 [Production Server] <---> [NIC 1] <--production traffic--> [Internet] <---> [NIC 2] <--management traffic--> [Log Server] 

Убедитесь, что сервер журнала принимает только трафик с производственного сервера на порт, используемый программным обеспечением ведения журнала, например TCP / UDP 514 для syslog. Сделайте сеть управления максимально закрытой, используя любые доступные средства, например, используя частную сеть (RFC 1918) для сети управления. Внедрите идентификаторы VLAN, если это возможно, и, конечно же, конфигурацию брандмауэра с запретом на всевозможные ошибки. Дайте сети максимально возможную пропускную способность и используйте ее как можно меньше, возможно, даже для того, чтобы спроектировать отдельную «сеть syslog», потому что, в зависимости от количества устройств в сети, центральный сервер syslog может перегружаться, загружается сообщениями syslog. В свою очередь, это может привести к отбрасыванию сообщений при использовании UDP. Вы можете подумать использовать TCP вместо этого, но это тоже может стать проблемой, когда сообщения syslog стекаются в очереди на клиентах syslog до тех пор, пока все дисковое пространство не будет потреблено, эффективно «стреляя себе в ногу». (Таким образом, разумно создать отдельный раздел или логический том для определения максимального дискового пространства, доступного для локальных файлов журналов, и предотвращения использования диска во время работы на системных разделах или томах.) Если мы используем rsyslog, то в Помимо указания центрального сервера регистрации в клиенте rsyslog, плагин audispd должен быть включен в rsyslog для пересылки журнала, относящегося к бухгалтерскому учету.

Зачем нам вообще что-то регистрировать ради безопасности, если мы не намерены строго проверять и потенциально реагировать на эту информацию? Это само по себе может стать сложной задачей. Таким образом, выбор программного обеспечения для анализа файлов журналов также важен. Он должен быть в состоянии знать или настраиваться, чтобы знать, что представляет собой угрозу и как представить ее нам для нашего осознания, чтобы мы могли своевременно реагировать. В противном случае наши журналы безопасности не очень полезны, за исключением, возможно, анализа после инцидента. Программное обеспечение должно иметь возможность анализировать данные на центральном лог-сервере для всех устройств, которые были настроены для отправки на него данных syslog – серверов, рабочих станций, маршрутизаторов или любого другого устройства, которое может отправлять данные регистрации.

Посмотрите это удивительное слайд-шоу о системе аудита Linux. Он определенно предоставляет достаточную информацию о том, что возможно и как его достичь.

http://people.redhat.com/sgrubb/audit/audit_ids_2011.pdf

Вы можете установить учет

а затем играть с awk или sed, чтобы извлечь строки, которые вы хотите

Если команда возвращает любой вывод, вы можете выполнить команду и сохранить возвращаемый вывод в файл-журнал

например

 $ ls > ls.log 

Использование verbose с командами, которые не возвращают результат

 $ mv -v foo bar > mv.log 

Для php-scripts вы можете сделать то же самое с помощью echo , то же самое для system функции или собственных функций php.