Приветствую Вас Прохожий | Получать RSS-новости | Главная | Регистрация | Вход |
Меню сайта

Форма входа

Категория каталога
Linux [51]

Новое на сайте
Новые файлы


Случайные программы


Новые статьи

Анатомия загружаемых мод...
10 полезных возможностей...
Что делать если Windows ...
Как настроить bluetooth ...
Установка приложений KDE...

Последние новости

«Спорту» осталось недолг...
Eutelsat W7. 36E Радуга-...
Astra 1H. 19.2E
Профилактика на спутнике...
Радуга-Интернет на Eutel...

Облако тегов


Друзья сайта
Дискуссионный клуб
Шаблоны для uCoz, скрипты для uCoz  Желтые страницы по спутниковому и кабельному ТВ


Для проживающих в городе Иваново:

Ремонт и настройка вашего компьютера
Установка программ
Защита. Удаление вирусов

Оцифровка видео и аудио материалов с возможностью компьютерного монтажа

Создание небольших сайтов, персональных страничек

Монтаж и настройка спутникового Интернета
и телевидения...

и прочие компьютерные услуги...

По всем вопросам обращаться по тел. 89605108897


Счетчики
Были сегодня:



Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Про Linux » Linux

Повышение безопасности с помощью многоэкземплярности директорий

          Если вы заинтересованы в защите от несанкционированного доступа к совместно используемым директориям (например, /tmp или /var/tmp), которые доступны на запись "всему миру", вам могут помочь подключаемые модули аутентификации Linux® (PAM). При входе пользователей в систему модуль pam_namespace создаёт отдельное пространство имён. Это разделение выполняется на уровне операционной системы Linux, в результате пользователи оказываются защищены от нескольких типов атак. Эта статья предназначена для системных администраторов Linux. В ней показано, как с помощью PAM подключить механизм пространств имён.

         Для повышения безопасности разумно использовать несколько способов защиты ("defense in depth" - глубоко эшелонированная защита). Таким образом, если один из способов защиты взломан, другой останется в рабочем состоянии и предотвратит дальнейшее вторжение. В этой статье описан способ, который позволит вам добавить ещё один уровень в вашу стратегию безопасности: использование PAM для включения механизма многоэкземплярности (polyinstantiation) совместно используемых директорий, доступных на запись "всему миру". Это означает, что для каждого пользователя создаётся новый экземпляр директории (например, /tmp).
 
Как работают PAM и многоэкземплярность

 

Во время входа в систему PAM создаёт (в пределах системного экземпляра директории /tmp) "многоэкземплярную" личную директорию /tmp; эта переадресация прозрачна для пользователя, входящего в систему. Пользователь видит "стандартную" директорию /tmp и имеет право на её чтение и запись как обычно. Пользователь не видит ни пространств /tmp других пользователей (включая пользователя root), ни настоящей файловой системы /tmp.

"Многоэкземплярные" пользовательские директории не могут быть скрыты или защищены от пользователя root. Если вы заинтересованы в таком уровне защиты, вам может помочь SELinux. Примеры конфигураций, приведённые в этой статье, должны работать независимо от того, включили вы SELinux или нет.

 

Включение механизма многоэкземплярности

 

В этом разделе показано, как включить многоэкземплярность директории /tmp и /var/tmp для пользователей вашей системы. Также вы найдёте здесь описание дополнительных настроек, необходимых для корректной работы X Windows и графического менеджера экрана. В этой статье я использовал дистрибутив Red Hat Enterprise Linux 5.1 (RHEL 5.1), но вы можете использовать описанные здесь процедуры в любом дистрибутиве Linux, который имеет в своём составе модуль pam_namespace.

 

Первым делом мы отредактируем файл namespace.conf.

 

Редактирование файла namespace.conf

 

