Показать сообщение отдельно
Старый 30.10.2009, 19:16 Вверх   #2
Старший модератор
 
Аватар для Ghost
Ghost вне форума
Доп. информация
По умолчанию

Вот еще статья:Создание chroot окружения в Fedora с помощью yum
Большинство современных linux-дистрибутивов поставляется с различными технологиями, направленными на повышение безопасности. Среди них есть например: SELinux, AppArmor, ExecShield, Iptables. также делает систему более безопасной. Тем не менее, хакеры все-же могут найти способы обойти вышеописанные методы защиты.

Чтобы свести к минимуму вероятность того, что взлом какой-то одной технологии или программы приведет к полному взлому всей системы, приложения могут быть запущены в так называемом chroot окружении. Это изолированное окружение, которое не имеет доступа к основной системе и содержит минимальный набор исполняемых файлов и библиотек, которые необходимы для работы приложения.

Существует 2 варианта chroot-окружения:
  1. Полное изолированное окружение для приложения, окружение содержит в себе все пакеты, от которых зависит приложение.
  2. Частичная изоляция приложения, окружение включает в себя только базовый набор библиотек, необходимых для работы приложения.

В этой статье будет показано как создать полную изоляцию приложения с помощью yum. Создание chroot окружения с помощью yum


При полной изоляции приложения необходимо установить пакет приложения и все его зависимости. Это довольно легко сделать в таких системах как Fedora, CentOS и Redhat linux, так как утилиты rpm и yum позволяют устанавливать пакеты, используя альтернативный корневой каталог. Этот каталог будет использоваться в качестве корневой файловой системы и взломав приложение, хакеры смогут получить доступ только к файлам данного каталога.

Чтобы создать полную изоляцию, например сервера Apache (httpd), сначала мы должны создать базу данных RPM пакетов в нашем новом каталоге (в этой статье мы будем использовать каталог /chroot/webapp1):
$ mkdir -p /chroot/webapp1/var/lib/rpm
$ rpm --root /chroot/webapp1 --initdbПервая команда создаст директории для базы данных RPM пакетов, вторая — проинициализирует базу данных. После этого мы можем загрузить релиз-пакет и установить его, используя команды:

$ yumdownloader --destdir=/var/tmp fedora-release $ cd /var/tmp $ rpm --root /chroot/webapp1 -ivh --nodeps fedora-release*rpm
Если вы используете не Fedora, а CentOS или RHEL, вы должны использовать релиз-пакеты этих систем. Если установка прошла нормально, мы можем установить httpd, использую флаг "- installroot" для установки его в нашу директорию:
$ yum --installroot=/chroot/webapp1 -y install httpdПосле установки ваша chroot-директория должна иметь структуру, аналогичную корневой файловой системе:
$ cd /chroot/webapp1
$ ls -la
total 84
drwxr-xr-x 21 root root 4096 2009-08-08 09:44 .
drwxrwxrwt. 3 root root 4096 2009-08-08 09:40 ..
drwxr-xr-x 2 root root 4096 2009-08-08 09:45 bin
drwxr-xr-x 3 root root 4096 2009-08-08 09:45 boot
drwxr-xr-x 2 root root 4096 2009-08-08 09:44 dev
drwxr-xr-x 46 root root 4096 2009-08-08 09:45 etc
drwxr-xr-x 2 root root 4096 2009-03-04 08:13 home
drwxr-xr-x 7 root root 4096 2009-08-08 09:45 lib
drwxr-xr-x 5 root root 4096 2009-08-08 09:45 lib64
drwxr-xr-x 2 root root 4096 2009-03-04 08:13 media
drwxr-xr-x 2 root root 4096 2009-03-04 08:13 mnt
drwxr-xr-x 2 root root 4096 2009-03-04 08:13 opt
dr-xr-xr-x 2 root root 4096 2009-03-04 08:13 proc
drwxr-x--- 2 root root 4096 2009-03-04 08:13 root
drwxr-xr-x 2 root root 4096 2009-08-08 09:45 sbin
drwxr-xr-x 2 root root 4096 2009-03-04 08:13 selinux
drwxr-xr-x 2 root root 4096 2009-03-04 08:13 srv
drwxr-xr-x 2 root root 4096 2009-03-04 08:13 sys
drwxrwxrwt 2 root root 4096 2009-08-08 09:45 tmp
drwxr-xr-x 14 root root 4096 2009-08-08 09:45 usr
drwxr-xr-x 18 root root 4096 2009-08-08 09:45 var

Chroot-окружение будет содержать все необходимое для запуска приложений, но перед этим нужно еще кое-что настроить. Для запуска приложений в chroot-окружении вы можете запустить команду chroot, передав ей скрипт инициализации или просто сам исполняемый файл:
$ chroot /chroot/webapp1 /usr/sbin/apachectl start
$ ps auxww | grep [h]ttpd
root 2365 0.2 0.0 171536 3732 ? Ss 09:51 0:00 /usr/sbin/httpd -k start
apache 2366 0.0 0.0 171536 2464 ? S 09:51 0:00 /usr/sbin/httpd -k start
apache 2367 0.0 0.0 171536 2464 ? S 09:51 0:00 /usr/sbin/httpd -k start
apache 2368 0.0 0.0 171536 2464 ? S 09:51 0:00 /usr/sbin/httpd -k start
apache 2369 0.0 0.0 171536 2464 ? S 09:51 0:00 /usr/sbin/httpd -k start
apache 2370 0.0 0.0 171536 2464 ? S 09:51 0:00 /usr/sbin/httpd -k start
apache 2371 0.0 0.0 171536 2464 ? S 09:51 0:00 /usr/sbin/httpd -k start
apache 2372 0.0 0.0 171536 2464 ? S 09:51 0:00 /usr/sbin/httpd -k start
apache 2373 0.0 0.0 171536 2464 ? S 09:51 0:00 /usr/sbin/httpd -k start


Чтобы удостовериться что приложение использует chroot окружение, которое мы настроили, можно запустить утилиту pwdx, передав ей PID запущенного httpd процесса:

$ pwdx 2365 2365: /chroot/webapp1
Если приложение успешно стартовало, вы сможете подключиться к нему для проверки его работы. Chroot-окружение, которое мы создали, требует периодического обновления как для повышения его безопасности, так и для минимизации количества пакетов, установленных в нем.
Заключение

В данной статье показано как создать полную изоляцию корневой директории, используя chroot окружение. Хоть это и не самый безопасный способ изолировать приложение, однако это лучший компромисс между очень долгой и нудной настройкой окружений и максимальной безопасностью.
  Ответить с цитированием
 
Время генерации страницы 0.06059 секунды с 10 запросами