https://jira.sw.ru/browse/PSBM-40837

Evgenii Shatokhin added a comment - 09/Nov/15 5:13 PM
> Here are the results for the capabilities in the containers.
> ...
> The following ones do not work (or work only partially) for the users in the 
container, including root:
> * sys_module: loading/unloading of a kernel module fails.
We had usecases for that (loading iptables modules), but currently i don't know 
if anybody use this functionality.
(Because we've implemented autoload feature for that particular usecase)

======================
> * setfcap: setting file capabilities fails.
Let's don't allow this in order to make harder cracking system,
otherwise if a process can get out of ns, it will execute CT-owned precreated 
file with max security.capabilities set
and get the control other the system.

======================
> * fsetid: root can set/remove setuid flag for any executables but changing a 
setuid binary results in the dropped setuid flag.
It makes sense to change it into ve_capable() in cap_bprm_set_creds(), but only 
after we enable setfcap which we are not going to now.
=> leave as is.

======================
> * linux_immutable: "chattr +i {file}" does not work in the container but 
works on the host.
Well, it seems it's safe to enable this in a Container running on a ploop,
but it's inconvenient in case of a shared fs between Containers, which is going 
to be simfs in vz7
(because if someone set immutable attr inside a CT, prctl won't be able to 
destroy the CT when needed,
need to remove the immutable attr first).

=> i'll add a dev task for the future: if someone needs support for file attrs 
inside a CT,
need to enable it for ploop case only, and prohibit in case simfs (any shared 
fs) is used (some flag on superblock?).

======================
> * sys_nice (decreasing niceness does not work).
Let's don't allow it.

======================
> * sys_resource: ulimit allows to increase some of the limits (core file size, 
stack size, ...) but not all.
> For example, it cannot increase "max user processes" limit.
do_prlimit():
...
                /* Keep the capable check against init_user_ns until
                   cgroups can contain all limits */
                if (new_rlim->rlim_max > rlim->rlim_max &&
                                !capable(CAP_SYS_RESOURCE))
                        retval = -EPERM;

Let it be as is.

======================
> * sys_pacct - I sent a simple patch to make it work 
(https://jira.sw.ru/browse/PSBM-40587).
Good, will apply.

======================
> * audit_write, but it makes little sense without CAP_AUDIT_CONTROL (turn 
audit on/off and adjust its rules).
It's ok, will enable in case there is a demand.


Evgenii, thank you.

--
Konstantin

On 11/09/2015 05:37 PM, Evgenii Shatokhin wrote:
Ещё раз добрый день, Константин!

По PSBM-40837. Я пересмотрел capabilities, написал там, в баге, какие
работают, а какие нет.

Есть сомнения по 4 из capabilities.

Стоит ли давать процессам в контейнере возможность:

1) уменьшать их 'nice number' (CAP_SYS_NICE capability)?

2) увеличивать лимит "max user processes" для процесса (CAP_SYS_RESOURCE
capability)?

3) запрещать изменения в каких-то файлах с помощью "chattr +i {file}"
или чего-то аналогичного (CAP_LINUX_IMMUTABLE capability)?

4) задавать и убирать capabilities для исполняемых файлов (CAP_SETFCAP
capability)?

Эти вещи сейчас не работают в контейнерах.

(3), (4), на мой взгляд, контейнерам не нужны, но мало ли.
Насчёт (1) и (2) - безопаснее бы не давать, но возможно, есть какие-то
ситуации, когда это нужно?

Остальные capabilities, на мой взгляд, можно оставить как есть и в
контейнеры не "пробрасывать".

Евгений
_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to