[Перевод] Базовые действия по реагированию на инциденты кибербезопасности в Linux

8b511359aacbd9af96b08bd7c12760e3.jpg

Введение

Данная публикация — перевод статьи — Linux Incident Response от Jeenali Kothari. Статья о том, какие действия может выполнить сотрудник кибербезопасности при подозрении на компрометации системы на базе Linux.

Что такое реагирование на инцидент

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

Данные, которые могут помочь разобраться с инцидентом кибербезопасности:

  • запущенные процессы;

  • содержимое физической памяти;

  • информация об имени хоста, IP-адресе, операционной системе;

  • информация о системных службах;

  • идентификация всех известных и неизвестных пользователей, вошедших в систему;

  • сетевые подключения, открытые порты и любая имеющаяся в системе сетевая активность;

  • анализ присутствующих в системе файлов.

Учетные записи пользователей

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

Чтобы определить, есть ли подозрительные учетные записи в системе Linux:

cat /etc/passwd

11d23b34ef6bc4d72aad66f7d35dbe14.png

Параметр «Setuid» в Linux — это уникальное разрешение на доступ к файлам. Таким образом, в системе Linux, когда пользователь хочет сменить пароль, он может запустить команду «passwd».

passwd -S [User_Name]

8c05c5ac3cc779aaebf9bc89dfa3afdb.png

Grep используется для поиска в обычном тексте строк, соответствующих регулярному выражению. :0: используется для отображения файлов с идентификатором «UID 0» в файле /etc/passwd.

grep :0: /etc/passwd

67105bb3c564e6604062105064976ac2.png

Чтобы определить, создал ли злоумышленник какого-либо временного пользователя для выполнения атаки, введите:

find / -nouser -print

92e5b1138258238c2a898a1d4faef988.png

Файл /etc/shadow содержит зашифрованный пароль, подробную информацию о паролях и доступен только пользователям root.

cat /etc/shadow

8a0c0efebaf531aa63a1ce8fa5d0f052.png

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

cat /etc/group

1e7709c519401d28bc213cd2da29caa5.png

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

cat /etc/sudoers

a813f28b0a7a7a0bc65cf411110339c9.png

Записи в журнале событий

Чтобы просмотреть информацию о последнем входе в систему определенного пользователя или всех пользователей в системе Linux, вы можете ввести:

lastlog

dc02fef8f4927f967e3aa951b7177d8c.png

Чтобы идентифицировать неуспешные попытки аутентификации в системе, вы можете ввести

journalctl -u ssh.service | grep Failed

fcf85a3d70c9555a5bcc7ed70ee31a6e.png

Чтобы просмотреть историю введенных пользователем команд, вы можете ввести:

history | less

03a891c45945cf33eed7b108d41fd36c.png

Системные ресурсы

Данные системного журнала могут вам рассказать о времени непрерывной работы системы, объеме памяти и утилизации системы и т.д. чтобы узнать, как долго работал сервер, текущее время в системе, сколько пользователей в данный момент вошли в систему.

uptime

Чтобы просмотреть использование памяти системой в Linux, используемую физическую память и swap память, а также буферы, используемые ядром, вы можете ввести

free

Чтобы проверить подробную информацию об оперативной памяти, доступном пространстве в памяти, буферах и подкачке в системе, вы можете ввести:

cat /proc/meminfo

329064ce622af5c9db3c390be13138cb.png

Чтобы проверить наличие подключений в вашей системе, вы можете ввести

cat /proc/mounts

8d913aecf91e0a05801879c917c973b0.png

Процессы

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

top

a09f427026bd87d7bccd361a022df05f.png

Чтобы увидеть состояние процесса в вашей системе Linux и текущие запущенные процессы, а также PID. для выявления нелегитимных процессов, которые могут указывать на любую вредоносную активность в системе Linux, вы можете использовать

ps aux

b78abff13f0ad9732a51364c42139c82.png

Чтобы отобразить более подробную информацию о конкретном процессе, вы можете использовать

