ALT Linux Community general discussions
 help / color / mirror / Atom feed
From: "Dmitry V. Levin" <ldv@alt-linux.org>
To: ALT Linux Spring mailing list <mandrake-russian@altlinux.ru>
Subject: Re: [mdk-re] "сюита для трех напильников" к vtund
Date: Fri Mar 15 19:25:22 2002
Message-ID: <20020315162605.GD1160@ldv.office.alt-linux.org> (raw)
In-Reply-To: <E16lX1h-0005AO-00@storage.ukr.net>

[-- Attachment #1: Type: text/plain, Size: 3329 bytes --]

On Thu, Mar 14, 2002 at 05:20:21PM +0200, Denis Kulgeyko wrote:
> Есть vtund-2.5. Решил я дописать туда chroot() + setuid()/setgid(). Причина: не 
> хочу оставлять процесс, висящий во внешний мир (а надо именно его юзать и 
> именно в иаком виде) работающим под root'ом.
> Сделал, но есть одна проблема: когда именно лучше делать setuid() ?

Как можно раньше.

>   Вкратце о происходящем - сперва делаю chroot(), конфиг читается уже из 
> нового корня, потом процесс fork()'ается и родитель делает exit() а потомок 
> отцепляетя от терминала и висит демоном. Дальше возможны 2 варианта - или это 
> будет клиент или сервер.
>   Если сервер - то он цепляется на порт и слушает его, ждет вызовов от 
> клиентов. Вариант - сделать setuid() здесь. setgid() я делаю тут и это ничему 
> не мешает.

Не забудьте про setgroups(2) и другие необходимые действия.

>   Клиент идет на соответствующий сервер/порт, обменивается ключами, 
> устанавливает соединение, поднимает сетевой интерфейс и через него уже 
> пускает туннель. setuid()/setgid() делаю здесь.

Почему нельзя раньше?

>   Для сервера можно поставить setuid() после поднятия сетевого интерфейса 
> (там делается еще один fork() - так для каждого клиента), но тогда сервер 
> будет от момента начала слушанья порта до подьема туннеля работать с 
> root'овыми правами.
>   Если сбросить привилегии после "цепляния" к порту - то понадобятся 
> root'овые права на подъем сетевого интерфейса, настройку маршрутов, 
> firewall'а и пр. Можно кинуть в новый "/" xто-то типа sudo/super, но они 
> тянут за собой не так уж и мало всякого барахла и являют собой еще одну 
> лишнюю "дыру" (есть setuid + executable - файлы). Да и выглядит это несколько 
> "кривовато".

setuid-root программы в chroot'е сводят всю пользу от chroot'а на нет.

>   Если же делать setuid() сразу после поднятия сетевого интерфейса - то не 
> хватит прав на опускание этого интерфейса при разрыве соединения (ну .. тут 
> он упадет сам), удаление лишних маршрутов (уйдут сами сразу за интерфейсом), 
> вычистку firewall'а и прочее.

Это почему?
Оставьте программе CAP_NET_BIND_SERVICE и CAP_NET_ADMIN, а остальное
сбросьте.

>   Есть еще вариант, который потянет за собой переделку в структуре всей 
> программы - чтобы настройкой интерфейсов и иже с ним занимался самый главный 
> прародитель-демон (потомки его шевелят по мере надобности), который работает 
> под root'ом, но напрямую сеть не слушает. Наверно так и сделаю, если не 
> придумается более лучший вариант, хотя это весьма прилично мороки.

Вот это уже дело.
Возможно, прародитель и не должен быть полным рутом.

>   Вот я сижу и ломаю голову .. как бы это все нормально сделать ?

Немного побольше деталей, и не в этот список рассылки.

> Может что-то подскажете. Заранее огромное пасиба.

Посмотрите:
http://altlinux.ru/index.php?module=articles&action=show&artid=5
/usr/share/doc/vsftpd-1.0.1/SECURITY/DESIGN

Пишите в список для разработчиков или сразу мне.


Regards,
	Dmitry

+-------------------------------------------------------------------------+
Dmitry V. Levin     mailto://ldv@alt-linux.org
ALT Linux Team      http://www.altlinux.com/
Fandra Project      http://www.fandra.org/
+-------------------------------------------------------------------------+
UNIX is user friendly. It's just very selective about who its friends are.

[-- Attachment #2: Type: application/pgp-signature, Size: 232 bytes --]

      reply	other threads:[~2002-03-15 19:25 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-03-14 18:11 [mdk-re] "ÓÀÉÔÁ ÄÌÑ ÔÒÅÈ ÎÁÐÉÌØÎÉËÏ×" Ë vtund Denis Kulgeyko
2002-03-15 19:25 ` Dmitry V. Levin [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20020315162605.GD1160@ldv.office.alt-linux.org \
    --to=ldv@alt-linux.org \
    --cc=mandrake-russian@altlinux.ru \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git