Создание jail-окружения на виртуальном зашифрованном диске

Скачать скрипты

Без предисловий. Кому надо, тот поймёт, кто не поймёт зачем -
тому не надо. Предлагаю набор скриптов, создающий зашифрованную
geli файловую систему, с FreeBSD внутри.

Итак, что из себя представляет структура каталогов:

[11:03] u@net13:~> sudo ls -R /root/.world/
crwrld_crt crwrld_mnt crwrld_umnt
crwrld.conf dist mnt world.image

/root/.world/dist:
.version base.tar src.tar

/root/.world/mnt:


Где crwrld_* - скрипты для создания, монтирования и размонтирования
системы, dist - каталог с дистрибутивом системы, mnt - точка монтирования,
world.image - файл, содержащий зашифрованную файловую систему.

crwrld.conf - содержит параметры для скриптов и приведён ниже.

# Размер диска для системы в МБ
# используется только при создании системы
CRWRLD_IMAGE_SIZE="16384"

# Каталог с дистрибутивом FreeBSD,
# а именно с base.tar и src.tar
CRWRLD_FREEBSD_DIST="/root/.world/dist"

# Имя файла с базовой системой
CRWRLD_FREEBSD_DIST_BASE="base.tar"

# Имя файла с исходниками
CRWRLD_FREEBSD_DIST_SRC="src.tar"

# Точка монтирования
CRWRLD_MPOINT="/root/.world/mnt"

# Файл с образом системы. Это будет
# зашифрованный образ диска
CRWRLD_FS_IMAGE="/root/.world/world.image"

# Используемый сетевой интерфейс
CRWRLD_INETFACE="re0"

# Маска подсети
CRWRLD_IPV4MASK="255.255.255.0"

# IP-адрес системы
CRWRLD_IPV4ADDR="10.10.10.77"

# Имя системы
CRWRLD_HOSTNAME="world"

# Дополнительные параметры jail
CRWRLD_PARAM="allow.raw_sockets=1 allow.chflags=1 allow.sysvipc=1"

# Файл протокола, на случай, если что-то пошло не так. Можно указать
# /dev/null, /dev/console или реальный файл
CRWRLD_LOGFILE="/dev/null"


Использование:
==============
Создание окружения:

[11:30] root@net13:~/.world# ./crwrld_crt
Создание файла образа диска... готово.
Подключение образа диска... готово.
Инициализация шифрования...
Enter new passphrase:
Reenter new passphrase:

Metadata backup can be found in /var/backups/md0.eli and
can be restored with the following command:

# geli restore /var/backups/md0.eli /dev/md0

готово.
Подключение зашифрованного диска...
Enter passphrase:
готово.
Создание файловой системы на диске... готово.
Монтирование образа диска... готово.
Распаковка базовой системы... готово.
Распаковка исходного кода системы... готово.
После нажатия будет произведён вход в изолированное окружение /tmp/Agoq9sW.
Для выхода из изолированного окружения нажмите или введите команду exit и
нажмите . После этого будет произведено отключение зашифрованной системы.

root@net13:/ # exit


Всё предельно просто: вводим пароль, повторяем, ждём подключения диска и ещё раз
вводим пароль. После распаковки системы вас перекинет в chroot для настройки.
Можно поковырять rc.conf, sshd_config, resolv.conf для нормальной работы.

Ну или смонтировать позже и настроить:

[12:54] root@net13:~/.world# ./crwrld_mnt
Подключение образа диска... готово.
Подключение зашифрованного диска...
Enter passphrase:
готово.
Монтирование образа диска... готово.
Добавление IP-адреса... готово.
Монтирование devfs... готово.
Попытка монтирования procfs... готово.
Подключение изолированного окружения... готово.


Отключение системы:

[12:55] root@net13:~/.world# ./crwrld_umnt
Отключение зашифрованной системы... готово.


Для подключения к jail'у я предпочитаю использовать ssh, назначив порт,
отличный от порта ssh хост-системы.

Скачать скрипты
27 ноября 2016 г. 18:30

Автоматическое монтирование сервиса Яндекс.Диск

Многие пользуются отличным сервисом от компании Яндекс для хранения личных
файлов - Яндекс.Диск. С Windows и Android дела здесь обстоят
отлично - под то и другое уже есть клиенты, ну а как быть во FreeBSD? Решение
как всегда есть. Для начала необходиом установить клиент для работы с протоколом
WebDav, именно его использует Яндекс.Диск для доступа к файлам.
make install clean -C /usr/ports/sysutils/fusefs-wdfs/

Здесь всё просто. При помощи технологии FUSE (Filesystem in USErspace) утилита
wdfs будет монтировать ваш Яндекс.Диск как обычный каталог, в котором вы сможете
производить обычные манипулции с файлами. Но тут возникает одна небольшая проблема:
для доступа к Яндекс.Диску требуется ввод логина и пароля, которые светить в
доступном всем для чтения /etc/fstab очень не хочется. Поэтому я набросал небольшой
скриптик, позволяющий монтировать WebDav-файловую систему без записей в /etc/fstab:
#!/bin/sh
WD_SERVNAME="https://webdav.yandex.ru"
WD_USERNAME="yourlogin@yandex.ru"
WD_PASSWORD="password"
WD_MOUNTPTH="/root/ya/"
WD_OTHFLAGS="-o accept_sslcert,allow_other"
wdfs_cmd="/usr/local/bin/wdfs"
[ ! "`id -u`" -eq "0" ] && { echo "Root only" ; exit 1 ; }
[ -x "`which ${wdfs_cmd}`" ] && ${wdfs_cmd} $WD_SERVNAME $WD_MOUNTPTH \
-o username=$WD_USERNAME \
-o password=$WD_PASSWORD \
$WD_OTHFLAGS