lsof –p [pid]

bf7d21a4fc74745e2537f12bbe5dba91.png

Службы

При анализе служб важно посмотреть статус служб, cron, передачу файлов, разрешение доменных имен, брандмауэры и т.д. Чтобы найти какие-либо отклонения от нормальной работы служб, вы можете использовать

service --status-all

02c36e9c73f0dac0b58469f00f7e6813.png

Чтобы найти запланированные задачи, вы можете использовать

cat /etc/crontab

2df557db0849923123c9d932d7fdc158.png

Чтобы устранить проблемы с конфигурацией DNS вы можете использовать

more /etc/resolv.conf

fea9751533992ed9ecac963fb6b52051.png

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

more /etc/hosts

1ae7122aceb44a58e3a98286327602df.png

Для проверки и управления фильтрацией пакетов IPv4 и NAT в системах Linux вы можете использовать iptables и различные команды, такие как:

iptables -L -n

27fd7c8283e0a82582c41cb9ca0b1c6b.png

Файлы

Иерархия файлов Linux

d8eb38cf2a47f58591c96aae1be2157a.png

Чтобы определить файлы слишком большого размера в вашей системе и их права доступа, вы можете использовать:

find /home/ -type f -size +512k -exec ls -lh {} \;

cbeeeb3dfedbd8b0e095bb4c2b11182a.png

Каждый раз, когда выполняется какая-либо команда, в которой установлен SUID, ее эффективный UID становится владельцем этого файла. Если вы хотите найти все те файлы, которые содержат SUID, то их можно получить, введя команду:

find /etc/ -readable -type f 2>/dev/null

586e832d96ba6cd8ecfa5c7967cd7615.png

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

find / -mtime -2 -ls

Сетевые настройки

Крайне важно определить общую картину состояния системной сети и ее работоспособности. Для получения информации о сетевой активности вы можете использовать различные команды. Чтобы просмотреть свои сетевые интерфейсы в системе, вы можете использовать:

ifconfig

891a93e8fdd30561f155461977335d1c.png

Чтобы перечислить все процессы, которые прослушивают порты с их PID, вы можете использовать

lsof -i

5cc3e8e2e340c5c1da357478770a0645.png

Чтобы отобразить все прослушивающие порты в сети, используйте

netstat -nap

852047c483050c21df0c8f7ed0a3a68d.png

Таблица ARP, также известная как кэш ARP, является временным хранилищем для сопоставлений IP-адресов с MAC-адресами в системе Linux. Протокол разрешения адресов (ARP) — это протокол связи, используемый для сопоставления IP-адреса с физическим (MAC) адресом в локальной сети. Он работает на канальном уровне модели OSI, позволяя устройствам в одном сегменте сети обнаруживать друг друга и эффективно взаимодействовать.

Чтобы отобразить системный ARP-кэш, вы можете ввести

arp -a

4683d99558a1d8906b59a831ec049631.png

Когда вы запускаете программу из терминала или скрипта, то обычно пишете только имя файла программы. Однако, ОС Linux спроектирована так, что исполняемые и связанные с ними файлы программ распределяются по различным специализированным каталогам. Например, библиотеки устанавливаются в /lib или /usr/lib, конфигурационные файлы в /etc, а исполняемые файлы в /sbin/, /usr/bin или /bin.

Таких местоположений несколько. Откуда операционная система знает где искать требуемую программу или её компонент? Всё просто — для этого используется переменная PATH. Эта переменная позволяет существенно сократить длину набираемых команд в терминале или в скрипте, освобождая от необходимости каждый раз указывать полные пути к требуемым файлам. В этой статье мы разберёмся зачем нужна переменная PATH Linux, а также как добавить к её значению имена своих пользовательских каталогов.

Для того, чтобы посмотреть содержимое переменной PATH в Linux, выполните в терминале команду:

echo $PATH

8a7a41cd3b88a483615458cb8afe9281.png

© Habrahabr.ru