На польском языке это очень легко различимо, поскольку у нас есть совершенно другие слова для этих двух понятий:
wolny представляет "свободный как в 'свободе'" (или 'свобода слова') понятие
darmowy представляет понятие "свободного как в 'бесплатном пиве'" (что-то, что Вы не должны оплачивать),
В соответствии с Ubuntu, другим способом заключить в тюрьму является apparmor!
Это - находящийся на пути Модуль безопасности Linux (LSM) мандатного управления доступом (MAC). В Ubuntu 10.04 это включено по умолчанию для выбранных сервисов.
Документация вполне фрагментируется. Документация Ubuntu могла быть... лучше. Даже восходящая документация не дает хорошее введение. Состояния ссылочной страницы:
ПРЕДУПРЕЖДЕНИЕ: этот документ находится на очень ранней стадии создания, это не находится ни в какой форме все же, чтобы использоваться в качестве справочника
Однако начало работы относительно легко. Профиль AppAmor соответствует исполняемому пути, например. /var/www/slave/slave
. Правило по умолчанию профиля, отклоняют (который является большим), если ничто иное не соответствует. Отклонять-правила профиля соответствуют всегда перед позволять-правилами. Пустой профиль отклоняет все.
Профили для различных двоичных файлов хранятся под /etc/apparmor.d
. apparmor_status
дисплеи, какие профили активны, что находится в (хорошем) осуществлять-режиме, или только в, жалуются режим (только сообщения журнала печатаются).
Создание нового профиля для /var/www/slave/slave
справедливо:
aa-genprof /var/www/slave/slave
Запустите в другом терминале /var/www/slave/slave
и сделайте типичный вариант использования. После того, как это закончено нажатие s
и f
в предыдущем терминале.
Теперь /etc/apparmor.d
содержит файл профиля var.www.slave.slave
. Если ведомое устройство делает некоторое разветвление профиля, только очень редко - все доступы childs проигнорированы.
Так или иначе профиль теперь активен в, осуществляют режим, и можно просто многократно инициировать действия в ведомом устройстве и часах tail -f /var/log/messages
для нарушений. В другом терминале Вы редактируете файл профиля и выполняетесь aa-enforce var.www.slave.slave
после каждого изменения. Журнал отображается затем:
audit(1308348253.465:3586): operation="profile_replace" pid=25186 name="/var/www/slave/slave"
Нарушение похоже:
operation="open" pid=24583 parent=24061 profile="/var/www/slave/slave"
requested_mask="::r" denied_mask="::r" fsuid=10004 ouid=10000 name="/var/www/slave/config"
Правило профиля как:
/var/www/slave/config r,
предоставил бы доступ в будущем.
Это является все довольно прямым.
AppAmor поддерживает крупномодульные сетевые правила, например.
network inet stream,
Без этого правила никакой доступ в Интернет не возможен (включая localhost), т.е. с тем правилом можно использовать iptables
для правил с более прекрасными зернами (например, на основе ведомого устройства uid).
Другой фрагмент документации содержит что-то о профилях sub для сценариев PHP.
Скелет профиля var.www.slave.slave похож:
#include <tunables/global>
/var/www/gapapp/gap.wt {
#include <abstractions/base>
network inet stream,
/var/www/slave/config r,
/var/www/slave/exehelper/foo ix,
/var/www/slave/db/* rw,
...
}
С таким профилем ведомое устройство не может больше назвать утилиты как mail
или sendmail
.
Существует другой способ заключить в тюрьму его вниз: iptables
использование владельца соответствует расширению!
С iptables это возможно к блоку, исходящему (ВЫВОД) сетевой трафик всеми процессами ведомого пользователя. Это очень легко установить, т.е. это удобно.
Это означает, что с этой легкой установкой можно заключить в тюрьму ведомый процесс от местоположений файловой системы и сети.
$ iptables -N slave_chain
$ iptables -A slave_chain -m owner --uid-owner 10004 -p tcp --dport 1:1024 -j REJECT
$ iptables -A slave_chain -m owner --uid-owner 10004 -p tcp -d 127.0.0.1 -j ACCEPT
$ iptables -A slave_chain -m owner --uid-owner 10004 -j REJECT
$ iptables -A OUTPUT -j slave_chain
Где 10004 uid ведомого пользователя. Ведомое устройство должно только ответить на проксированные запросы веб-сервера. Все остальное отклоняется, например, попытка подключения к MTA в localhost порте 25 для отправки СПАМА.
Обратите внимание, что ведомое устройство могло отправить, почте через команды нравится mail
или sendmail
, если они - доступное, т.е. дальнейшее заключение в тюрьму местоположений фс (например, chroot/cgroups) необходимо, или нужно настроить MTA для запрещения исходящей почты ведомым пользователем.
mail
, это могло также отправить почту включением кода в mail
двоичный файл. Соответствие сделано UID. Вы все еще должны к chroot препятствовать тому, чтобы CGI получил доступ к файлам и вызвал setxid программы, и удостовериться, что у Вас нет setuid двоичного файла в chroot.
– Gilles 'SO- stop being evil'
17.06.2011, 23:21
mail
вызовы sendmail
, который является ссылкой на sbin/exim4
который является setuid.
– maxschlepzig
18.06.2011, 01:15
Cgroups являются путем к заключению в тюрьму. С 2007, cgroups подсистемы даже содержит так называемые сетевые пространства имен.
Текущие дистрибутивы поставляют инструменты пространства пользователя контейнеров Linux, наборы инструментов командной строки (lxc-*
) и конфигурационные файлы в качестве примера. Они также включают сетевой пример пространства имен.
К сожалению, Ubuntu 10.04 (LTS) повреждает сетевые пространства имен с недавним обновлением ядра.
В целом, документация о lxc не то, что подробный, необходимо вырыть через некоторые файлы конфигурации в качестве примера.
Не ясно, что лучшая практика должна установить беспочвенные контейнеры.