Первый файл, который нужно отредактировать - /etc/security/namespace.conf. В нём хранятся настройки модуля pam_namespace. Перечислите в этом файле директории, которые PAM должен сделать "многоэкземплярными" при входе в систему. Несколько закомментированных примеров приведены в файле, входящем в состав PAM. Чтобы посмотреть детальное руководство, выполните команду man namespace.conf. Синтаксис каждой строки в этом файле следующий - polydir instance_prefix method list_of_uids.

 

Вот что означают вкратце эти переменные:

polydir - полное имя директории, которую нужно сделать "многоэкземплярной".

instance_prefix - базовая директория для новой "многоэкземплярной" пользовательской директории.

method может принимать значения: user, level, или context.

list_of_uids - список пользователей, директории которых PAM НЕ будет делать "многоэкземплярными".

В этом примере мы не используем SELinux, таким образом, вы должны указать для переменной method значение user. В пределах конфигурационного файла (при необходимости) вы можете использовать переменные $USER и $HOME.

Листинг 1 создаёт индивидуальные экземпляры пространств имён /tmp и /var/tmp для каждого пользователя в системе, за исключением пользователей root и adm.

 

Листинг 1. /etc/security/namespace.conf                

#$HOME $HOME/$USER.inst/ user root,adm

/tmp /tmp/tmp-inst/ user root,adm

/var/tmp /var/tmp/tmp-inst/ user root,adm

 

 

Директории /tmp и /var/tmp не обязательно должны располагаться на разных файловых системах; они могут быть расположены на одной файловой системе. Директории /tmp/tmp-inst и /var/tmp/tmp-inst необходимо создать один раз, вручную, с режимом доступа 000. Вы не сможете войти в систему, если эти директории созданы неправильно.

Чтобы создать эти директории, выполните следующие команды как пользователь root:

# mkdir /tmp/tmp-inst

# mkdir /var/tmp/tmp-inst

# chown root:root /tmp/tmp-inst /var/tmp/tmp-inst

# chmod 000 /tmp/tmp-inst /var/tmp/tmp-inst

 

Редактирование настроек PAM

 

Далее, отредактируйте конфигурационные файлы PAM, добавив pam_namespace в список требуемых (required) модулей, которые будут выполнены при входе в систему с консоли или по SSH. Добавьте модуль pam_namespace.so в последнюю строку файлов /etc/pam.d/login и /etc/pam.d/sshd. Куда в файлах /etc/pam.d/login и /etc/pam.d/sshd, нужно добавить модуль, показано в листингах 2 и 3 соответственно:

 

Листинг 2. Добавление модуля PAM в файл /etc/pam.d/login               

#%PAM-1.0

auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so

auth include system-auth

account required pam_nologin.so

account include system-auth

password include system-auth

# pam_selinux.so close should be the first session rule

session required pam_selinux.so close

session include system-auth

session required pam_loginuid.so

#

session optional pam_console.so

# pam_selinux.so open should only be followed by sessions to be executed in the

  user context

session required pam_selinux.so open

session optional pam_keyinit.so force revoke

# Polyinstantiation:

session required pam_namespace.so

           

Листинг 3. Добавление модуля PAM в файл /etc/pam.d/sshd               

#%PAM-1.0

auth include system-auth

account required pam_nologin.so

account include system-auth

password include system-auth

session optional pam_keyinit.so force revoke

session include system-auth

session required pam_loginuid.so

# Polyinstantiation:

session required pam_namespace.so

           

Запуск X Windows

 

Из-за особенностей использования директорий для временных файлов системой X Windows, у пользователей с "многоэкземплярной" директорией /tmp может не работать графический вход в систему. PAM выполняет содержимое файла /etc/security/namespace.init во время входа в систему, если модуль pam_namespace указан в любом из файлов директории /etc/pam.d. Используйте этот файл для внесения необходимых изменений, которые позволят вам корректно запустить X Windows. Я немного изменил файл namespace.init, входящий по умолчанию в дистрибутив RHEL 5.1, как показано в листинге 4.

 

Листинг 4. Обеспечение возможности корректного запуска X Windows               

