- •В.В. Бакланов
- •Защитные механизмы
- •Операционной системы
- •Екатеринбург
- •Оглавление
- •Введение
- •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»
- •Библиографический список
Id:3:initdefault:
Загрузка будет происходить в сетевом многопользовательском текстовом режиме. Если эта строка отсутствует или будет закомментирована, в ходе загрузки последует запрос об установке базового уровня.
si:S:sysinit:/etc/rc.d/rc.S
Метод sysinit означает, что процесс запускается во время начальной загрузки системы, до регистрации пользователя и перехода на какой-нибудь уровень выполнения. Начальный сценарий, записанный в файле /etc/rc.d/rc.S, проверяет и монтирует дисковые файловые системы, инициализирует область подкачки – словом, делает все, без чего дальнейшая полноценная работа системы невозможна. Стартовые сценарии, а также каталоги, в которых они располагаются, имеют префикс rc, что означает run command – «команда запуска».
rc:2345:wait:/etc/rc.d/rc.M
На всех многопользовательских уровнях, включая третий, предусмотрен запуск сценария /etc/rc.d/rc.M. В этом командном файле много похожих фрагментов, связанных с запуском сервисов по условию. Типовой фрагмент для Slackware Linux выглядит так:
# Start the sendmail daemon:
if [ -x /etc/rc.d/rc.sendmail ]; then
/etc/rc.d/rc.sendmail start
fi
Сценарий, запускаемый на каждом из уровней, должен завершить все текущие процессы и запустить другие, соответствующие новому уровню. Например, администратор в целях безопасной отладки системы с помощью команды telinit 1 переходит из многопользовательского сетевого режима 3 на однопользовательский уровень 1. При этом все службы, «заведующие» многопользовательским сетевым режимом, должны завершиться (точнее – на уровне 1 никаких процессов кроме системных, init и /bin/sh не должно быть, т. е. при переходе на 1-й уровень никакие процессы и сервисы не стартуют).
В каталоге /etc/rc.d имеются директории с названиями rc0.d, rc1.d, rc2.d, rc3.d, rc5.d, rc6.d, где цифрами обозначены уровни выполнения. Все элементы каталогов rc#.d – символические ссылки. Сами сценарии находятся в каталоге /etc/init.d. Их имена начинаются буквами K (kill) и S (start). При входе на данный уровень запускаются сценарии на букву S, а при выходе с уровня – сценарии на букву K. Числа, следующие за буквой K или S, определяют порядок исполнения сценария.
При возникновении необходимости отключения на каком–либо уровне определенных служб необходимо удалить пару символических ссылок: одну на S, а другую на K (в RedHat это делает специальная утилита chkconfig). Если за запуск службы отвечает отдельный файл, его следует удалить или снять признак исполняемости. Если это делает фрагмент сценария, его можно закомментировать.
Все стартовые сценарии служб, которыми может воспользоваться система, принято хранить в каталоге /etc/rc.d/init.d. Эти сценарии используются для запуска или останова различных служб. Запустить или остановить службу можно, просто вызвав соответствующий сценарий с параметром start или stop. Часто ту же самую задачу выполняет и специальная утилита service, которая проверяет, есть ли указанный стартовый сценарий, и запускает его.
Из строчки с initdefault процесс init «узнает», что уровень выполнения по умолчанию – третий (многопользовательский консольный), и выполняет все строки из inittab, в поле «уровень исполнения» которых есть уровни 3. В частности, запускается сценарий rc.M из строки «rc:…». Метод запуска wait, поэтому процесс init ждет, пока не выполнится вышеуказанный сценарий, а потом продолжает разбор inittab.
Уровни 0 и 6 – специальные. Они соответствуют останову и перезагрузке системы. В сущности, это удобные упрощения для действий, обратных загрузке на базовый уровень: все службы останавливаются, диски размонтируются. Соответствующие каталоги rc0.d и rc6.d будут состоять почти сплошь из ссылок вида K*, но как минимум один сценарий, killall, будет запущен с параметром start. Этот сценарий остановит все процессы, которые не были остановлены K-сценариями: программы пользователей, демоны, запущенные администратором вручную, и т. п. Строки остановки служб в сценарии выглядят так:
# Stop the Apache web server:
if [ -x /etc/rc.d/rc.httpd ]; then
/etc/rc.d/rc.httpd stop
fi
# Shut down the SSH server:
if [ -x /etc/rc.d/rc.sshd ]; then
/etc/rc.d/rc.sshd stop
fi
Остальные уровни никоим образом в ОС Linux не описаны, однако администратор может использовать их, определяя особый профиль работы системы.
Переход с уровня на уровень выполняется по команде init N, где N – номер уровня. Иногда для этого используют команду telinit N, которая является символической ссылкой на init. Узнать текущий уровень выполнения можно с помощью команды runlevel.
Отключение неиспользуемых служб в текущем сеансе производится администратором с помощью команды
<service> stop ,
где <service> – имя службы. Для полного исключения запуска ненужных служб в дальнейшем необходимо использовать утилиту chkconfig с соответствующими параметрами.
В дистрибутиве Slackware необходимо снять флаг исполнения с соответствующего файла в каталоге /etc/rc.d/ или закомментировать строки запуска в файлах типа rc.M для демонов, не имеющих собственных сценариев запуска. Также не следует забывать про файл /etc/rc.d/rc.local.
Некоторые сетевые демоны запускаются посредством супердемона inetd (xinetd). Демоны, запускаемые из inetd, могут быть отключены путём комментирования соответствующих строк в файле /etc/inetd.conf.
Например, служба SSH запускается своим собственным скриптом /etc/rc.d/rc.sshd. Такую службу можно отключить, просто лишая этот файл права на исполнение:
chmod –x /etc/rc.d/rc.sshd