Смекни!
smekni.com

Исследование уровня безопасности операционной системы Linux (стр. 13 из 15)

Задача: произвести настройку комплексной защиты сервера с использованием расширенных атрибутов (в частности, с помощью атрибута immutable).

Реализация.

Для реализации поставленной задачи необходимо изначально определить, какие файлы в процессе работы могут быть изменены, а какие могут быть изменены только в специальном режиме, например, только в режиме профилактики или обновлении программного обеспечения. В данном случае специальный режим предполагает перевод системы в однопользовательский режим работы.

В общем случае, в обычных условиях содержимое следующих каталогов изменяться не должно, или может изменяться, но достаточно редко:

/boot /etc – в окончательно настроенной системе содержимое этих каталогов изменяться не должно. За редким исключением содержимое каталога /etc может меняться при перенастройке каких-либо программ или сервисов.

/bin – каталог содержит исполняемые файлы, которые могут быть изменены, удалены или добавлены только при обновлении программного обеспечения.

/sbin – в каталоге хранятся исполняемые файлы системных программ, большинство из которых доступно на выполнение только привилегированному пользователю и также не должно изменяться во время работы системы.

/lib – каталог системных библиотек, которые также могут быть изменены только при обновлении программных продуктов.

Следующие команды позволяют установить атрибут immutable для вышеперечисленных директорий и для всех файлов, находящихся в них.

[root@app /]# chattr –R +i /boot /etc /bin /sbin /lib

[root@app /]# lsattr

---i---------- ./boot

---i---------- ./etc

-------------- ./root

---i---------- ./bin

-------------- ./initrd

---i---------- ./lib

---i---------- ./sbin

Параметр –R как и в предыдущих примерах используется для рекурсивной установки атрибута для всех файлов и каталогов, расположенных ниже в иерархии.

Каталог /usr имеет свою собственную иерархию. В этой иерархии следующие каталоги должны иметь установленный флаг immutable:

/usr/bin /usr/sbin /usr/lib /usr/local/bin /usr/local/sbin /usr/local/lib – перечисленные каталоги имеют то же значение, что и одноименные каталоги корневой иерархии.

/usr/include /usr/local/include – оба каталога содержит заголовочные файлы для компилируемых программ. Заголовочные файлы не должны изменяться ни при каких условиях, ну разве только тогда, когда компьютер используется для разработки программного обеспечения и в заголовочные файлы вносятся изменения.

[root@app /]# chattr –R +i /usr/bin /usr/sbin /usr/lib /usr/include

[root@app /]# lsattr /usr

-------------- /usr/lost+found

---i---------- /usr/bin

---i---------- /usr/lib

-------------- /usr/libexec

---i---------- /usr/sbin

---i---------- /usr/include

-------------- /usr/local

---i---------- /usr/src

В завершение всех операций можно выполнить программу lcap с параметрами CAP_LINUX_IMMUTABLE и CAP_SYS_RAWIO:

[root@app /]# lcap CAP_LINUX_IMMUTABLE

[root@app /]# lcap CAP_SYS_RAWIO

Также необходимо установить запуск этой команды в стартовые сценарии, чтобы они выполнялись при каждой загрузке системы.

Приведенный пример, опять же, является не всегда применимым, все зависит от конкретной конфигурации системы и конкретных условий ее эксплуатации.

ПРИМЕР 4.

Исходные данные: ОС Linux RedHat 7.3 без графической оболочки. Назначение - сервер приложений. Программное обеспечение – ядро версии 2.4.20, собранное с поддержкой пользовательских квот, пакет quota-3.11. Для пользовательских каталогов выделен отдельный раздел /dev/hda3 объемом 25 Гбайт, смонтированный в директории /home.

Задача: организовать разделение дискового пространства между пользователями с использованием механизма квот. Каждому пользователю необходимо выделить по 10 Мбайт дискового пространства с максимальным количеством возможных файлов – 1000.

Реализация.

Пользовательские квоты распространяются на отдельный раздел жесткого диска и активизируются при загрузке системы. Для включения поддержки квот необходимо в файле /etc/fstab для раздела /home добавить параметр usrquota или grpquota, или оба этих параметра, если нужна поддержка квоты для пользователей и групп одновременно. В данном случае для реализации поставленной задачи необходим только параметр usrquota.

Строка файла /etc/fstab, относящаяся к разделу /home, после изменения может иметь следующий вид:

/dev/hda3 /home ext2 default,usrquota 1 2

Поскольку версии ядер начиная с ветки 2.4 поддерживают новый формат пользовательских квот, который обладает некоторыми преимуществами перед старой версией, использование новой версии будет намного целесообразнее. Вся последующая настройка производится с этим учетом.

Для активации пользовательских квот необходимо перезагрузить систему. При загрузке необходимо выполнить проверку квотируемого раздела, что можно сделать запуском программы quotacheck, а также включить механизм квот выполнением программы quotaon. Эти обе программы имеют множество параметров командной строки, о которых можно узнать из man-руководств, входящих в пакет quota. Стандартная строка запуска этих программ, которая подходит для большинства систем, может иметь вид:

