Анализ системных журналов на наличие аномальных записей
На этом этапе вы научитесь анализировать системные журналы для поиска свидетельств подозрительной активности. Системные журналы — это записи событий, происходящих в системе, и они являются критически важным источником информации для мониторинга безопасности и криминалистического анализа. Мы сосредоточимся на журналах аутентификации, которые отслеживают входы пользователей и повышение привилегий, и будем использовать стандартные инструменты Linux, такие как grep, tail и journalctl, для поиска аномальных записей.
Большинство системных журналов в системе Linux хранятся в каталоге /var/log. Одним из наиболее важных для безопасности является /var/log/auth.log, который записывает события, связанные с аутентификацией, включая входы по SSH и использование команд sudo. Давайте начнем с просмотра последних нескольких строк этого файла с помощью команды tail. Вам потребуется sudo, поскольку этот файл защищен.
sudo tail /var/log/auth.log
Вы увидите серию записей с временными метками. Формат обычно включает дату, время, имя хоста, процесс, сгенерировавший журнал, и сообщение о событии.
Jul 22 10:30:01 labex-vm sudo: labex : TTY=pts/0 ; PWD=/home/labex/project ; USER=root ; COMMAND=/usr/bin/tail /var/log/auth.log
Jul 22 10:30:01 labex-vm sudo: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)
Jul 22 10:30:01 labex-vm sudo: pam_unix(sudo:session): session closed for user root
Теперь давайте симулируем распространенное подозрительное событие: неудачную попытку входа. Злоумышленники часто пытаются угадать пароли для действительных или распространенных имен пользователей. Мы можем симулировать это, попытавшись подключиться по SSH к нашей собственной машине (localhost) с несуществующим именем пользователя, например baduser.
ssh baduser@localhost
Система запросит у вас пароль (вы можете использовать labex в качестве пароля). Поскольку пользователя не существует, любой пароль будет неудачным. Просто нажмите Ctrl+C, чтобы отменить запрос пароля и вернуться в терминал. Попытка подключения не удастся, но она будет занесена в журнал.
Теперь давайте найдем доказательства. Мы можем использовать команду grep для фильтрации файла auth.log по строкам, содержащим слово "Failed". Это быстро выделяет неудачные события.
sudo grep "Failed" /var/log/auth.log
Вывод теперь будет четко показывать запись журнала для нашей неудачной попытки входа по SSH, что является сильным индикатором потенциальной попытки вторжения.
Jul 22 10:35:15 labex-vm sshd[12345]: Failed password for invalid user baduser from 127.0.0.1 port 54321 ssh2
Современные системы Linux, использующие systemd, также имеют централизованную систему ведения журналов, управляемую journald. Команда journalctl — это мощный инструмент для запроса этих журналов. Давайте используем ее для поиска того же события неудачного входа, выполнив поиск сообщений от процесса sshd. Обратите внимание, что вы должны использовать sudo для просмотра системных журналов.
sudo journalctl | grep sshd
Прокрутите вывод (используя клавиши со стрелками, и нажмите q, чтобы выйти), и вы найдете ту же запись "Failed password". Чтобы сделать это еще проще, вы можете фильтровать по приоритету сообщений. Давайте попросим journalctl показать только записи с приоритетом "error" (err) или выше для службы sshd.
sudo journalctl -p err | grep sshd
Эта команда предоставляет гораздо более краткий обзор только ошибок, что делает ее очень эффективной для выявления проблем.
-- Logs begin at ... --
Jul 22 10:35:15 labex-vm sshd[12345]: Failed password for invalid user baduser from 127.0.0.1 port 54321 ssh2
-- End of logs --
Наконец, вы также можете вручную вставлять сообщения в журналы с помощью команды logger. Это полезно для пользовательских скриптов, сообщающих о событиях безопасности. Давайте создадим пользовательское оповещение.
logger "SECURITY-ALERT: Unauthorized file access detected in /etc"
Теперь найдите это конкретное оповещение в системных журналах.
sudo grep "SECURITY-ALERT" /var/log/syslog
Вы увидите свое пользовательское сообщение, демонстрирующее, как вы можете интегрировать собственный мониторинг с системой ведения журналов.
Jul 22 10:40:00 labex-vm labex: SECURITY-ALERT: Unauthorized file access detected in /etc
Теперь вы изучили основы навигации по системным журналам для поиска свидетельств аномальной и потенциально вредоносной активности.