Re: Ограничение программе доступа в сеть (was: Соотнесение процесса и поля QoS)

2019-09-22 Пенетрантность Stanislav Maslovski
Доброго времени суток,

On Sun, Sep 22, 2019 at 10:38:26PM +0300, Dmitry Alexandrov wrote:
> Stanislav Maslovski  wrote:
> > У меня для аналогичного эффекта (ограничение доступа к сети для некой
> > проприетарщины) много лет используется вот такой простенький setgid
> > wrapper в комбинации c owner GID match в OUTPUT chain:
> 
> Хотел бы заметить, что ограничение доступа в сеть для программы — это
> куда более прозаичная задача, чем назначение его пакетам ToS, и
> решение у нее куда очевиднее, чем cgroups: *selinux*.

Нет, SELinux-ом не пользуюсь. В дебиане юзабельный SELinux появился
(по моим меркам) не так уж и давно. Ключевые слова тут "много лет".

> Все равно ведь вы его используете, раз приложение несвободное, верно?

Не верно.
 
> > Но, как я понимаю, в такой постановке, запущенная через execve()
> > программа сможет поменять свой GID (исходный egid родителя) на свой
> > же EGID (исходный rgid родителя), что может оказаться дырой в защите
> 
> Да что у там: на любую группу из тех, в каких состоит пользователь, она
> сможет поменять. ;-)

С чего бы это? Документация говорит только лишь, что

   An unprivileged process may change its real U(G)ID, effective U(G)ID,
   and saved set-user(group)-ID, each to one of: the current real U(G)ID,
   the current effective U(G)ID or the current saved set-user(group)-ID.

-- 
Stanislav



Ограничение программе доступа в сеть (was: Соотнесение процесса и поля QoS)

2019-09-22 Пенетрантность Dmitry Alexandrov
Stanislav Maslovski  wrote:
> On Sun, Sep 15, 2019 at 12:12:10PM +0300, Pavel Volkov wrote:
>> Может быть при запуске этих процессов как-то менять им GID?
>
> У меня для аналогичного эффекта (ограничение доступа к сети для некой 
> проприетарщины) много лет используется вот такой простенький setgid wrapper в 
> комбинации c owner GID match в OUTPUT chain:

Хотел бы заметить, что ограничение доступа в сеть для программы — это куда 
более прозаичная задача, чем назначение его пакетам ToS, и решение у нее куда 
очевиднее, чем cgroups: *selinux*.  Все равно ведь вы его используете, раз 
приложение несвободное, верно?

(А MWE для ограничения я приводил просто потому, что его проще проверить.)

>> Но я бы хотел, чтобы создаваемые ими файлы всё-таки имели исходный GID.
>
> С wrapper-ом типа вышеприведённого этого можно добиться, если GID != EGID. 
> Например, заменив соответствующую строчку в коде на
>
>setresgid(egid, rgid, egid)
>
> Но, как я понимаю, в такой постановке, запущенная через execve() программа 
> сможет поменять свой GID (исходный egid родителя) на свой же EGID (исходный 
> rgid родителя), что может оказаться дырой в защите

Да что у там: на любую группу из тех, в каких состоит пользователь, она сможет 
поменять. ;-)


signature.asc
Description: PGP signature


Validation failed

