- •В.В. Бакланов
- •Защитные механизмы
- •Операционной системы
- •Екатеринбург
- •Оглавление
- •Введение
- •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»
- •Библиографический список
3.3. Монтирование файловых систем
Большим преимуществом операционных систем UNIX/Linux является их способность «прозрачно» для пользователя работать с разнообразными файловыми системами. Эта возможность реализована с помощью многочисленных драйверов, «понимающих» архитектуру известных файловых систем и драйвера виртуальной файловой системы, которая их все объединяет. Перечень файловых систем, с которыми может работать ОС Linux, можно узнать из файла
/usr/src/linux/Documentation/filesystems/00-INDEX.
Монтированием (так дословно переведена на русский язык команда mount) называется операция подключения файловой системы к «дереву каталогов» работающей ОС Linux; в частности, это может быть файловая система внешнего устройства долговременной памяти. При монтировании содержимое файловой системы устройства дисковой памяти добавляется к существующему дереву каталогов в виде дополнительной ветви, «растущей» из точки монтирования. Монтирование – это привилегированная операция, доступная только суперпользователю. Любую известную ОС Linux файловую систему можно смонтировать при помощи утилиты mount. Это довольно сложная команда с большим числом параметров. В стандартном варианте она выглядит следующим образом:
mount -t type -o option <device> <dir> ,
где
-
type – тип монтируемой системы (ext2, ext3, msdos, vfat, ntfs, iso9660 и т. д.). Тип auto – это предоставление программе mount возможности автоматически определить монтируемую файловую систему
-
option – параметры монтирования, например ro – только чтение, rw – чтение и запись, remount,ro – перемонтирование в режиме для чтения, iocharset=koi8-r – указание используемой кодировки для правильного отображения имени файлов и каталогов, если текущей локалью является кодировка KOI8-R. Более подробно параметры монтирования будут перечислены при рассмотрении конфигурационного файла /etc/fstab,
-
<device> – имя специального файла устройства, которое идентифицирует диск с монтируемой файловой системой, например /dev/hda2 или /dev/fd0,
-
<dir> – имя каталога, к которому будет монтироваться файловая система (например, /mnt/floppy или /mnt/ntfs). Если в исходной файловой системе из точки монтирования выходили другие подкаталоги и файлы, то после монтирования они сделаются невидимыми – их «закроют» ветви примонтированной файловой системы. «Закрытые» файлы не уничтожаются – они вновь станут видимы после размонтирования. По этой причине в качестве точки монтирования рекомендуется использовать пустой каталог. В то же время администратор с помощью камуфляжного монтирования может скрывать от пользователей и потенциальных взломщиков существование отдельных каталогов. Файлы, открытые до такого монтирования, продолжают оставаться доступными открывшим их программам.
Например, команда
mount –t vfat –o iocharset=koi8-r /dev/sda1 /mnt/usb
предназначена для монтирования файловой системы FAT32 на устройстве полупроводниковой памяти USB-Flash к точке монтирования /mnt/usb с использованием кодировки KOI8-R для правильного отображения имен каталогов и файлов, при этом точка монтирования /mnt/usb должна существовать.
Команда монтирования гибкого магнитного диска может быть записана в упрощенной форме (в этом случае используются параметры команды по умолчанию)
mount /dev/fd0 /mnt/floppy
При монтировании файловых систем, в которых не предусмотрено прав доступа (например, FAT), утилита mount назначает владельца файловых объектов и права доступа к ним по умолчанию. Владельцем объявляется пользователь, производивший монтирование, а права доступа к файлам и каталогам устанавливаются в 0755.
Монтирование файловых систем пользователями производится на основе разрешений, записанных в текстовом конфигурационном файле утилиты mount /etc/fstab. Содержимое этого файла приведено на рис. 3.2 и представляет собой таблицу из шести столбцов.
dev/hda1 |
/mnt/ntfs |
ntfs |
defaults |
0 |
0 |
dev/hda2 |
/mnt/fat32 |
vfat |
defaults |
0 |
0 |
dev/hda3 |
swap |
swap |
defaults |
0 |
0 |
dev/hda4 |
/ |
ext2 |
defaults |
1 |
1 |
devpts |
/dev/pts |
devpts |
gid=5, mode=620 |
0 |
0 |
/proc |
/proc |
proc |
defaults |
0 |
0 |
/dev/fd0 |
/mnt/floppy |
msdos |
defaults, users, noauto |
0 |
0 |
/dev/hdc |
/mtt/cdrom |
iso9660 |
ro, user, noauto |
0 |
0 |
Рис. 3.2. Содержимое файла /etc/fstab
В первом столбце указывается дисковое (блочное) устройство, точнее раздел диска или диск целиком, на котором содержится файловая система, подлежащая монтированию. Типовые названия блочных устройств были приведены в предыдущем параграфе. Кроме блочных устройств в таблице присутствуют два псевдоустройства: файловая система /proc, рассмотренная в параграфе 2.5, и псевдотерминал devpts [3].
Второй столбец таблицы указывает точку (каталог) монтирования. Каталог к моменту монтирования должен существовать. Имена точкам монтирования обычно даются таким образом, чтобы они ассоциировались с конкретными устройствами (например, /mnt/floppy или /mnt/cdrom).
Третий столбец содержит тип файловой системы. Следует напомнить, что файл подкачки в системах Linux, идентифицируемый в таблице как swap, может размещаться на отдельном логическом разделе жесткого магнитного диска, отдельном диске или в файле; в случае его размещения в файле файловая система с файлом подкачки должна монтироваться до его подключения.
В четвертом столбце таблицы указываются параметры монтирования. Это те параметры, которые указываются после аргумента –о в командной строке утилиты mount :
-
ro – (read only) – файловая система монтируется только для чтения (обычно этот параметр указывается для привода чтения оптических дисков, а также для других устройств памяти, монтирование которых не должно сопровождаться записью, например при проведении криминалистических исследований),
-
rw – файловая система монтируется для чтения и записи (по умолчанию). При этом не следует забывать, что оптические диски CD-R/DVD-R по определению монтируются в режиме read only,
-
exec/noexec – разрешить или запретить запуск исполняемых файлов, расположенных в данной файловой системе. Таким образом, например, можно запретить запуск неизвестных и потенциально опасных программ из подключаемой файловой системы. Запрет noexec эквивалентен снятию права на исполнение для всех обычных файлов и защищает только от случайного запуска исполняемого файла. Стоит скопировать файл программы на другой носитель и установить для него право на исполнение – и программу можно запускать. Этот запрет также не действует на файлы сценариев, которые, как известно, можно запускать посредством указания их имени после имени командного интерпретатора, имея только право на чтение,
-
suid/nosuid – принимать во внимание или игнорировать дополнительные атрибуты SUID/SGID, позволяющие запуск исполняемых файлов из примонтированной файловой системы с правами владельца файла или его группы,
-
dev/nodev – разрешить или запретить использование на примонтированном разделе файлов специальных устройств,
-
nouser/user(s) – запретить или разрешить пользователям монтировать данную файловую систему. Параметр user указывает, что монтировать файловую систему может любой пользователь. Отличие параметров user и users заключается в правах на размонтирование устройства. Параметр user означает, что размонтировать устройство может только тот, кто его монтировал, а users дает права на размонтирование любому пользователю,
-
defaults – использовать параметры по умолчанию, что заменяет набор параметров rw, suid, dev, exec, auto, nouser. Если в четвертом столбце одновременно указаны параметры defaults и user(s), то значения параметров по умолчанию изменяются на noexec, nosuid и nodev. Утилита mount обрабатывает параметры слева направо, замещая ранее встреченные значения параметров значениями, указанными далее. Поэтому указание user перед defaults равносильно отмене первого параметра.
Пятый столбец таблицы может содержать 0 или 1. Единица разрешает производить резервное копирование данной файловой системы утилитой dump, а нуль – не разрешает.
Шестой столбец используется утилитой проверки файловых систем fsck (file system check). Если указан «0», то файловая система не проверяется, цифры «1» или «2» указывают очередность проверки.
Аналогичный формат таблицы монтирования используется еще в двух файлах: виртуальном /proc/mounts и реальном /etc/mtab. В эти файлы процесс mount записывает информацию об уже смонтированных файловых системах.
Создание и монтирование файла, содержащего в себе файловую систему (в Linux возможно и такое!) заключается в следующем:
-
с помощью утилиты dd создается файл требуемого объема (например, 10 Мб), состоящий из двоичных нулей:
dd if=/dev/zero of=/tmp/virt_disk1 bs=1M count=10;
-
на виртуальном диске создается файловая система (например, ext2fs):
mke2fs -F /tmp/virt_disk1;
-
создается точка монтирования (можно это сделать в том же каталоге /tmp):
mkdir /tmp/virt_fs;
-
с помощью устройства обратной связи /dev/loop0 монтируется виртуальный диск с созданной файловой системой ext2fs:
mount –t ext2 –o loop=/dev/loop0 /tmp/virt_disk1
/tmp/virt_fs.
Файл-образ диска, полученный путем копирования, монтируется также с указанием параметра –o loop=/dev/loop0 .
Прежде чем подключать (монтировать) файловую систему, следует проверить её целостность. Если файловая система не была отключена должным образом, при попытке подключить ее без проверки пользователю будет выдано сообщение о невозможности выполнить подключение и предложено воспользоваться утилитой проверки и восстановления файловой системы fsck (или e2fsck). Это справедливо для файловой системы ext2fs, в случае же наличия на исследуемом разделе файловой системы ext3fs ошибка будет исправлена с помощью журнала.
Порядок запуска утилиты при проверке:
e2fsck -fy /dev/hda7 ,
где f – принудительное выполнение проверки в случае, если файловая система этого не требует; y – работа без запросов пользователю.
Демонтируются файловые системы с помощью команды umount. Она записывается в двух вариантах:
umount <device>
или umount <dir>
Демонтирование всех файловых систем, перечисленных в файле /etc/fstab, можно произвести с помощью одной команды
umount -a
Если файловая система занята (открыты ее каталоги, запущены исполняемые файлы, открыты обычные файлы и др.), ее демонтировать невозможно – система сообщит об ошибке. Выяснить, какой процесс использует файловую систему, можно с помощью команды lsof +D <dir> (следует указать нужную точку монтирования).
Нельзя извлекать носители из приводов или отключать/отстыковывать съёмные устройства, если не предусмотрено механической блокировки процесса извлечения, до окончания процесса размонтирования. В зависимости от состояния, в котором находился процесс ввода/вывода файловой системы извлекаемого/отключаемого устройства, будет зависеть целостность данных этой файловой системы.
В случае, если пользователи имеют права доступа на чтение к соответствующим устройствам, то запрет на монтирование, предусмотренный в конфигурационном файле /etc/fstab, еще не гарантирует, что пользователи не сумеют использовать устройства для блочного копирования. Ни в каком монтировании подобные действия не нуждаются.