Re: Как безопасно запустить недовереное приложение?
2015-356 17:40 Victor Wagner wrote: > > $ sudo debootstrap --include=iceweasel > > stable /path/to/chroot-deb-stable/ > Да, примерно так. а если сделать бинд-маунтом ридонли-копию реальной системы? поверх того, что показывать не хотим, намонтировать пустой каталог, что хотим дать на запись - бинд-маунтом в rw.
Re: Как включается acl в Debian?
2015-356 14:42 Oleksandr Gavenko wrote: > Но я смог выставить ACL на файл: а не включена ли часом CONFIG_EXT4_USE_FOR_EXT23=y ? ext4-драйвер с этой опцией используется и для ext2/3 (отдельно соответствующие драйвера можно отключить), но, видимо, в некоторых моментах возникают подобные странности
Tungsten carbide jewelry/ceramic jewelry Supply/rehergf2 brehergf与您共享了相册。
Dear This is Charles from China. we is a factory-direct and trust-worthy supplier in tungsten carbide jewelry and ceramic jewelry. Thank you for your time for reading my email, here is our new product . please check the pictures and details we have them in stock, if you have any interest, please let me know, thank you very much. Our value is Serve Every Client Heart and Soul. Looking forward to developing a long and stable business cooperation with you. Your any reply will be highly appreciated. Kind Regards, Charles https://picasaweb.google.com/lh/sredir?uname=114958901149516941582&target=ALBUM&id=6216888244470370945&authkey=Gv1sRgCLvLhOG578vxmwE&feat=email
Использовать ACL или нет?
Я почитал acl(5), setfacl(1) и несколько статей в интернет. ACL решает вопрос назначения прав по умолчанию и позволяет избежать добавления синтетической группы для доступа к файлам нескольким пользователям. Печально что стандарт на ACL не родился и все реализации с POSIX 1003.1e DRAFT 17. В BSD мире используется другая, более богатая модель ACL. Для каких задач думал применить: * читать все файлы логов /var/log от текущего пользователя, в том числе с еще не созданых через default ACL: $ sudo setfacl -R u:user:rx /var/log $ sudo setfacl -R d:u:user:rx /var/log Сейчас я добавляюсь во все необходфмие группы (как ftp, www-data, adm), но когда обнаруживаешь новю группу - требуется релогин и все же некоторые файлы имеют группой root - я не понял как на это реагировать - туда не добавлялся. * скрипты сборки подкидывают файлы локально и по scp/rsync на продакт от пользователя user, но обрабатываются сервисами от другого пользователя. Права на чтение можно дать для other, но разные службы читают разные авторизационные файлы - не хотелось бы открывать пароли на доступ. То же самое будет с группами. Как выход вижу на соответствующий каталог выдать права для помещения файла: $ sudo setfacl -R u:user:rwx /srv/tomcat $ sudo setfacl -R d:u:user:rwx /srv/tomcat и для работы сервисом: $ sudo setfacl -R u:tomcat8:rwx /srv/tomcat $ sudo setfacl -R d:u:tomcat8:rwx /srv/tomcat Каждый сервис будет иметь свои права для своего каталога и релизера где нужно будет пускать. Для серверов проблему знаю, но с решением не сталкивался, сейчас мучаю домашнюю страничку - хочется понять best practice. В среде разработчика я сервисы стал запускать от себя и стал владельцем соответствующих частей в /etc/ и /var/ что бы редакитровать и просматривать без волокиты (хотя с Emacs TRAMP почти не сложно залезть в файл от sudo). Практика использования ACL распространена? Описанные задачи решаются ACL или на самом деле все не так? Кстати в debian-reference-en и The Debian Administrator’s Handbook ничего о ACL нету. -- Best regards!
Re: Как безопасно запустить недовереное приложение?
On Tue, 22 Dec 2015 15:57:29 +0200 Oleksandr Gavenko wrote: > On 2015-12-22, Victor Wagner wrote: > > Лично я для запуска skype сейчас пользуюсь schroot. Причем думаю что > > s там на самом деле лишний. Просто schroot настолько сильно упрощает > > настройку chroot-окружения, что сначала сделал через него, и > > переделывать уже лень. > > Для schroot нужно подготавливать окружение? Нужно. > Я знаком с таким: > > $ sudo debootstrap --include=iceweasel > stable /path/to/chroot-deb-stable/ > Да, примерно так. > В /etc/schroot/schroot.conf вижу записи, на подобии: > > directory=/srv/chroot/sid > > За меня будет создано рабочее окружение? Нет, debootstrap придется позвать. > Если есть необходимость развернуть другой дистрибутив - такому есть > поддержка? Что бы не углубляться в особенности дистрибутива, какими > командами развертывать... Интересуют только менйстримные дистрибутивы > конешно. Можно взять openvz-тный темплейт - это просто tar.gz архив с соответствующим дистрибутивом, и туда распаковать. Я когда-то так делал, когда мне нужно было для разных верси CentOS собирать пакеты. Сейчас, видимо, проще найти докерный template, чем openvz-ный, но смысл тот же. > > Тут нужно быть осторожным? Осторожным нужно быть всегда. > Я использую рецепт с монтированием /sys, /proc, /dev в иерархии /dev я не монтирую а руками создаю только те специальные файлы которые нужны в chroot-окружении. В смысле, кроме тех, которые созадет debootstrap. Для скайпа это /dev/video0. Ну и /sys не монтирую - нехрен юзерским программам в /sys делать. А в /proc без рута по-моему ничего испорить нельзя. > Т.е снова вопрос в инструменте для создания окружения. > > Еще вопрос - если создавать окружение - то за это расплачиваешся > пространством в хранилище? Ну в конкретно моем случае - скайп в 64-битной системе - не расплачиваешься. Все равно ему нужно ставить все те же 32-битные библиотеки, которые занимают основное местов chroot. То есть фактически одни coreutils придется в лишнем экземпляре держать. > Для недоверенных програм типа проприетарных skype, dropbox - можно > ведь одним окружением ограничится? Ну это вопрос интересный. Можно подумать о том, чтобы сделать хардлинки на все файлы из дистрибуива.
Re: Как безопасно запустить недовереное приложение?
On Tue, 22 Dec 2015 15:24:33 +0300 Mikhail A Antonov wrote: > 22.12.2015 14:54, Victor Wagner пишет: > > KVM (qemu-system) на мой взгляд, проще virtualbox. А умеет примерно > > то же самое. В общем, это самый последий вариант, с наиболее > > глубокой изоляцией. > А как просто и _удобно_ управлять локальными ВМ? Вопрос, конечно интересный. Потому что запомнить 100500 ключей командной строки QEMU и столько же команд монитора невозможно. Я в конце концов создал для этой цели свой инструмент, выбрав тот набор use cases который нужен мне. Сейчас это 700 строк на питоне без каких-либо нестандартных библиотек. https://www.wagner.pp.ru/fossil/vws (только сертификат моего CA нужно скачать сначала с http://www.wagner.pp.ru) > Неужто получается удобнее виртуалбокса? По-моему да. потому что виртуалбокс требует нестандартных модулей в ядро. И плохо рулится из скриптов. Теми же недостатками обладает и vmware. Потом в virtualbox-е как-то мало вариантов конфигурации сети предлагается. Не то чтобы мне нужно было много, но тривиальное решение - отдельная виртуальная сетка внутри хоста, с NAT-доступом в интернет, и чтобы при этом с хоста можно было ходить на виртуальные машины по именам (которые они шлют в dhcp hostname) у меня там сходу не получилось. Не вошло оно, видимо в тот набор use cases, который предусмотрели инженеры Oracle. А QEMU поддерживает любой необходимый уровень сложности виртуальной сети 1. usermode stack - если тебе нужно только с виртуальной машины в интернет ходить, вообще ничего конфигурировать не надо 2. bridge - более менее все простые случаи 3. для особых эстетов - интеграция c vde, где можно хоть enterprise-level сетку эмулировать. > Я знаю про virsh с его virt-manager, но когда я его пробовал для него > требовалось каждый раз плясать с бубном. virsh с его virt-manager это ужас-ужас. Я долго пытался научиться с ним работать, но в конце концов плюнул. Там почему-то даже базовые вещи, вроде снапшотов какие-то недоделанные. Заснапшотить виртуальную машину можно, а восстановиться - хрен. Голый qemu с минимальной скриптовой оберткой - лучше. > Есть ещё proxmox, но для десктопа это перебор. Вот возможно proxmox это для тех, кому просто qemu/kvm мало, а связываться с libvirt неохота. Хотя вот его я не пробовал.
Re: Как безопасно запустить недовереное приложение?
On 2015-12-22, Mikhail A Antonov wrote: > 22.12.2015 14:54, Victor Wagner пишет: >> KVM (qemu-system) на мой взгляд, проще virtualbox. А умеет примерно то >> же самое. В общем, это самый последий вариант, с наиболее глубокой >> изоляцией. > А как просто и _удобно_ управлять локальными ВМ? > Неужто получается удобнее виртуалбокса? Аналогичный вопрос. В VirtualBox удобное GUI. Есть официально описыные в доке проблемы с bridged network через WiFi. У меня работало, но в какойто момент сеть не пробравывалась хоть ты тресни. В итоге завел 2 сетевые карты - NAT и Host Only Adapter. Для всех гостевых на Host Only Adapter статические адреса и общий hosts файл - по акронимам помню что где. С KVM имел дело только из-за Android, официальный эмулятор требует модулей kvm. В итоге по: qemu-system-x86_64 -enable-kvm открывало черное окно, эмулатор то же не работал. Т.к. я на testing, то брал пакеты из stable что бы завелось. Но официальный эмулятор андроид очень глючный, например нужно выключить аудио поддержку т.к. они в pulseaudio любят очень много времени проводить до состояния 100% CPU. В итоге продолжил работу с проприетарным эмулятором Genymotion, который базируется на VirtualBox. И модули kvm кстати они несовместимы с vbox. Потому сейчас исключительно использую VirtualBox. Хотя крика в Интернет что Oracle закроет VirtualBox много, тыкают на проприетарные модули для поддержки USB 2.0/3.0. Опасения есть. -- Best regards!
Re: Как безопасно запустить недовереное приложение?
On 2015-12-22, Victor Wagner wrote: > Лично я для запуска skype сейчас пользуюсь schroot. Причем думаю что > s там на самом деле лишний. Просто schroot настолько сильно упрощает > настройку chroot-окружения, что сначала сделал через него, и > переделывать уже лень. Для schroot нужно подготавливать окружение? Я знаком с таким: $ sudo debootstrap --include=iceweasel stable /path/to/chroot-deb-stable/ В /etc/schroot/schroot.conf вижу записи, на подобии: directory=/srv/chroot/sid За меня будет создано рабочее окружение? Если есть необходимость развернуть другой дистрибутив - такому есть поддержка? Что бы не углубляться в особенности дистрибутива, какими командами развертывать... Интересуют только менйстримные дистрибутивы конешно. > chroot имеет то преимущество что UID внутри и UID снаружи могут > совпадать, а файловая система, которую видит приложение, является > частью файловой системы хоста, поэтому мне снаружи удобно подкладывать > приложению файлики, которые оно должно обработать и забирать оттуда > результаты. Ага, ради этого удобство доступа к файлам - задал вопрос. man schroot как раз описывает мои задачи: * Running an untrusted program in a sandbox, so that it can't interfere with files on the host system; this may also be used to limit the damage a compromised service can inflict upon the host * Using a defined or clean environment, to guarantee the reproducibility and integrity of a given task * Using different versions of an operating system, or even different operating systems altogether, e.g. different GNU/Linux distributions >> Я понимаю идею запуситить от ограниченого пользователя. Можно ли >> расчитывать что программа не сможет поднять привелений? Как я узнаю >> что программа не пытается перебрать пароли для su/sudo? Как >> настраивать что бы не сделать глупость? > > Вот от этого chroot замечательно спасает. Внутри chroot у программы > просто не будет sudo, а то и su, чтобы подбирать парали, да и наличие > у нее рута еще не факт что позволит вылезти наружу. Тут нужно быть осторожным? Я использую рецепт с монтированием /sys, /proc, /dev в иерархии chroot при восстановлении grub. Т.е. по неосторожности можно нанести вред основной системе. Т.е снова вопрос в инструменте для создания окружения. Еще вопрос - если создавать окружение - то за это расплачиваешся пространством в хранилище? Для недоверенных програм типа проприетарных skype, dropbox - можно ведь одним окружением ограничится? -- Best regards!
Как включается acl в Debian?
У меня: bash# grep ACL /boot/config-4.2.0-1-amd64 CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_REISERFS_FS_POSIX_ACL=y CONFIG_JFS_POSIX_ACL=y CONFIG_XFS_POSIX_ACL=y CONFIG_BTRFS_FS_POSIX_ACL=y CONFIG_F2FS_FS_POSIX_ACL=y CONFIG_FS_POSIX_ACL=y CONFIG_TMPFS_POSIX_ACL=y # CONFIG_HFSPLUS_FS_POSIX_ACL is not set CONFIG_JFFS2_FS_POSIX_ACL=y CONFIG_NFS_V3_ACL=y CONFIG_NFSD_V2_ACL=y CONFIG_NFSD_V3_ACL=y CONFIG_NFS_ACL_SUPPORT=m CONFIG_CEPH_FS_POSIX_ACL=y CONFIG_CIFS_ACL=y CONFIG_9P_FS_POSIX_ACL=y т.е. нету CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT2_FS_POSIX_ACL=y Но я смог выставить ACL на файл: $ sudo setfacl -m u:nobody:rw- profiles.ini $ getfacl profiles.ini user:nobody:rw- $ realpath profiles.ini /home/user/tmp/home/.mozilla/firefox/profiles.ini из /home, хотя: $ df -h | grep /home /dev/sda4 102G 78G 19G 81% /home $ sudo tune2fs -l /dev/sda4 ... Default mount options:(none) ... $ grep -i acl /etc/fstab || echo fail fail $ sudo file -sL /dev/sda4 /dev/sda4: Linux rev 1.0 ext3 filesystem data, UUID=97f9b420-edea-49e7-bf72-7e737c8f3008, volume name "linuxhome" (needs journal recovery) (large files) Т.е. нет 'acl' для ext3 в списке поддерживаемого ядром и в опциях монтирования раздела. На другом хранилище все сходится: $ sudo file -sL /dev/sdc1 /dev/sdc1: Linux rev 1.0 ext4 filesystem data, UUID=2b0ed237-88aa-4bd8-b1ec-e6a7c036c9cc, volume name "ssd" (needs journal recovery) (extents) (large files) (huge files) $ sudo tune2fs -l /dev/sdc1 | grep acl Default mount options:user_xattr acl Т.е. для ext4 включена поддержка acl в ядре и есть в опциях монтирования. -- Best regards!
Re: Как безопасно запустить недовереное приложение?
22.12.2015 14:54, Victor Wagner пишет: > KVM (qemu-system) на мой взгляд, проще virtualbox. А умеет примерно то > же самое. В общем, это самый последий вариант, с наиболее глубокой > изоляцией. А как просто и _удобно_ управлять локальными ВМ? Неужто получается удобнее виртуалбокса? Я знаю про virsh с его virt-manager, но когда я его пробовал для него требовалось каждый раз плясать с бубном. Есть ещё proxmox, но для десктопа это перебор. -- Best regards, Mikhail - WWW: http://www.antmix.ru/ XMPP: ant...@stopicq.ru signature.asc Description: OpenPGP digital signature
Re: Как безопасно запустить недовереное приложение?
On Tue, 22 Dec 2015 12:21:38 +0200 Oleksandr Gavenko wrote: > Мелькали слова AppArmor, Grsecurity, libvirt, KVM - оно все кажется > сложным и непонятным. Подкину еще слов: chroot, schroot, firejail firejail - самое простое в настройке, но есть только в testing и unstable. Хотя вот пару месяцев назад я бинарный пакет ставил в stable и он поставился. > Как безопасно запустить недовереное приложение? Лично я для запуска skype сейчас пользуюсь schroot. Причем думаю что s там на самом деле лишний. Просто schroot настолько сильно упрощает настройку chroot-окружения, что сначала сделал через него, и переделывать уже лень. chroot имеет то преимущество что UID внутри и UID снаружи могут совпадать, а файловая система, которую видит приложение, является частью файловой системы хоста, поэтому мне снаружи удобно подкладывать приложению файлики, которые оно должно обработать и забирать оттуда результаты. KVM (qemu-system) на мой взгляд, проще virtualbox. А умеет примерно то же самое. В общем, это самый последий вариант, с наиболее глубокой изоляцией. Между chroot (который ограничивает доступ к файловой системе, но не ограничивает - к сети и CPU-памяти) и виртуальной машиной есть еще контейнеры (lxc, docker). Которые позволяют, конечно, не так гибко настраивать лимиты как appparmor, но в большинстве случаев этого хватает. > Я понимаю идею запуситить от ограниченого пользователя. Можно ли > расчитывать что программа не сможет поднять привелений? Как я узнаю > что программа не пытается перебрать пароли для su/sudo? Как > настраивать что бы не сделать глупость? Вот от этого chroot замечательно спасает. Внутри chroot у программы просто не будет sudo, а то и su, чтобы подбирать парали, да и наличие у нее рута еще не факт что позволит вылезти наружу.
Как безопасно запустить недовереное приложение?
Опцию в VirtualBox, предварительно сделав snapshot понимаю. По этому пути неудобства вызывает клацанье GUI VirtualBox, ожидание загрузки, необходимость перекидывать файлы. Я поступил так: $ wget https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/firefox-46.0a1.en-US.linux-x86_64.tar.bz2 $ tar jxf firefox-46.0a1.en-US.linux-x86_64.tar.bz2 -C ~/tmp $ mkdir -p ~/tmp/home/ $ sudo -u nobody HOME=~/tmp/home ~/tmp/firefox/firefox Мелькали слова AppArmor, Grsecurity, libvirt, KVM - оно все кажется сложным и непонятным. Как безопасно запустить недовереное приложение? Я бы различал разные степени недоверия - гарантировано плохие я запущу только в VirtualBox, но бывает что загуглил что некая программа решает задачу, но ни о проекте ни о хостере пакета я ничего не знаю, но запустить нужно. Я понимаю идею запуситить от ограниченого пользователя. Можно ли расчитывать что программа не сможет поднять привелений? Как я узнаю что программа не пытается перебрать пароли для su/sudo? Как настраивать что бы не сделать глупость? -- Best regards!