- Гостевая статья Как очистить записи и журналы в Linux
- Шпаргалка по journalctl в Linux
- Синтаксис и опции journalctl
- Горячие клавиши journalctl
- Шпаргалка по journalctl
- 1. Просмотр логов сервисов
- 2. Просмотр логов в режиме tail
- 3. Просмотр логов загрузки
- 4. Фильтрация по дате
- 5. Журнал ядра
- 6. Настройка формата вывода
- 7. Очистка логов
- Выводы
Гостевая статья Как очистить записи и журналы в Linux
Почему это важно?
Сокрытие записей является заключительным этапом процесса тестирования проникновения перед написанием отчета. Он предполагает очистку или стирание всей активности злоумышленника, чтобы избежать обнаружения.
Так что это жизненно важно в цикле тестирования проникновения, теперь с оборонительной точки зрения это действительно может проверить обработчики инцидентов и синяя команда и проверить их способность обнаружить нападающего и найти все, что нападающий, возможно, забыл очистить.
Это, как правило, самый большой вектор ошибки нападающего и именно там профессионалы отсортированы от любителей.
С точки зрения злоумышленников, он/она должен уклоняться от обнаружения с помощью IDS, тем самым предотвращая любые действия по реагированию на инциденты, и должен очищать любые журналы или бэкдоры, которые могут быть обнаружены группой судебно-медицинской экспертизы.
Что атакующий будет и должен делать
- Очистить логи
- Изменить реестр или очистить
- Удаление любых файлов, которые вы создали
Я собираюсь рассмотреть основные принципы, но в большей степени для Linux систем, так как именно здесь мои знания и опыт.
Очистка ваших записей также будет зависеть от привилегий, которые вы имеете в системе (если вы атакуете ее удаленно).
Файлы журнала хранятся в каталоге /var/log
— Редактирование файлов будет действительно не легким, я бы рекомендовал использовать инструмент под названием shred для удаления или изменения файла.
Что такое Shreed
Shreed — это инструмент, позволяющий удалить файл или данные навсегда и препятствующий восстановлению данных, поскольку он несколько раз перезаписывает файл с помощью 1 s и 0s (при удалении файла на компьютере он действительно не удаляется, он просто помечается как пространство, в которое можно записать данные)
Shred очень популярен при стирании жестких дисков и т.д., я использовал его много раз, прежде чем удалить или продать мои диски.
Параметры при использовании команды Shred
Команда Shred используется для повторной перезаписи указанных файлов, что затрудняет или делает невозможным восстановление данных даже дорогостоящим оборудованием или программным обеспечением. Доступные параметры включают:
- -f изменяет разрешения, чтобы разрешить запись при необходимости
- -n (iterations = N) перезаписывает N раз вместо значения по умолчанию, которое составляет три раза
- -s (размер = N) указывает количество байтов для уничтожения
- -u обрезает и удаляет файлы после перезаписи
- -v показывает подробную информацию о прогрессе
- -x не округляет размеры файлов до следующего полного блока
- -z добавляет окончательную замену нулями, чтобы скрыть измельчение
- -u удаляет файл после перезаписи
Общие файлы журналов и какие данные они содержат
/var/log/auth.log: логи аутентификации
/var/log/kern.log: логи ядра
/var/log/cron.log: журналы Crond (задание cron)
/ var / log / maillog: журналы почтового сервера
/ var / log / httpd /: каталог доступа и журналов ошибок Apache
/var/log/boot.log: журнал загрузки системы
Чтобы стереть файл:
Shred -vfzu auth.log
История bash сохраняет запись всех команд, выполняемых пользователем в командной строке Linux.
Источник
Шпаргалка по journalctl в Linux
Журналы — это один из самых важных источников информации при возникновении любых ошибок в операционной системе Linux. Я это уже много раз говорил ранее и вот сказал ещё раз. Раньше в Linux для сохранения журналов сервисов использовался отдельный демон под названием syslogd. Но с приходом системы инициализации systemd большинство функций касающихся управления сервисами перешли под её управление. В том числе и управление логами.
Теперь для просмотра логов определенного сервиса или загрузки системы необходимо использовать утилиту journalctl. В этой статье мы разберем примеры использования journalctl, а также основные возможности этой команды и её опции. По сравнению с обычными файлами журналов, у journalctl есть несколько преимуществ. Все логи находятся в одном месте, они индексируются и структурируются, поэтому к ним можно получить доступ в нескольких удобных форматах.
Синтаксис и опции journalctl
Синтаксис команды очень простой. Достаточно выполнить команду без опций или передав ей нужные опции. Если утилита не выводит ничего, выполните её от имени суперпользователя:
journalctl опции
А теперь давайте разберем основные опции journalctl:
- —full, -l — отображать все доступные поля;
- —all, -a — отображать все поля в выводе full, даже если они содержат непечатаемые символы или слишком длинные;
- —pager-end, -e — отобразить только последние сообщения из журнала;
- —lines, -n — количество строк, которые нужно отображать на одном экране, по умолчанию 10;
- —no-tail — отображать все строки доступные строки;
- —reverse, -r — отображать новые события в начале списка;
- —output, -o — настраивает формат вывода лога;
- —output-fields — поля, которые нужно выводить;
- —catalog, -x — добавить к информации об ошибках пояснения, ссылки на документацию или форумы там, где это возможно;
- —quiet, -q — не показывать все информационные сообщения;
- —merge, -m — показывать сообщения из всех доступных журналов;
- —boot, -b — показать сообщения с момента определенной загрузки системы. По умолчанию используется последняя загрузка;
- —list-boots — показать список сохраненных загрузок системы;
- —dmesg, -k — показывает сообщения только от ядра. Аналог вызова команды dmesg;
- —identifier, -t — показать сообщения с выбранным идентификатором;
- —unit, -u — показать сообщения от выбранного сервиса;
- —user-unit — фильтровать сообщения от выбранной сессии;
- —priority, -p — фильтровать сообщения по их приоритету. Есть восемь уровней приоритета, от 0 до 7;
- —grep, -g — фильтрация по тексту сообщения;
- —cursor, -c — начать просмотр сообщений с указанного места;
- —since, -S, —until, -U — фильтрация по дате и времени;
- —field, -F — вывести все данные из выбранного поля;
- —fields, -N — вывести все доступные поля;
- —system — выводить только системные сообщения;
- —user — выводить только сообщения пользователя;
- —machine, -M — выводить сообщения от определенного контейнера;
- —header — выводить заголовки полей при выводе журнала;
- —disk-usage — вывести общий размер лог файлов на диске;
- —list-catalog — вывести все доступные подсказки для ошибок;
- —sync — синхронизировать все не сохраненные журналы с файловой системой;
- —flush — перенести все данные из каталога /run/log/journal в /var/log/journal;
- —rotate — запустить ротацию логов;
- —no-pager — выводить информацию из журнала без возможности листать страницы;
- -f — выводить новые сообщения в реальном времени, как в команде tail;
- —vacuum-time — очистить логи, давностью больше указанного периода;
- —vacuum-size — очистить логи, чтобы размер хранилища соответствовал указанному.
Горячие клавиши journalctl
По умолчанию информация лога выводится в формате, в котором её можно листать. Давайте разберем горячие клавиши, которые вы можете для этого использовать:
- Стрелка вниз, Enter, e или j — переместиться вниз на одну строку;
- Стрелка вверх, y или k — переместиться на одну строку вверх;
- Пробел — переместиться на одну страницу вниз;
- b — переместиться на одну страницу вверх;
- Стрелка вправо, стрелка влево — горизонтальна прокрутка;
- g — перейти на первую строку;
- G — перейти на последнюю строку;
- p — перейти на позицию нужного процента сообщений. Например, 50p перенесет курсор на середину вывода;
- / — поиск по журналу;
- n — найти следующее вхождение;
- N — предыдущее вхождение;
- q — выйти.
Теперь вы знаете основные опции команды и клавиши, с помощью которых можно ею управлять. Дальше небольшая шпаргалка journalctl.
Шпаргалка по journalctl
Вывод journalctl представляет из себя цельный список всех сохраненных сообщений. Если вы запустите команду journalctl без параметров, то получите самые первые сообщения, которые были сохранены. В моем случае это данные за 13 января:
Чтобы найти именно то, что вам нужно, необходимо научится перемещаться по этому списку. Формат вывода лога довольно простой:
янв 13 20:55:55 sergiy-pc kernel: Linux version 4.15.0-43-generic
- янв 13 20:55:55 — дата и время события;
- sergiy-pc — хост, на котором произошло событие;
- kernel — источник события, обычно это программа или сервис. В данном случае ядро;
- Linux version 4.15.0-43-generic — само сообщение.
Давайте перейдем к примерам фильтрации и перемещения.
1. Просмотр логов сервисов
Самый частый случай использования journalctl — это когда вы пытаетесь запустить какой-либо сервис с помощью systemd, он не запускается и systemd выдает вам такое сообщение подобного содержания: Failed to start service use journalctl -xe for details. Система сама предлагает вам какую команду надо выполнить:
sudo journalctl -xe
Как вы помните из опций, эта команда отображает последние сообщения в журнале и добавляет к ним дополнительную информацию, если она есть. Учитывая, что последнее, что мы делали — был наш сервис, то здесь будут сообщения от него и вы быстро сможете понять почему он не запускается.
Чтобы отфильтровать сообщения только от определенного сервиса можно использовать опцию -u. Например:
sudo journalctl -eu apache2.service
2. Просмотр логов в режиме tail
С помощью опции -f можно указать утилите, что необходимо выводить новые сообщения в реальном времени:
sudo journalctl -f
В этом режиме less не поддерживается, поэтому для выхода нажмите сочетание клавиш Ctrl+C.
3. Просмотр логов загрузки
В логе journalctl содержатся все логи, в том числе и логи загрузки. Для того чтобы открыть лог последней загрузки используйте опцию -b:
sudo journalctl -b
Посмотреть список всех сохраненных загрузок можно командой:
sudo journalctl -list-boots
Теперь, чтобы посмотреть сообщения для нужной загрузки используйте её идентификатор:
sudo journalctl -b 37d5c906c9c6404682f029b2c34ec9dc
4. Фильтрация по дате
С помощью опции —since вы можете указать дату и время, начиная с которой нужно отображать логи:
sudo journalctl —since «2019-01-20 15:10:10»
Опция —until помогает указать по какую дату вы хотите получить информацию:
sudo journalctl -e —until «2019-01-20 15:05:50»
Или сразу скомбинируем две эти опции чтобы получить логи за нужный период:
sudo journalctl —since «2019-01-20 15:10:10» —until «2019-01-20 15:05:50»
Кроме даты в формате YYYY-MM-DD в этих опциях можно использовать такие слова, как yesterday, today, и tomorrow. Также допустимы конструкции 1 day ago (один день назад) или 3 hours ago (три часа назад). Ещё можно использовать знаки + и -. Например -1h30min будет означать полтора часа назад.
5. Журнал ядра
Если вы хотите посмотреть только сообщения ядра используйте опцию -k:
sudo journalctl -ek
6. Настройка формата вывода
По умолчанию journalctl выводит информацию с помощью утилиты less, в которой вы можете её удобно листать и просматривать. Но формат вывода можно изменить:
- short — используется по умолчанию;
- verbose — также, как и short, только выводится намного больше информации;
- json — вывод в формате json, одна строка лога в одной строке вывода;
- json-pretty — форматированный вывод json для более удобного восприятия;
- cat — отображать только сообщения, без метаданных.
Чтобы указать нужный формат используйте опцию -o. Например:
sudo journalctl -o json-pretty
sudo journalctl -eo json-pretty
7. Очистка логов
Сначала нужно посмотреть сколько ваши логи занимают на диске. Для этого используйте такую команду:
sudo journalctl —disk-usage
Чтобы уменьшить размер лога можно использовать опцию —vacuum-size. Например, если вы хотите, чтобы ваши файлы журналов занимали на диске не более 2 Гб, выполните команду:
sudo journalctl —vacuum-size=2G
Теперь старые логи будут удалены, пока общий объем хранилища не будет составлять 2 гигабайта. Также можно удалять логи по времени. Для этого используется опция —vacuum-time. Например, оставим только логи за последний год:
Выводы
В этой статье мы разобрали как пользоваться journalctl в Linux. Наличие этой утилиты в системе не означает, что теперь вы не можете пользоваться обычными файлами логов. Большинство сервисов как и раньше пишут свои основные логи в файлы, а в лог journalctl пишутся сообщения при старте сервисов, а также различные системные сообщения.
Источник