- •В.В. Бакланов
- •Защитные механизмы
- •Операционной системы
- •Екатеринбург
- •Оглавление
- •Введение
- •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»
- •Библиографический список
255 Heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 63 2104514 1052226 82 Linux swap
/dev/hda2 * 2104515 18892439 8393962+ 83 Linux
/dev/hda3 18892440 29382884 5245222+ c W95 FAT32 (LBA)
/dev/hda4 29382885 312576704 141596910 7 HPFS/NTFS
Disk /dev/sda: 750.1 GB, 750156374016 bytes
255 Heads, 63 sectors/track, 91201 cylinders, total 1465149168 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 63 1465127999 732563968+ 7 HPFS/NTFS
Disk /dev/sdb: 320.0 GB, 320072933376 bytes
255 Heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 63 625137344 312568641 7 HPFS/NTFS
Disk /dev/sdc: 258 MB, 258998272 bytes
16 Heads, 32 sectors/track, 988 cylinders, total 505856 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 * 32 505854 252911+ b W95 FAT32
Partition 1 has different physical/logical endings:
phys=(986, 15, 32) logical=(987, 15, 31)
Рис. 3.1. Информация, выводимая командой fdisk –lu
Выведенная информация нуждается в некотором объяснении. К системному блоку персонального компьютера подключены три жестких магнитных диска и один съемный носитель USB-Flash. Один жесткий диск подключен к IDE-интерфейсу, два других используют SATA-интерфейсы. Если судить по объему памяти, устройства sda и sdb, отображенные в листинге, предположительно являются жесткими дисками с SATA-интерфейсом, а sdc – носителем USB-Flash. Второй и третий жесткие диски, а также полупроводниковая память ассоциируются со SCSI-дисками и обозначаются соответственно.
Первый диск с IDE-интерфейсом имеет емкость в 160.0 Гб = = 160041885696 байтов. Его трехмерная логическая геометрия имеет размерность 19457 цилиндров, 255 головок и 63 сектора на дорожку, что в совокупности дает 312581808 сектора по 512 байтов.
Трехмерная логическая геометрия диска CHS (цилиндры, головки, сектора) не соответствует реальности. Действительно, можно ли представить, что внутри герметичного блока жесткого диска размещено 255 магнитных головок или, соответственно, 128 дисков? Чаще всего в корпусе гермоблока имеется всего два жестких диска и, соответственно, 4 магнитных головки. Количество секторов на дорожку также указано неверно; в различных пространственных зонах диска оно в зависимости от длины окружности дорожек находится в диапазоне от нескольких десятков до нескольких сотен секторов. Настоящая физическая геометрия диска известна только его контроллеру. Однако человек, не имея доступа внутрь гермоблока, видит дисковое пространство глазами операционной системы.
Обратим внимание на разделы IDE-диска. Таких разделов четыре (первичных), и они заняты различными файловыми системами. Одна логическая дорожка (63 сектора) зарезервирована, а первый сектор отведён под главную загрузочную запись (MBR). Первый раздел занят под виртуальную память (в Linux файл подкачки выделяется в отдельный раздел). Второй раздел занят файловой системой Linux (это может быть ext2fs, ext3fs либо reiserfs), а звездочка в столбце Boot указывает на то, что этот раздел является загрузочным. Третий раздел отведен под файловую систему FAT32, а четвертый – NTFS. Плюсы после количества блоков в разделах указывают на то, что раздел не кратен целому числу цилиндров.
Говоря о блочных устройствах, трудно обойти вниманием утилиты, предназначенные для контроля и установки параметров этих устройств. Одна из таких утилит называется hdparm и предназначается для контроля и настройки параметров накопителей с IDE и SATA интерфейсами.
С указанной утилитой рекомендуется [13] работать в однопользовательском режиме, в который можно перейти командой telinit 1. При отсутствии иных процессов, расходующих процессорное время, можно точнее оценить быстродействие устройств дисковой памяти. Так, информацию о быстродействии жесткого магнитного диска можно получить командой
hdparm –tT /dev/hda
или
hdparm –tT /dev/sda
Параметр –T тестирует всю подсистему кэширования дисковой памяти, включая процессор и разделы дисковой и оперативной памяти. Параметр -t оценивает скорость считывания данных без участия кэша. Для точной оценки команду следует запустить несколько раз, а показатели усреднить.
С помощью команды
hdparm /dev/hda
выводится информация о настройках жесткого диска, используемых по умолчанию. Обычно применяются самые безопасные, но далеко не оптимальные режимы. Оптимизировать параметры часто приходится на свой риск, особенно если необходимо копировать большие объемы данных. Оптимизация и контроль жестких магнитных дисков с интерфейсами SCSI производится с помощью аналогичной утилиты sdparm.
Достаточно эффективной защитой от несанкционированного использования внешних устройств долговременной памяти может стать установка запрета на доступ к файлу устройства, например, с помощью команды
chmod 640 /dev/fd0
Но и этого может оказаться недостаточно, если не исключить скрытых групповых прав. Так, например, в файле /etc/group существует несколько псевдогрупп, в которые по умолчанию включены все пользователи. Утилита useradd и некоторые ей подобные, используемые для создания новых учетных записей, берут данные из уже упомянутого конфигурационного файла /etc/login.defs (defs является сокращением от defaults). В этом файле можно найти любопытную строку, которая выглядит так:
CONSOLE_GROUPS floppy:audio:cdrom:video:plugdev
Это должно означать, что каждый из вновь зарегистрированных пользователей автоматически записывается в состав всех перечисленных дополнительных групп, о чем файл /etc/group нам ничего не сообщает. Одна из таких групп называется floppy. Проверив информацию о файле устройства /dev/floppy/0 с помощью команды ls –l или stat, мы узнаем, что владельцем накопителя на гибких магнитных дисках является root, а его группа под названием floppy имеет права на чтение и запись гибких магнитных дисков. Получается, что система по умолчанию предоставляет любому пользователю полные права на работу с ГМД, но эта информация в учетных записях пользователей не содержится. Аналогичные права предоставлены пользователям к устройству cdrom и динамически подключаемым устройствам, которые обозначены группой plugdev. Чтобы проверить свои подозрения, запросим с помощью команды ls –la информацию о файле устройства /dev/hdc, интерфейс которого обычно используется для подключения приводов CD/DVD, а также устройства /dev/sdc, которое на конкретно взятом компьютере (см. рис. 3.1) обозначает подключаемую полупроводниковую память USB-Flash:
brw-rw---- 1 root cdrom 22, 0 2008-11-14 14:40 /dev/hdc
brw-rw---- 1 root plugdev 8, 32 2008-11-14 14:44 /dev/sdc
Для предупреждения угрозы использования устройств из строки
CONSOLE_GROUPS floppy:audio:cdrom:video:plugdev
в файле /etc/login.defs необходимо удалить ненужные группы или полностью закомментировать эту строку.
Для решения некоторых задач в системе имеется несколько виртуальных устройств, которые не имеют аппаратных компонентов:
-
/dev/null – «нулевое» устройство, своеобразная «черная дыра», поглощающая направленный в нее поток данных. В этот файл можно только записывать,
-
/dev/zero – «рог изобилия», файл, из которого можно бесконечно читать одни двоичные нули,
-
/dev/random – устройство, генерирующее поток случайных чисел при активности пользовательского ввода. Движение мыши или нажатие нескольких клавиш на клавиатуре используется системой для генерации случайных двоичных чисел, представленных потоком байтов. Поэтому виртуальное устройство /dev/random может быть использовано как индикатор присутствия (активности) пользователя за компьютером,
-
/dev/loop – устройство обратной связи, позволяющее имитировать виртуальное блочное устройство (диск).
Путем комбинации двух виртуальных устройств можно создать процесс, в буквальном смысле переливающий «из пустого в порожнее». Это достигается с помощью любой из двух команд
od /dev/zero > /dev/null
od < /dev/zero > /dev/null
Подобные «процессы» могут изрядно нагрузить центральный процессор, и мы воспользуемся такой имитацией при наблюдении за процессами. Перенаправление в /dev/null также будет использовано при проведении лабораторных работ для виртуального копирования большого объема данных.
«Генератор» /dev/zero может быть с успехом использован для программной очистки долговременной памяти от остатков конфиденциальной информации. Команда может выглядеть так:
cat /dev/zero > /dev/hda7
Следует помнить, что после запуска такой команды восстановить удаленную информацию не удастся! Очистка дискового пространства с помощью «генератора нулей» производится довольно быстро, но для гарантированного удаления конфиденциальных данных необходимо каждую ячейку памяти многократно переписать случайной последовательностью битов. Для гарантированного удаления данных необходимо использовать утилиту shred.
Использование /dev/zero или /dev/random для затирания содержимого файла приведёт не только к его затиранию, но и увеличению его длины до исчерпания свободного дискового пространства файловой системы, в которой находится затираемый файл.
Устройство обратной связи /dev/loop служит для имитации блочного устройства, имеющего вид обычного файла. Далее в нем можно создать файловую систему и произвести ее монтирование или, если в нём уже есть файловая система, например файл-образ компакт-диска, произвести ее монтирование. Поскольку о монтировании устройств еще ничего не говорилось, применение /dev/loop будет рассмотрено ниже.