- •В.В. Бакланов
- •Защитные механизмы
- •Операционной системы
- •Екатеринбург
- •Оглавление
- •Введение
- •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»
- •Библиографический список
1.2. Процедура регистрации и ее безопасность
После окончания загрузки операционной системы процесс init запускает несколько экземпляров процесса getty (get tty – получить терминал), обслуживающего физические консоли либо псевдотерминалы. О терминалах и терминальном режиме будет рассказано ниже. Действия этого процесса во многом определяются объявлением и значениями параметров в конфигурационном файле /etc/login.defs. Далее описываются действия, выполняемые программой по умолчанию.
Пользователь по приглашению процесса getty вводит свое регистрационное имя. Getty в свою очередь запускает дочерний процесс login, передавая ему имя учетной записи в качестве аргумента. Программа проверяет файл /etc/passwd на предмет наличия соответствующей учетной записи, но не информирует пользователя об ошибках. Сделано это, по-видимому, для того, чтобы не позволить злоумышленнику точно определить имена зарегистрированных пользователей и тем самым облегчить проникновение в систему. Если проверка идентификатора и пароля прошла неудачно, управление будет возвращено программе getty, которая вновь запросит регистрацию в консоли.
Поиск имен производится в первых полях учетных записей файла /etc/passwd до первого совпадения. Если введенное имя пользователя совпадает с учетным, а второе поле найденной записи окажется пустым, читаются идентификаторы UID и GID в третьем и четвертом полях, после чего аутентификация считается успешно завершенной. Login запускает процесс командной оболочки, указанный в последнем поле соответствующей строки файла /etc/passwd, и передает ей управление. Командный интерпретатор /bin/bash использует сценарии /etc/profile, .bash_profile, .bash_login, .profile в домашнем каталоге пользователя (если такие файлы существуют) и выводит предусмотренное настройками приветствие пользователю с приглашением для ввода команд. Обычно у носителя нулевого UID последним символом в строке приглашения является #, а для всех остальных пользователей выводится символ $. Если администратор считает этот признак демаскирующим, он может изменить строку приглашения командой
export PS1=...
либо переписать переменную окружения PS1 в сценарии /etc/profile или в одном из конфигурационных файлов ~/.bash_profile, ~/.bash_login, ~/.profile, ~/.bash_logout.
При совпадении имен и наличии во втором поле установленного признака пароля :х: программа login запрашивает у пользователя пароль. Если учетное имя не совпадает, либо во втором поле присутствует иной символ, либо пароль оказался неверным, пользователь извещается о некорректной попытке входа в систему. После некоторой паузы программа login вновь предложит посетителю зарегистрироваться. Количество повторов, а также тайм-аут на ввод пароля устанавливаются в файле /etc/login.defs. При исчерпании числа повторов посетителю необходимо перезагрузить операционную систему, однако на персональном компьютере с эмуляцией нескольких терминалов ничто не мешает ему комбинацией клавиш <Alt+Fn> переключиться в иную виртуальную консоль и продолжить попытки входа.
Вводимый пароль контрольными маркерами на экране не сопровождается, что заставляет пользователя быть внимательным и лишает случайного очевидца возможности узнать длину пароля. Последовательность символов пароля кратковременно фиксируется только в памяти процесса login, а клавиатурный буфер очищается. После завершения ввода и нажатия <Enter> вызывается функция криптопреобразования, а ее результат сравнивается с содержимым второго поля учетной записи, расположенной в файле /etc/shadow. При совпадении двух хэш-значений – вычисленного и эталонного – аутентификация считается успешно завершенной. Программа login вызывает командную оболочку и передает ей управление. Что характерно – при отсутствии в 7-м поле учетной записи имени командного интерпретатора он все равно будет загружен. Эксперименты показывают, что для успешной аутентификации учетная запись пользователя в /etc/passwd должна содержать как минимум первые четыре первых поля: символьный идентификатор, признак пароля, UID и GID, а в /etc/shadow – два первых поля.
Иногда в процессе отладки системы у администратора может возникнуть потребность временно запретить регистрацию новых пользователей. Это можно сделать, создавая файл /etc/nologin. Содержимое этого файла значения не имеет, он даже может быть пустым. Такой файл создается командой
touch /etc/nologin
Пока существует этот файл, ни один новый пользователь, кроме администратора, не сможет войти в систему. Как только необходимость запрета доступа пропадет, администратор должен удалить этот файл.
Результат будет зависеть от используемого загрузчика операционной системы и параметров, установленных в его конфигурационном файле. Так, описанный в [3, 13] доступ осуществляется в ходе стандартной загрузки компьютера с использованием штатного загрузчика LILO и конфигурационного файла lilo.conf. Приглашение к прерыванию загрузки пользователем предусмотрено в lilo.conf в параметре prompt. Приглашению к вводу команды выглядит так
LILO:
Во время тайм-аута необходимо успеть нажать любую клавишу. После этого система остановит загрузку и будет ожидать окончания ввода. Неверно введенный символ можно исправить. Далее следует ввести такую команду
linux init=/bin/bash
При этом вместо процесса /sbin/init запускается командная оболочка с полномочиями администратора. Значительная часть процессов еще не запущена, а файловая система доступна только для чтения. В таком режиме файлы с учетными записями модификации не подлежат. Поэтому далее в командной строке предлагается ввести следующую команду
mount –o remount,rw /
С ее помощью корневой каталог файловой системы перемонтируется в режиме для чтения и записи. Более полные сведения о возможностях монтирования файловых систем будут приведены ниже.
После этого можно редактировать файл паролей, например, с помощью редактора vi: