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

Форма входа

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

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


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


Новые статьи

Внутри Windows 7: как ра...
Lazy Linux: 10 важных пр...
Как продлить жизнь своем...
Windows 7 позволяет выпо...
Как сделать свои програм...

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

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

Облако тегов


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


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

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

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

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

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

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

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


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



Статистика

Онлайн всего: 5
Гостей: 5
Пользователей: 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)
Просмотров: 1251 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright Himik © 2024