OSEC

Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com
 
From: Christian Kratzer (ckcksoft.de)
Date: Tue Oct 02 2001 - 02:59:12 CDT

  • Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

    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:	ckcksoft.de
    Phone: 	+49 7452 889-135
    Fax: 	+49 7452 889-136	FreeBSD spoken here!
    

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