if [ $1 = /tmp ]; then

        if [ ! -f /.tmp/.X11-unix ]; then

                mkdir -p /.tmp/.X11-unix

        fi

        mount --bind /tmp/.X11-unix /.tmp/.X11-unix

        [ -f /tmp/.X0-lock ] && cp -fp -- /tmp/.X0-lock "$2/.X0-lock"

        mkdir -p -- "$2/.X11-unix"

        ln -fs -- /.tmp/.X11-unix/X0 "$2/.X11-unix/X0"

fi

exit 0

 

Настройка менеджера экрана Gnome Display Manager

 

Настройка менеджера экрана Gnome Display Manager (GDM) проста. Добавьте модуль pam_namespace.so в список требуемых (required) модулей в файле /etc/pam.d/gdm. Пример приведён в листинге 5.

 

Листинг 5. Настройка менеджера экрана GDM               

#%PAM-1.0

auth required pam_env.so

auth include system-auth

account required pam_nologin.so

account include system-auth

password include system-auth

session optional pam_keyinit.so force revoke

session include system-auth

session required pam_loginuid.so

session optional pam_console.so

# Polyinstantiation:

session required pam_namespace.so

           

Если вместо менеджера экрана GDM вы используете X Display Manager (XDM), таким же образом измените файл /etc/pam.d/xdm. Теперь директории /tmp и /var/tmp будут "многоэкземплярными" как при входе в систему с консоли, так и при графическом входе.

 

Окончание: Разрешаем ошибки

 

Если при работе модуля pam_namespace.so PAM встретит ошибку, попытки пользователя войти в систему потерпят неудачу. Пока вы не убедитесь, что всё работает, так как было запланировано - разрешите вход в систему даже в случае возникновения ошибок. Чтобы включить опцию ignore_config_error, добавьте её в конец каждого файла, содержащего модуль pam_namespace.so, в директории /etc/pam.d.

Например, отредактируйте в файле /etc/pam.d/login строку, содержащую модуль pam_namespace.so, следующим образом:

session required pam_namespace.so ignore_config_error

 

Полный список опций имеется в руководстве к pam_namespace. Проверьте файл /var/log/secure на наличие записей об ошибках после того, как пользователь войдёт в систему. Как только вы убедитесь, что PAM правильно настроен, удалите опцию ignore_config_error.

Окончание: Результаты

 

После того как вы отредактировали и сохранили конфигурационные файлы, выберите учётную запись пользователя без привилегий root для тестирования. Завершите все сеансы работы с системой этого пользователя. Снова войдите в систему. Для этого пользователя будут созданы новые "многоэкземплярные" директории /tmp и /var/tmp. Как выглядит директория /tmp с точки зрения системы и с точки зрения пользователя robb, показано в листингах 6 и 7.

 

Листинг 6. Консольная сессия с точки зрения пользователя               

[robb@testbox tmp]$ cd /tmp

[robb@testbox tmp]$ touch foo

[robb@testbox tmp]$ ls

foo

 

Листинг 7. Консольная сессия с точки зрения системы (пользователя root)               

[root@testbox ~]# ls /tmp

tmp-inst

[root@testbox ~]# ls /tmp/tmp-inst/

robb

[root@testbox ~]# ls /tmp/tmp-inst/robb/

foo

 

Благодаря тому, что задействован механизм многоэкземплярности, директория /tmp пользователя robb изолирована в отдельной поддиректории директории /tmp/tmp-inst/; robb не может видеть системную директорию /tmp или файлы внутри неё.

 

Заключение

 

Несмотря на то, что многоэкземплярность не защищает от всех видов атак, это полезное дополнение к вашему набору инструментов, обеспечивающих безопасность, которое к тому же легко настраивается. Вы можете смело экспериментировать с "многоэкземплярностью" других директорий, например, /home. С опцией ignore_config_error ошибки "не смертельны", но не забудьте удалить эту опцию, как только вы закончите тестирование вашей конфигурации.


Источник: http://www.ibm.com
Категория: Linux | Добавил: Tana (16.07.2008)
Просмотров: 1277 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright Himik © 2025 Хостинг от uCoz