2019-09-22 Пенетрантность Debian Webmaster
*** Errors validating /srv/www.debian.org/www/intro/cn.ru.html: ***
Line 204, character 88:  document type does not allow element "INPUT" here;
missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE",
"DIV", "ADDRESS" start-tag
Line 205, character 7:  end tag for "FORM" which is not finished
Line 207, character 97:  document type does not allow element "INPUT" here;
missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE",
"DIV", "ADDRESS" start-tag
Line 208, character 7:  end tag for "FORM" which is not finished
Line 210, character 134:  document type does not allow element "INPUT"
here; missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6",
"PRE", "DIV", "ADDRESS" start-tag
Line 211, character 7:  end tag for "FORM" which is not finished
Line 213, character 63:  document type does not allow element "INPUT" here;
missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE",
"DIV", "ADDRESS" start-tag
Line 214, character 7:  end tag for "FORM" which is not finished
Line 216, character 56:  document type does not allow element "INPUT" here;
missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE",
"DIV", "ADDRESS" start-tag
Line 217, character 7:  end tag for "FORM" which is not finished
Line 219, character 51:  document type does not allow element "INPUT" here;
missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE",
"DIV", "ADDRESS" start-tag
Line 220, character 7:  end tag for "FORM" which is not finished
Line 222, character 54:  document type does not allow element "INPUT" here;
missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE",
"DIV", "ADDRESS" start-tag
Line 223, character 7:  end tag for "FORM" which is not finished
Line 225, character 112:  document type does not allow element "INPUT"
here; missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6",
"PRE", "DIV", "ADDRESS" start-tag
Line 226, character 7:  end tag for "FORM" which is not finished
Line 228, character 56:  document type does not allow element "INPUT" here;
missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE",
"DIV", "ADDRESS" start-tag
Line 229, character 7:  end tag for "FORM" which is not finished
Line 231, character 62:  document type does not allow element "INPUT" here;
missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE",
"DIV", "ADDRESS" start-tag
Line 232, character 7:  end tag for "FORM" which is not finished
Line 234, character 57:  document type does not allow element "INPUT" here;
missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE",
"DIV", "ADDRESS" start-tag
Line 235, character 7:  end tag for "FORM" which is not finished
Line 237, character 102:  document type does not allow element "INPUT"
here; missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6",
"PRE", "DIV", "ADDRESS" start-tag
Line 238, character 7:  end tag for "FORM" which is not finished
Line 240, character 65:  document type does not allow element "INPUT" here;
missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE",
"DIV", "ADDRESS" start-tag
Line 241, character 7:  end tag for "FORM" which is not finished
Line 243, character 56:  document type does not allow element "INPUT" here;
missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE",
"DIV", "ADDRESS" start-tag
Line 244, character 7:  end tag for "FORM" which is not finished
Line 246, character 112:  document type does not allow element "INPUT"
here; missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6",
"PRE", "DIV", "ADDRESS" start-tag
Line 247, character 7:  end tag for "FORM" which is not finished
Line 249, character 57:  document type does not allow element "INPUT" here;
missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE",
"DIV", "ADDRESS" start-tag
Line 250, character 7:  end tag for "FORM" which is not finished
Line 252, character 61:  document type does not allow element "INPUT" here;
missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE",
"DIV", "ADDRESS" start-tag
Line 253, character 7:  end tag for "FORM" which is not finished
Line 255, character 58:  document type does not allow element "INPUT" here;
missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE",
"DIV", "ADDRESS" start-tag
Line 256, character 7:  end tag for "FORM" which is not finished
Line 258, character 92:  document type does not allow element "INPUT" here;
missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE",
"DIV", "ADDRESS" start-tag
Line 259, character 7:  end tag for "FORM" which is not finished
Line 261, character 86:  document type does not allow element "INPUT" here;
missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE",
"DIV", "ADDRESS" start-tag
Line 262, character 7:  end tag for "FORM" which is 

Re: Соотнесение процесса и поля QoS

2019-09-22 Пенетрантность Stanislav Maslovski
On Sun, Sep 22, 2019 at 01:47:13PM +0300, Eugene Berdnikov wrote:
> On Sat, Sep 21, 2019 at 10:37:15PM +0100, Stanislav Maslovski wrote:
> > On Sun, Sep 15, 2019 at 12:12:10PM +0300, Pavel Volkov wrote:
> > > Я налуркал, что в iptables есть таблица owner, где можно матчить по UID,
> > > GID, PID.
> > > Я использую nftables, там есть матчинг по UID, GID.
> > > Может быть при запуске этих процессов как-то менять им GID?
> > 
> > У меня для аналогичного эффекта (ограничение доступа к сети для некой
> > проприетарщины) много лет используется вот такой простенький setgid
> > wrapper в комбинации c owner GID match в OUTPUT chain:
> > ...
> 
>  В пакете util-linux есть setpriv(1).

Это полезная утилита, но она требует прав рута для своей работы. А мне
нужно ограничить доступ для приложения, которое запускается обычным
пользователем. Кстати, и автору оригинального поста тоже.

Можно, конечно, поставить setgid на бинарник setpriv-а (или на копию) на
нужную группу, но это уже выйдет как из (предварительно заглушённой)
пушки по воробьям стрелять.

-- 
Stanislav



Re: Соотнесение процесса и поля QoS

2019-09-22 Пенетрантность Eugene Berdnikov
On Sat, Sep 21, 2019 at 10:37:15PM +0100, Stanislav Maslovski wrote:
> On Sun, Sep 15, 2019 at 12:12:10PM +0300, Pavel Volkov wrote:
> > Я налуркал, что в iptables есть таблица owner, где можно матчить по UID,
> > GID, PID.
> > Я использую nftables, там есть матчинг по UID, GID.
> > Может быть при запуске этих процессов как-то менять им GID?
> 
> У меня для аналогичного эффекта (ограничение доступа к сети для некой
> проприетарщины) много лет используется вот такой простенький setgid
> wrapper в комбинации c owner GID match в OUTPUT chain:
> ...

 В пакете util-linux есть setpriv(1).
-- 
 Eugene Berdnikov