Запуск Java и Apache Felix в chroot jail окружении в Debian Lenny
Создание отдельного chroot окружения для Java и Apache Felix позволяет повысить безопасность сервера. Настройку chroot будем производить с помощью утилиты makejail:
Создаем директорию, в которой будет работать Java и Apache Felix.
Скачиваем свежий JDK и устанавливаем его, запустив бинарный файл в директории /var/flx — он будет распакован в директорию jdk1.6.0_xx.
Директорию с рабочим Apache Felix скопируем, например, в /var/flx/felix.
Создаем пользователя flx, от имени которого Apache Felix будет запускаться в chroot окружении:
Создаем скрипт /var/flx/felix-start.sh — он будет запускаться внутри chroot окружения и стартовать Java и Apache Felix:
Пока директория /var/flx выглядит так:
Меняем владельцев директорий и файлов в /var/flx:
В /etc/makejail/ создаем файл felix.py следующего содержания:
Запускаем утилиту makejail, указав созданный конфигурационный файл. makejail проверит все зависимости команд, перечисленных в testCommandsInsideJail и скопирует необходимые библиотеки в /var/flx:
Получаем предупреждение о том, что /proc придется примонтировать:
Не забываем проверить, чтобы в /var/flx/etc/passwd, /var/flx/etc/group и /var/flx/etc/shadow (если есть) не было записей других пользователей и групп!
Создаем tmp директорию:
Теперь /var/flx выглядит так:
Создаем 2 скрипта для запуска и остановки Apache Felix в chroot окружении:
/etc/felix-chroot-start.sh:
/etc/felix-chroot-stop.sh:
Вот и все. Запускаем /etc/felix-chroot-start.sh:
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:
Комментарии (4)
RSS свернуть / развернутьmakejail видать мощная утилитка!
Gangsta
yababay
Sergei_T
Sergei_T
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.