Re: Как безопасно запустить недовереное приложение?

2015-12-22 Пенетрантность dimas
2015-356 17:40 Victor Wagner  wrote:
> >   $ sudo debootstrap --include=iceweasel
> > stable /path/to/chroot-deb-stable/
> Да, примерно так.
а если сделать бинд-маунтом ридонли-копию реальной системы? поверх того, что
показывать не хотим, намонтировать пустой каталог, что хотим дать на запись -
бинд-маунтом в rw.



Re: Как включается acl в Debian?

2015-12-22 Пенетрантность dimas
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与您共享了相册。

2015-12-22 Пенетрантность 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 или нет?

2015-12-22 Пенетрантность Oleksandr Gavenko
Я почитал 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: Как безопасно запустить недовереное приложение?

2015-12-22 Пенетрантность Victor Wagner
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: Как безопасно запустить недовереное приложение?

2015-12-22 Пенетрантность Victor Wagner
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: Как безопасно запустить недовереное приложение?

2015-12-22 Пенетрантность Oleksandr Gavenko
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: Как безопасно запустить недовереное приложение?

2015-12-22 Пенетрантность Oleksandr Gavenko
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?

2015-12-22 Пенетрантность Oleksandr Gavenko
У меня:

  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: Как безопасно запустить недовереное приложение?

2015-12-22 Пенетрантность Mikhail A Antonov
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: Как безопасно запустить недовереное приложение?

2015-12-22 Пенетрантность Victor Wagner
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, чтобы подбирать парали, да и наличие
у нее рута еще не факт что позволит вылезти наружу. 



Как безопасно запустить недовереное приложение?

2015-12-22 Пенетрантность Oleksandr Gavenko
Опцию в 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!