quotacheck –aug

quotaon –aug

Параметр командной строки –a сообщает программе, что необходимо выполнить проверку всех файловых систем, перечисленных в файле fstab, на которых включена поддержка квот, и которые не являются файловыми системами NFS. Параметр –u указывает выполнить проверку квот для пользователей на разделах, перечисленных в файле /etc/mtab. Файл /etc/mtab модифицируется при монтировании и размонтировании любой файловой системы и содержит все файловые системы, смонтированные на текущий момент. Параметр –g выполняет ту же функцию, что и параметр –u, но только для групп. Последний параметр не имеет значения, если квота включена только для пользователей, но, чтобы в дальнейшем при изменении конфигурации не возникало проблем, рекомендую добавлять этот параметр.

Желательно сделать так, чтобы механизм квот активировался сразу после монтирования файловых систем. Монтирование файловых систем при запуске Linux RedHat выполняется в файле /etc/rc.d/init.d/rc.sysinit. В том же файле сразу после монтирования следует код, который запускает программы quotacheck и quoaton с указанными параметрами, если они присутствуют в системе. Следовательно, для Linux RedHat добавлять код запуска программ не нужно, поскольку он уже присутствует по умолчанию. Для других версий ОС Linux этот код, возможно, придется добавлять вручную.

Во время загрузки системы программа quotacheck выполнит проверку файловых систем с включенными квотами на наличие файлов квот и, если файлы отсутствуют, quotacheck создаст их в корневом каталоге этой файловой системы. В данном случае в каталоге /home появится файл aquota.user, в котором будет храниться информация о пользовательских квотах.

Далее, используя программу setquota, необходимо выполнить настройку квот для каждого пользователя, имеющего домашний каталог в разделе /home. Это можно сделать командой:

[root@app /]# setquota –u <имя_пользователя> 10240 0 1000 0 /dev/hda3

Приведенная команда установит ограничение дискового пространства в 10 Мбайт с максимальным количеством возможных файлов – 1000 для указанного пользователя. Для пользователя anna эта команда будет иметь вид:

[root@app /]# setquota –u anna 10240 0 1000 0 /dev/hda3

Если квота остальных пользователей должна быть идентична приведенной, что как раз и требуется для реализации, квоту пользователя anna можно использовать как шаблон. Далее при создании квоты для пользователя igor параметры квотирования пользователя anna просто копируются:

[root@app /]# setquota –u –p anna igor /dev/hda3

В результате выполнения команды пользователь igor получает те же настройки квоты, что и пользователь anna, в данном случае ему выделяется 10 Мбайт на хранение 1000 файлов. Вышеприведенную команду необходимо выполнить для всех пользователей системы.

Просмотр сделанных настроек позволяет выполнить программа repquota. Вызов этой программы с параметрами –a выводит достаточно удобочитаемый подробный отчет по всем файловым системам с включенной поддержкой квот.

[root@app /]# repquota -a

*** Report for user quotas on device /dev/hda3

Block grace time: 00:00; Inode grace time: 00:00

Block limits File limits

User used soft hard grace used soft hard grace

----------------------------------------------------------------

...

anna -- 4 2097152 0 1 0 0

igor -- 4 2097152 0 1 0 0

...

Для обеспечения надежности работы механизма квот, необходимо время от времени производить проверку целостности файла aquota.user на предмет наличия ошибок. Для этой цели можно использовать программу-планировщик cron, которая является стандартной практически для всех версий ОС Linux. На момент проверки файловой системы рекомендуется отключить поддержку механизма квот для этой файловой системы во избежание повреждений. Для этого перед запуском quotacheck необходимо выполнить программу quotaoff. Выполнение указанной последовательности можно реализовать, создав отдельный исполняемый файл, например /usr/sbin/chkquota, который может иметь следующее содержание:

#!/bin/bash

# Turn off quotas

quotaoff –aug

# Check quotas

quotacheck –aug

# Turn on quotas

quotaon –aug

Тогда строка запуска проверки квот в конфигурационном файле /etc/crontab программы cron может выглядеть следующим образом:

0 3 * * 0 root /usr/sbin/chkquota

Эта конфигурация позволяет выполнять проверку квот каждое воскресенье в три часа ночи. Для более детального ознакомления с форматом файла /etc/crontab существуют man-руководства, включенные в пакет cron.

ПРИМЕР 5.

Исходные данные: ОС Linux RedHat 7.3 без графической оболочки. Назначение - сервер приложений. Программное обеспечение – библиотека pam-0.75-32.

Задача: настроить ограничения ресурсов, используемых в процессе работы, для пользователей группы users. Необходимо ограничить количество одновременно запущенных процессов до 20, количество одновременно открытых файлов до 30 и запретить создание каких-либо файлов ядра.

Реализация.

Ограничением ресурсов занимается модуль pam_limits. Этот модуль использует файл конфигурации /etc/security/limits.conf, в котором и задаются необходимые параметры ограничения. Файл состоит из строк, каждая из которых определяет ограничение на определенный вид ресурса. Формат строки следующий: