
- •В.В. Бакланов
- •Защитные механизмы
- •Операционной системы
- •Екатеринбург
- •Оглавление
- •Введение
- •1. Пользователи и их права
- •Учетные записи пользователей и работа с ними
- •Video::18:
- •Ivanov:X:1002:101::/home/ivanov:/bin/bash
- •1.2. Процедура регистрации и ее безопасность
- •VI /etc/passwd
- •Initrd /boot/initrd.Img–2.6.18–5–686
- •Права доступа к файлам
- •Комбинированные права доступа
- •1.5. Решение практических задач на разграничение доступа
- •Использование механизма sudo
- •2. Безопасное управление процессами
- •2.1. Общие сведения о процессах
- •Virtual memory (kbytes, -V) unlimited
- •2.2. Средства наблюдения за процессами
- •2.3. Переменные окружения
- •2.4. Способы автоматического запуска и остановки программ
- •Id:3:initdefault:
- •Id:3:initdefault:
- •2.5. Периодически запускаемые процессы
- •2.6. Запуск и остановка программ в интерактивном и фоновом режимах
- •2.7. Средства взаимодействия между процессами
- •2.8. Перенаправление ввода/вывода
- •2.9. Файловая система /proc как «зеркало» процессов
- •2.10. Терминальный режим и консольные атаки
- •16:10:12 Up 15 min, 4 users, load average: 0,00, 0,00, 0,01
- •Ivanov tty2 - 16:07 3:08 0.01s 0.01s -sh
- •Ivanov tty2 2008-11-05 16:07
- •2.11. Сокрытие процессов
- •2.12. Аудит событий и его безопасность
- •3. Работа с объектами файловой системы
- •3.1. Действия над обычными файлами
- •3.2. Работа со специальными файлами устройств
- •255 Heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors
- •255 Heads, 63 sectors/track, 91201 cylinders, total 1465149168 sectors
- •255 Heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
- •16 Heads, 32 sectors/track, 988 cylinders, total 505856 sectors
- •3.3. Монтирование файловых систем
- •3.4. Копирование и запись данных
- •2,0,0 200) 'Ata ' 'wdc wd3200bevt-2' '11.0' Disk
- •1000,0,0 100000) 'Hl-dt-st' 'dvdram gma-4082n' 'pt06' Removable cd-rom
- •3.5. Использование «жестких» и символических ссылок
- •4. Безопасность файловых систем ext*fs
- •4.1. Архитектура файловых систем ext*fs
- •Inode count: 438048
- •Inodes per group: 8112
- •Inode blocks per group: 507
- •Inode: 131329 (0x00020101)
- •Indirect block:
- •131329 Drwxr-xr-X 2 root root 4096 Мар 18 17:42
- •Inode: 527744 (0x00080d80)
- •Indirect block:
- •0X024f9040 73 79 6e 63 0a 00 00 00 : 00 00 00 00 00 00 00 00 sync............
- •4.2. Временные отметки файлов
- •4.3. Алгоритмы логического удаления и восстановления файлов
- •Сетевые возможности операционных систем linux
- •5.1. Контроль и настройка сетевых интерфейсов
- •Inet addr:192.168.0.4 Bcast:192.168.0.255 Mask:255.255.255.0
- •Interrupt:5 Base address:0x4000
- •Inet addr:127.0.0.1 Mask:255.0.0.0
- •Ifconfig eth0 -arp
- •Inet addr:192.168.0.4 Bcast:192.168.0.255 Mask:255.255.255.0
- •Interrupt:5 Base address:0x4000
- •Ifconfig eth0 promisc -arp
- •Iwconfig ath0 mode adhoc channel 1 essid “abcd”
- •5.2. Разведка сети
- •5.3. Перехват и анализ сетевого трафика
- •Лабораторный практикум
- •Общие требования
- •Памятка обучаемым
- •Выполнение работы
- •Лабораторная работа № 2 «Исследование архитектуры файловых систем ext*fs»
- •Контрольные вопросы
- •Контрольные вопросы
- •Лабораторная работа № 4 «Реализация политики разграничения доступа средствами ос Linux»
- •Временная нейтрализация парольной защиты
- •Контрольные вопросы
- •Лабораторная работа № 5 «Исследование процессов в ос Linux» Подготовка к работе
- •Наблюдение за файловой системой /proc
- •Просмотр и анализ информации о процессах
- •Управление процессами
- •Работа с консолями
- •Работа с каналами
- •Исследование опасных команд
- •Контрольные вопросы
- •ЛаборАторная работа № 6 «Исследование сетевых возможностей ос Linux»
- •Ifconfig eth0 –arp
- •Контрольные вопросы
- •Лабораторная работа № 7 «Исследование беспроводной сети WiFi под управлением ос Linux»
- •Interrupt:19
- •Inet addr:127.0.0.1 Mask:255.0.0.0
- •Iwconfig ath0 channel 1 essid "abcd"
- •Iwlist ath1 scan
- •Iwconfig ath0 key off
- •Iwconfig ath0 key 0123-4567-89ab-cdef
- •Контрольные вопросы
- •Лабораторная работа № 8 «Наблюдение и аудит в ос Linux»
- •Библиографический список
2.9. Файловая система /proc как «зеркало» процессов
В ОС Linux присутствует виртуальная файловая система, монтируемая при загрузке к каталогу /proc (от слова process). В отличие от других файловых систем, размещаемых на внешних машинных носителях, эта файловая система располагается в оперативной памяти, обеспечивает связь с ядром и предназначена для предоставления текущей информации о компьютерной системе (состояние ядра, процессы, параметры компьютера и т. д.), чем представляет большой интерес, в том числе с позиций компьютерной безопасности. Многие из утилит, выводящие информацию о системе (например, ранее рассмотренные команды ps и top), берут исходные данные именно из каталога /proc.
В виртуальной файловой системе /proc размер почти всех файлов равен нулю, и любой пользователь, включая суперпользователя, лишен права на запись в эти файлы. Право на чтение почти всех файлов имеет каждый зарегистрированный пользователь системы. В то же время некоторая часть виртуальных файлов доступна администратору на запись, например для установки параметров ядра.
Объект /proc включает в себя файлы и каталоги с числовыми и символьными именами. Каталоги с числовыми именами содержат информацию о каждом выполняющемся процессе, а само имя каталога образовано от идентификатора выполняемого процесса (PID). При создании процесса соответствующий каталог появляется, а при уничтожении процесса – исчезает. В каждом из таких «числовых» каталогов содержатся одни и те же файловые объекты (табл. 2.1).
Если в процессе выполнения сам исполняемый файл оказался удаленным, ссылка exe позволит восстановить удаленный файл, скопировав его образ из оперативной памяти [7].
В подкаталоге fd (fd – file descriptor) можно получить оперативную информацию обо всех файлах, которые были открыты данным процессом. Именно отсюда берет информацию команда lsof, часто используемая для наблюдения за открытыми файлами.
Виртуальный файл cmdline содержит полные параметры командной строки, использованные при запуске программы. Отсюда информация переписывается в файл истории команд.
Таблица 2.1
Имя файла в подкаталоге /proc/PID |
Содержимое файла |
cmdline |
Список аргументов командной строки процесса (параметры, передаваемые программе). Список представлен одной последовательностью, в которой аргументы отделяются друг от друга байтами вида «0x00» |
cwd |
Символическая ссылка на каталог, который установлен текущим (рабочим) для процесса (cwd – change working directory) |
environ |
Переменные окружения (USER, HOME, PATH и др.). Элементы списка разделяются друг от друга байтами вида «0x00» |
exe |
Ссылка на исполняемый файл процесса |
fd |
Каталог, содержащий символические ссылки на файлы, открытые данным процессом |
maps |
Карта распределения адресного пространства процесса в виде форматированного текстового файла |
mem |
Память процесса |
root |
Ссылка на корневой каталог процесса (обычно /) |
stat |
Состояние процесса на момент просмотра |
statm |
Состояние памяти процесса. Содержит список из 7 чисел, разделенных пробелами. Эти числа:
|
status |
Состояние процесса в виде, предназначенном для пользователя. Файл содержит идентификатор процесса, родительского процесса, реальный и эффективный идентификаторы пользователя, статистику использования памяти и битовые маски, указывающие, какие сигналы процессом перехватываются, игнорируются или блокируются |
О назначении файлов и каталогов с символьными именами можно догадаться по этим именам. Например, сведения о последовательных пор-
тах содержатся в файле /proc/tty/driver/serial. Обращение к этим файловым объектам позволяет получить текущую информацию об аппаратной платформе и драйверах устройств, а также много иной интересной информации.
Виртуальный текстовый файл /proc/mounts содержит информацию об уже смонтированных файловых системах. Почти такая же, но более подробная информация записывается в реальный файл /etc/mtab.
Если имеются сомнения в том, что утилита ps правильно отображает все процессы, можно обратиться к каталогу /proc. Достаточно ввести друг за другом две команды:
ls -d /proc/*|grep [0-9]|wc -l
и
ps ax|wc -l
и сравнить результаты. Первый программный конвейер считает имена нумерованных каталогов в каталоге /proc, а второй суммирует процессы, отображаемые утилитой ps. Результаты не должны сильно отличаться. Это поможет в случае подмены злоумышленником утилиты ps.