Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Oct 2001 09:59:12 +0200 (CEST)
From:      Christian Kratzer <ck@cksoft.de>
To:        Igor Melnichuk <simplyi@skif.net>
Cc:        <security@FreeBSD.ORG>
Subject:   Re: login.conf & FreeBSD 4.4 
Message-ID:  <Pine.LNX.4.33.0110020953290.6866-100000@localhost.cksoft.de>
In-Reply-To: <004701c14b0c$ce44f140$45e03ac3@skif.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi,

On Tue, 2 Oct 2001, Igor Melnichuk wrote:

> I need advise.
>
> I have a server with installed FreeBSD 4.4 RELEASE .
>
> Limiting users I've created new class "webuser" in login.conf ( fixed limit
> on resource - max mem usage, cpu time, core dump size) and do all necessary
> steps (compile base `cap_mkdb /etc/login.conf` and assign  new class to user
> `chclass user1`)
>
> But in fact this _not_ works when I logged like user1 or run perl script
> (infinite loop)  with his privileges.
>
> On machine with FreeBSD 4.3 RELEASE  this works well (kernel kill script
> according to login.conf rules)
>
> Any ideas ?
>
> PS I've  read FreeBSD 4.4-RELEASE Errata (
> http://www.freebsd.org/releases/4.4R/errata.html ) 2 Security Advisories
> (Support for per-user ~/.login_conf files) I believe it has no relation to
> problem
>
> login.conf
> --------------
> webuser:\
>         :cputime=10s:\
>         :filesize=unlimited:\
>         :datasize=20M:\
>         :stacksize=20M:\
>         :coredumpsize=unlimited:\
>         :memoryuse=20M:\
>         :memorylocked=20M:\
>         :maxproc=20:\
>         :openfiles=20:\
>         :priority=0:
> ---------------

If you are talking about cgi scripts run by apache you might want to
patch suexec to do this. There is nothgin in apache that would normally
set the requested privilidges.

we added following to apache-x-x-x/src/support/suexec.c to actually
enforce setting of resource limits. There is nothing in apache that would
normally set these up for you.

	At the top after the includes
	---snipp---
	#include <stdarg.h>

	#ifdef __FreeBSD__
	#  include <login_cap.h>
	#endif

	#include "suexec.h"
	---snipp---

	Further to the bottom shortly before setting the euid
	---snipp---
	#ifdef __FreeBSD__
	    /*
	     * set resource limits from /etc/login.conf
	     * allows one to limit cpu and memory consumption by cgi's
	     */
	    setclasscontext( "apache-suexec", LOGIN_SETRESOURCES|LOGIN_SETPRIORITY );
	#endif

	    /*
	     * setuid() to the target user.  Error out on fail.
	     */
	    if ((setuid(uid)) != 0) {
		log_err("emerg: failed to setuid (%ld: %s)\n", uid, cmd);
		exit(110);
	    }
	---snipp---

Greetings
Christian

-- 
Christian Kratzer,		Schwarzwaldstr. 31, 71131 Jettingen
Email:	ck@cksoft.de
Phone: 	+49 7452 889-135
Fax: 	+49 7452 889-136	FreeBSD spoken here!


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-security" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.LNX.4.33.0110020953290.6866-100000>