Запуск Java и Apache Felix в chroot jail окружении в Debian Lenny

Создание отдельного chroot окружения для Java и Apache Felix позволяет повысить безопасность сервера. Настройку chroot будем производить с помощью утилиты makejail:

apt-get install makejail


Создаем директорию, в которой будет работать Java и Apache Felix.

mkdir /var/flx


Скачиваем свежий JDK и устанавливаем его, запустив бинарный файл в директории /var/flx — он будет распакован в директорию jdk1.6.0_xx.

Директорию с рабочим Apache Felix скопируем, например, в /var/flx/felix.

Создаем пользователя flx, от имени которого Apache Felix будет запускаться в chroot окружении:

adduser --home /var/flx --no-create-home --system --group flx


Создаем скрипт /var/flx/felix-start.sh — он будет запускаться внутри chroot окружения и стартовать Java и Apache Felix:

# !/bin/sh
cd /felix
/jdk1.6.0_18/bin/java -jar ./bin/felix.jar


Пока директория /var/flx выглядит так:

jdk1.6.0_18
felix
felix-start.sh


Меняем владельцев директорий и файлов в /var/flx:

chown root:root -R /var/flx
chown flx:flx /var/flx
chown flx:flx -R /var/flx/felix
chown flx:flx /var/flx/felix-start.sh
chmod 750 /var/flx/
chmod 750 /var/flx/felix
chmod 750 /var/flx/felix-start.sh


В /etc/makejail/ создаем файл felix.py следующего содержания:

chroot="/var/flx"
testCommandsInsideJail=['sh', 'cd', '/var/flx/jdk1.6.0_18/bin/java']

users=["flx"]
groups=["flx"]


Запускаем утилиту makejail, указав созданный конфигурационный файл. makejail проверит все зависимости команд, перечисленных в testCommandsInsideJail и скопирует необходимые библиотеки в /var/flx:

makejail /etc/makejail/felix.py


Получаем предупреждение о том, что /proc придется примонтировать:

WARNING:
   You'll need the filesystem procfs mounted as /var/flx/proc
   It's mounted now, you can mount it again for example before starting the daemon with :
   mount -t proc proc /var/flx/proc


Не забываем проверить, чтобы в /var/flx/etc/passwd, /var/flx/etc/group и /var/flx/etc/shadow (если есть) не было записей других пользователей и групп!

Создаем tmp директорию:

mkdir /var/flx/tmp
chown flx:flx /var/flx/tmp


Теперь /var/flx выглядит так:

drwxr-xr-x  2 root root 4096 Дек  9 18:56 bin
drwxr-xr-x  2 root root 4096 Дек  9 18:56 dev
drwxr-xr-x  2 root root 4096 Дек  9 19:10 etc
drwxr-x---  7 flx  flx  4096 Дек  9 19:12 felix
-rwxr-x---  1 flx  flx    63 Дек  9 19:08 felix-start.sh
drwxr-xr-x 10 root root 4096 Дек  9 16:39 jdk1.6.0_18
drwxr-xr-x  4 root root 4096 Дек  9 18:57 lib
dr-xr-xr-x  2 root root 4096 Дек  9 18:56 proc
drwxr-xr-x  2 root root 4096 Дек  9 18:57 sbin
drwxr-xr-x  2 root root 4096 Сен 16  2008 selinux
drwxr-xr-x  3 root root 4096 Дек  9 18:56 sys
drwxr-xr-x  3 flx  flx  4096 Дек  9 19:06 tmp
drwxr-xr-x  4 root root 4096 Дек  9 18:56 usr
drwxr-xr-x  3 root root 4096 Дек  9 18:56 var


Создаем 2 скрипта для запуска и остановки Apache Felix в chroot окружении:

/etc/felix-chroot-start.sh:

# !/bin/sh
mount -t proc proc /var/flx/proc
start-stop-daemon --start --chroot /var/flx --chuid flx:flx --exec felix-start.sh &


/etc/felix-chroot-stop.sh:

# !/bin/sh
killall felix-start.sh
killall java -u flx
umount /var/flx/proc


chmod 750 /etc/felix-chroot-start.sh /etc/felix-chroot-stop.sh


Вот и все. Запускаем /etc/felix-chroot-start.sh:

  • +3
  • 09 декабря 2009, 19:31
  • Sergei_T

Комментарии (4)

RSS свернуть / развернуть
+
0
Отличный развернутый манулал!
makejail видать мощная утилитка!
avatar

Gangsta

  • 09 декабря 2009, 20:35
+
+1
Очень толковое руководство по созданию chroot. Между прочим, найти детальные и понятные материалы на эту тему в сети довольно трудно. Большое спасибо. Ну и за Felix само собой .
avatar

yababay

  • 09 декабря 2009, 21:22
+
0
Я старался
avatar

Sergei_T

  • 09 декабря 2009, 23:28
+
0
Скоро будет еще и шелл
avatar

Sergei_T

  • 09 декабря 2009, 23:35

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.