- •В.В. Бакланов
- •Защитные механизмы
- •Операционной системы
- •Екатеринбург
- •Оглавление
- •Введение
- •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»
- •Библиографический список
Просмотр и анализ информации о процессах
-
Из консоли пользователя командой ps -efl | more выведите расширенный поэкранный список исполняемых процессов (перечень параметров для расширенного вывода информации можно уточнить с помощью электронного справочника man ps). Разберитесь с выводимой информацией. Определите процессы:
-
по типу: системные, демоны, пользовательские (тип процесса определяется по косвенным признакам, в частности по имени процесса в квадратных скобках, связи процессов с определенными владельцами и терминалами и др.);
-
по состоянию S: (исполняющиеся – R или О, ожидающие записи на диск – D, ожидающие событий – S, приостановленные – T, зомби – Z),
-
по текущему динамическому приоритету PRI (наименьшее значение у высокоприоритетных процессов),
-
по относительному приоритету NI.
-
Комбинацией клавиш Alt+F3 откройте третий текстовый терминал и зарегистрируйтесь в нем как суперпользователь. В этой консоли запустите утилиту top для текущего контроля процессов. Утилита позволяет отобразить наиболее активные процессы (сколько их помещается на экран) с достаточно полной информацией о них (для пользователя утилита представляет ограниченный набор выводимых параметров).
-
Из первой консоли создайте процесс od /dev/zero > /dev/null. В соответствии с введенной командой утилита od читает и выводит непрерывный поток байтов из «рога изобилия» в нулевое устройство. Переключившись в третью консоль, с помощью команды top просмотрите список наиболее активных процессов. Найдите и идентифицируйте запущенный процесс, найдите по идентификатору PPID его «родителя», определите его приоритет (возможно, это – величина переменная), долю загрузки центрального процессора %CPU и оперативной памяти %MEM.
-
Поочередно из первой и второй консолей с правами администратора и пользователя с помощью команды od /dev/zero > /dev/null & создайте по 2-3 одинаковых фоновых процесса.
-
По мере создания новых процессов отслеживайте в третьей консоли их текущий приоритет, загрузку процессора и памяти. Имеются ли различия в приоритете процессов, выполняемых от имени администратора и пользователя?
-
С консоли пользователя user1 измените приоритет одного из принадлежащих ему процессов. Для этого воспользуйтесь командой renice -10 PID. Изменился ли относительный приоритет процесса?
-
Повторите предыдущий пункт, используя права root.
-
Переключитесь в консоль пользователя и измените приоритет одного из принадлежащих ему процессов командой renice +5 PID. Произошло ли изменение приоритета?
-
Проконтролируйте из третьей консоли изменение приоритетов запущенных процессов.
-
Из консоли пользователя восстановите приоритет ранее замедленного процесса командой renice –5 PID. Произошло ли восстановление прежнего приоритета? Почему?
-
С разрешения преподвателя завершите созданные вами процессы.
Управление процессами
-
С правами пользователя создайте в своей директории сценарий с именем abcd. Сценарий можно создать с помощью команды cat:
cat >abcd
#! /bin/bash
while : rem обратите внимание на пробел перед двоеточием!
# примечание вводить не нужно
do
echo HELLO!
done
Ctrl+d
-
Используя команду chmod, присвойте пользователю права на чтение и исполнение данного сценария. Запустите сценарий на исполнение (на экран должны непрерывно выводиться приветствия HELLO!).
-
Перейдите в третью консоль, с помощью команды top просмотрите список процессов и найдите в нем «зависший» процесс, запущенный пользователем (на самом деле это только имитация «зависания», которое пользователь легко может прекратить сам). Прочитайте идентификатор процесса PID.
-
Нажатием Ctrl+C из второй консоли остановите процесс. Как изменилось при этом состояние процесса?
-
Повторно запустите из второй консоли процесс, перейдите в первую консоль и отправьте «зависшему» процессу сигнал на останов (командой kill или внутренней командой k из работающей утилиты top).
-
Запустите ранее скопированную в каталог /bin утилиту signorer. Отправьте ей из этой же консоли несколько прерывающих сигналов в виде комбинаций клавиш (Ctrl-C, Ctrl-\, Ctrl-Z). Понаблюдайте за реакцией процесса. Как вы полагаете, по какой причине этот процесс не удается остановить?
-
Перейдите в другую консоль и отправьте «непослушному» процессу сигнал kill -20 PID. Как реагирует процесс на данный сигнал? Посмотрите в электронном справочнике, что означает данный сигнал.
-
С помощью команды kill -9 PID отправьте этому процессу сигнал принудительного завершения. С другой консоли проконтролируйте выполнение команды. Остановился ли процесс? Остался ли он в списке процессов? Какая программа на самом деле перехватывает и исполняет команду kill -9 PID?
-
С помощью команды echo $PATH поочередно из консоли администратора и пользователя user1 выведите список директорий, в которых производится поиск исполняемых файлов, заданных только по имени. В чем заключается различие выведенных списков? Почему в списке PATH администратора отсутствует текущий каталог (.)? Почему в списке PATH пользователя отсутствует каталог /sbin? Имеет ли пользователь возможность изменить порядок проверки каталогов для администратора?
-
Перейдите в первую консоль и повторите запуск утилит с правами суперпользователя.
-
Убедитесь в том, что пользователю разрешен запуск указанных утилит. Объясните, почему пользователь не может запустить утилиты с некоторыми «критичными» параметрами? Где, по вашему мнению, расположен механизм контроля за ходом исполнения таких команд (в ядре операционной системы, в командной оболочке, в самой утилите?). Ответ обоснуйте.
-
С правами пользователя скопируйте в свой рабочий каталог один из исполняемых файлов с параметром SUID каталога /bin (исполняемые файлы выделены цветом и символом *, а параметр SUID отмечен символом s в правах владельца на исполнение). Как изменились права доступа к файлу после его копирования?
-
Из второй консоли с правами пользователя скопируйте в свой домашний каталог утилиту, которую разрешено запускать только администратору (например, chattr). Копирование производите с параметрами, гарантирующими переход копии во владение пользователю. Убедитесь, что пользователь имеет на скопированный файл все необходимые права. Попробуйте использовать свою копию утилиты по ее назначению (в случае копирования утилиты chattr установите дополнительный атрибут +i одному из своих файлов). Сделайте выводы.