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

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

  • Инструмент мониторинга выходных данных в реальном времени
  • Как работают proc / diskstats для представления этих значений? А для proc / stat и meminfo?
  • Как я могу отслеживать текущую статистику ввода-вывода приложения?
  • Как я могу отслеживать длину очереди приема?
  • Характеристики полосы пропускания, CPU и памяти возвращаются в одной строке от терминала
  • Отчетная сеть и статистика жизней и запись в db и изображение
  • Как отслеживать использование памяти одного процесса?
  • Исследование раздражающего короткого пользовательского интерфейса
  • 4 Solutions collect form web for “Как отслеживать / записывать команды, выполненные в оболочке?”

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

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

    Инструменты учета, предоставленные демоном 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.

    Interesting Posts

    Перемещение корневого раздела на другой диск

    Является Perl когда-либо лучшим инструментом, чем awk для обработки текста

    Файлы сборки в списке obj-m при создании модулей ядра

    Сортировка списков, когда нет начальных нулей

    Как запустить FreeBSD в режиме консоли

    проблема с формированием текста с tr

    Разберите массив RAID 1 без удаления / переустановки системы

    Как изменить временные ограничения на сценарии shutdown systemd?

    Как установить переменную пути без root acess?

    Сценарий Awk для извлечения части входного файла

    Помогите с диагностикой проблемы с замораживанием mdm / Cinnamon?

    Почему мой сценарий оболочки дает ошибку: «объявить: не найден»?

    Нормальный текстовый файл, обнаруженный файлом как текст программы ASCII Pascal

    Могу ли я автоматизировать SFTP для загрузки всего дерева?

    Как создать переменную только для размера, используемого и доступного для df?

    Linux и Unix - лучшая ОС в мире.