From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: "Dmitry V. Levin" To: ALT Linux Spring mailing list Subject: Re: [mdk-re] =?koi8-r?B?ItPAydTBIMTM0SDU?= =?koi8-r?B?0sXIIM7B0MnM2M7Jy8/XIiDL?= vtund Message-ID: <20020315162605.GD1160@ldv.office.alt-linux.org> Mail-Followup-To: "Dmitry V. Levin" , ALT Linux Spring mailing list References: Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="M38YqGLZlgb6RLPS" Content-Disposition: inline In-Reply-To: X-fingerprint: 9658 398D 181B 1200 8FC5 26B8 F6F8 846B C1E2 3429 Sender: mandrake-russian-admin@altlinux.ru Errors-To: mandrake-russian-admin@altlinux.ru X-BeenThere: mandrake-russian@altlinux.ru X-Mailman-Version: 2.0 Precedence: bulk Reply-To: mandrake-russian@altlinux.ru List-Help: List-Post: List-Subscribe: , List-Id: Linux-Mandrake RE / ALT Linux discussion list List-Unsubscribe: , List-Archive: Date: Fri Mar 15 19:25:22 2002 X-Original-Date: Fri, 15 Mar 2002 19:26:05 +0300 Archived-At: List-Archive: List-Post: --M38YqGLZlgb6RLPS Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit 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. --M38YqGLZlgb6RLPS Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE8kiCc9viEa8HiNCkRAtjGAJ0eSB82dQ18OJotx41r6ner7EVI1gCfRnKC NaNADzxr+RDS/yTrOuQi8ZA= =r5LP -----END PGP SIGNATURE----- --M38YqGLZlgb6RLPS--