Скопируйте этот скрипт в удобное место, замените значения переменных
WD_USERNAME, WD_PASSWORD и WD_MOUNTPTH на ваш логин, пароль и каталог, куда
будет производиться монтирование (его необходимо предварительно создать).
Для защиты скрипта от чтения посторонними, установите права чтения, записи и
исполнения только для владельца:
chmod 0700 имя_скрипта

Для того чтобы файловая система монтировалась во время загрузки, добавьте в
/etc/rc.conf строку:
fusefs_enable="YES"

чтобы загрузить модуль без перезагрузки системы, выполните:
service fusefs start

В /etc/rc.local добавьте (если файл не существует - создайте):
if [ -x /root/scripts/yamount ] ; then
/root/scripts/yamount > /dev/null 2> /dev/null &
fi

Здесь /root/scripts/yamount путь к скрипту (укажите свой).

Однако, в списке процессов ваш пароль по-прежнему будет фигурировать. Чтобы
обойти эту неприятность, добавьте в
/etc/sysctl.conf
следующую строку:
security.bsd.see_other_uids=0

и выполните команду:
sysctl security.bsd.see_other_uids=0

Она позволит скрыть чужие процессы от пользователей, полный список процессов
сможет видеть только суперпользователь.

06 февраля 2013 г. 14:59

Настройка поддержки koi8-r в MediaTomb

Итак, во FreeBSD по-умолчанию используется кодировка koi8-r, которую знаменитый
DLNA-сервер MediaTomb не поддерживает по-умолчанию. Для того чтобы исправить
такую вопиющую несправедливость, необходимо отредактировать файл конфигурации
/usr/local/etc/mediatomb/config.xml и сразу после тега </server>
в секции <import hidden-files="no"> добавить следующие строки:
    <filesystem-charset>KOI8-R</filesystem-charset>
<metadata-charset>UTF-8</metadata-charset>
<playlist-charset>UTF-8</playlist-charset>
<scripting script-charset="UTF-8">

Далее необходимо остановить MediaTomb командой:
service mediatomb stop

удалить содержимое /var/mediatomb/:
rm -rf /var/mediatomb/*

и снова запустить MediaTomb:
service mediatomb start

Все действия необходимо производить с правами суперпользователя.

Теперь MediaTomb будет отдавать содержимое в правильной кодировке.

06 февраля 2013 г. 14:37

Отключение вывода motd для конкретного пользователя

Порядочно надоедает вывод motd при каждом логине. Но отключать
его для всех нехорошо, кому-то может пригодиться. Подавить его
для конкретного пользователя можно создав в домашней директории
пустой файл .hushlogin
28 ноября 2012 г. 23:13

Решение проблемы sendmail с ipv6

Дефолтная конфигурация sendmail работает с ipv6, а поэтому
требует правильно настроенной DNS-записи AAAA. Чтобы решить
эту неприятную проблему (некоторые сервера не смогут достучаться
до сервера, например Яндекс.Почта) необходимо закомментировать строку
O DaemonPortOptions=Name=IPv6, Family=inet6, Modifiers=O
и перезапустить sendmail.
31 октября 2012 г. 01:10

Скрипт резервного копирования всех установленных пакетов

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

#!/bin/sh
PKG_DB_PATH="/var/db/pkg"
[ "`id -u`" -eq "0" ] || { echo "Only root can run `basename $0`." ; exit 1 ; }
use_pkg_backup() {
echo "Tool for backup of all installed packages."
echo "Use: `basename $0` "
}
[ "$@" ] || { use_pkg_backup ; exit 0 ; }
[ -d "$@" ] || { echo "Path does not exist or is not a directory." ; exit 1 ; }
cd "$@" || { echo "Could not change directory to $@" ; exit 1 ; }
go_pkg_backup() {
for pkg_name in ${PKG_DB_PATH}/* ; do
echo -n "$pkg_name"
pkg_create -Rnb "${pkg_name}" ; err_code="$?"
if [ $err_code ] ; then
printf "\t\t\033[32;1m[Okay]\033[0m\n"
else
rm -rf ${pkg_name}.tbz
printf "...\033[31;1m[ERROR]\033[0m\n" ; exit 1
fi
done
}
go_pkg_backup | awk '{ printf "%-50s %-4\40s\n", $1, $2}'

29 октября 2012 г. 16:10

Samba-ресурс и файловая система FAT32

Samba-ресурс созданный на файловой системе fat32 при дефолтных
параметрах не пускает клиентов с ошибкой NT_STATUS_INVALID_PARAMETER
Для того чтобы исправить эту ситуацию, нужно добавить в smb.conf
(в секцию [global]) следующие строки:
	unix extensions = No
wide links = Yes
и, естественно, перезапустить samba-сервер.
24 октября 2012 г. 13:05

Страницы: 1
Сервер net13.ru (C) 2012 - 2016