Discussion:
capability-k ertelmes hasznalata
KORN Andras
2004-09-26 16:43:32 UTC
Permalink
Udv,

elkezdtem jatszani a Linux capabilitykkel, es beleutkoztem a - mint
kiderult, szokasos - problemaba: exec() hivaskor, ha 0-as uiddel fut a
processz, megkapja az osszes capabilityt, ha pedig nem, akkor az osszeset
elveszi tole a kernel.

Nincs szuksegem komprehenziv :) megoldasra, csupan egy execcap jellegu
dolgot szeretnek, tehat adott capability settel futo processzeket; annak
orulok, ha nem muszaj rootkent futniuk, de ez nem kovetelmeny.

Van erre valami jo megoldas, ami minel kevesebb kernelmodositast igenyel?

Ugy kepzelem, hogy egy shared library, amit LD_PRELOADdal betoltok, akar el
is dobhatja a capset egy reszet, mielott a tenyleges programot elinditja
(ezaltal elkerulve az execcap-problematikat); tud valaki kesz libraryrol,
ami ezt megcsinalja?

Azt meg lehet szepen oldani, hogy uid>0 eseten ne nullazodjon a capability
set?

Lattam mindenfele ganyolast, amik ezeket a problemakat allitolag megoldjak,
de nem lehet tudni, milyen mas problemakat okoznak...

Az RSBAC, a LIDS es a medusa agyu lenne erre a verebre, nem akarom oket
hasznalni.

Guy
--
Andras Korn <korn at chardonnay.math.bme.hu>
<http://chardonnay.math.bme.hu/~korn/> QOTD:
Lions 10, Christians 0...
Magosányi Árpád
2004-09-26 18:19:56 UTC
Permalink
Post by KORN Andras
Ugy kepzelem, hogy egy shared library, amit LD_PRELOADdal betoltok, akar el
is dobhatja a capset egy reszet, mielott a tenyleges programot elinditja
(ezaltal elkerulve az execcap-problematikat); tud valaki kesz libraryrol,
ami ezt megcsinalja?
http://www.balabit.hu/downloads/restrict/

What is restrict?
-----------------

Restrict is a small LD_PRELOADable library providing UID, GID, chroot
and
capabilities changing for program which do not support it.

How to use it?
--------------

Set the following environment variables:

RESTRICT_UID - username or uid to switch to
RESTRICT_GID - username or gid to switch to
RESTRICT_CAPS - capabilities to use in cap_from_text() format
RESTRICT_CHROOT - chroot into this directory
RESTRICT_GROUPS - secondary groups to set, colon separated list
RESTRICT_FAKEUID- fake uid to return with the getuid() call to work around
daemons, which check their root privileges.
Post by KORN Andras
Az RSBAC, a LIDS es a medusa agyu lenne erre a verebre, nem akarom oket
hasznalni.
Én azt hittem hogy a medúzát már rég partra vetette a tenger és
felfalták a sirályok.
--
GNU GPL: csak tiszta forrásból
KORN Andras
2004-09-26 21:49:49 UTC
Permalink
Post by Magosányi Árpád
Post by KORN Andras
Ugy kepzelem, hogy egy shared library, amit LD_PRELOADdal betoltok, akar el
is dobhatja a capset egy reszet, mielott a tenyleges programot elinditja
(ezaltal elkerulve az execcap-problematikat); tud valaki kesz libraryrol,
ami ezt megcsinalja?
http://www.balabit.hu/downloads/restrict/
Kivalo, valoszinuleg eppen erre van szuksegem, koszi. .deb-et gyartott
belole esetleg valaki?

Probaltad is? Keszuljek fel barmilyen szivasokra, vagy egyszeruen mukodik?

Jellegebol fakadoan akkor is "hat", ha exec-el a processz, amit futtatok
vele, ugye?

Ez, ha jol ertem, azt jelenti, hogy egy esetleges exploitnak a RESTRICT_*
kornyezeti valtozokat torolnie kellene az exec("/bin/sh") elott (ha 0-as
uiddel fut a processz). :)
Post by Magosányi Árpád
Post by KORN Andras
Az RSBAC, a LIDS es a medusa agyu lenne erre a verebre, nem akarom oket
hasznalni.
Én azt hittem hogy a medúzát már rég partra vetette a tenger és
felfalták a sirályok.
Alig par honapja jott level a levlistajarol. Mondjuk nem uj verziot
jelentett be...

Guy
--
Andras Korn <korn at chardonnay.math.bme.hu>
<http://chardonnay.math.bme.hu/~korn/> QOTD:
Go gay and save on contraceptives.
Kosa Attila
2004-09-27 08:46:46 UTC
Permalink
Post by KORN Andras
Probaltad is? Keszuljek fel barmilyen szivasokra, vagy egyszeruen mukodik?
En ntpd-t es bind-et futtatok vele, mondhatni evek ota.
--
Udvozlettel
Zsiga
KORN Andras
2004-09-27 09:02:42 UTC
Permalink
Post by KORN Andras
Ez, ha jol ertem, azt jelenti, hogy egy esetleges exploitnak a RESTRICT_*
kornyezeti valtozokat torolnie kellene az exec("/bin/sh") elott (ha 0-as
uiddel fut a processz). :)
Meg egy kerdes: jol latom, hogy a CAP_SETUID lenyegeben implikalja a
CAP_DAC_OVERRIDE-dot? Ha tudok setuidelni, es olyan fs-muveletet akarok
vegezni, amihez az aktualis uidnak nincs joga, akkor atvaltok egy olyanra,
amelyiknek van, es maris meg tudtam tenni, amit akartam, nemde?

Vagyis amig a CAP_SETUID megvan, addig a CAP_DAC_OVERRIDE elvetele csak
security through obscurity...

Guy
--
Andras Korn <korn at chardonnay.math.bme.hu>
<http://chardonnay.math.bme.hu/~korn/> QOTD:
A synonym is a word you use when you can't spell the other one.
Balazs Scheidler
2004-09-27 11:51:51 UTC
Permalink
hali,
Post by KORN Andras
Post by Magosányi Árpád
Post by KORN Andras
Ugy kepzelem, hogy egy shared library, amit LD_PRELOADdal betoltok, akar el
is dobhatja a capset egy reszet, mielott a tenyleges programot elinditja
(ezaltal elkerulve az execcap-problematikat); tud valaki kesz libraryrol,
ami ezt megcsinalja?
http://www.balabit.hu/downloads/restrict/
Kivalo, valoszinuleg eppen erre van szuksegem, koszi. .deb-et gyartott
belole esetleg valaki?
a ZorpOS-es debian poolban van belole deb is,
http://www.balabit.hu/downloads/zorp/zorp-os/pool/r/restrict

elvileg a 2.1-es is es a 3.0-as is meg woody kompatibilis.
Post by KORN Andras
Probaltad is? Keszuljek fel barmilyen szivasokra, vagy egyszeruen mukodik?
a ZorpOS hardening-je ezzel megy, alapvetoen ntp-t es bind-ot ezzel
chrootoljuk. Utoljara grsec miatt volt gondunk, de azt is inkabb a grsec
szamlajara irnam. Elmekeim szerint nem engedte a CAP_SYS_TIME capet
chrooton belulre...
Post by KORN Andras
Jellegebol fakadoan akkor is "hat", ha exec-el a processz, amit futtatok
vele, ugye?
Ez, ha jol ertem, azt jelenti, hogy egy esetleges exploitnak a RESTRICT_*
kornyezeti valtozokat torolnie kellene az exec("/bin/sh") elott (ha 0-as
uiddel fut a processz). :)
torli maga utan a kornyezeti valtozokat. (emlekeim szerint, de nezz bele
a forrasba, nem tul hosszu)
--
Bazsi
KORN Andras
2004-09-27 12:05:47 UTC
Permalink
Post by Balazs Scheidler
Post by KORN Andras
Ez, ha jol ertem, azt jelenti, hogy egy esetleges exploitnak a RESTRICT_*
kornyezeti valtozokat torolnie kellene az exec("/bin/sh") elott (ha 0-as
uiddel fut a processz). :)
torli maga utan a kornyezeti valtozokat. (emlekeim szerint, de nezz bele
a forrasba, nem tul hosszu)
Ha viszont torli oket, akkor egy ujabb exec() utan mitol fogja megint
eldobni a capabilityket?

Guy
--
Andras Korn <korn at chardonnay.math.bme.hu>
<http://chardonnay.math.bme.hu/~korn/> QOTD:
I must follow them; I am their leader.
Balazs Scheidler
2004-09-27 15:58:20 UTC
Permalink
Post by KORN Andras
Post by Balazs Scheidler
Post by KORN Andras
Ez, ha jol ertem, azt jelenti, hogy egy esetleges exploitnak a RESTRICT_*
kornyezeti valtozokat torolnie kellene az exec("/bin/sh") elott (ha 0-as
uiddel fut a processz). :)
torli maga utan a kornyezeti valtozokat. (emlekeim szerint, de nezz bele
a forrasba, nem tul hosszu)
Ha viszont torli oket, akkor egy ujabb exec() utan mitol fogja megint
eldobni a capabilityket?
nem fogja, eredetileg chroot-hoz terveztem az egeszet, amin belul mar
nem volt librestrict amugy sem.

amugy sem biztos, hogy jo megoldas, leven a futo program megadhatja az
environmentet a futtatott programnak. (execve es tarsai)

szerintem ha ilyesmit akarsz, akkor a

1) a restrict-et az /etc/ld.so.preload-ba rakd
2) kornyezeti valtozok helyett egy filebol olvassa fel a beallitasait
(esetleg programfuggoen)
--
Bazsi
Balazs Scheidler
2004-09-27 11:48:04 UTC
Permalink
Post by KORN Andras
Udv,
elkezdtem jatszani a Linux capabilitykkel, es beleutkoztem a - mint
kiderult, szokasos - problemaba: exec() hivaskor, ha 0-as uiddel fut a
processz, megkapja az osszes capabilityt, ha pedig nem, akkor az osszeset
elveszi tole a kernel.
Nincs szuksegem komprehenziv :) megoldasra, csupan egy execcap jellegu
dolgot szeretnek, tehat adott capability settel futo processzeket; annak
orulok, ha nem muszaj rootkent futniuk, de ez nem kovetelmeny.
Van erre valami jo megoldas, ami minel kevesebb kernelmodositast igenyel?
Ugy kepzelem, hogy egy shared library, amit LD_PRELOADdal betoltok, akar el
is dobhatja a capset egy reszet, mielott a tenyleges programot elinditja
(ezaltal elkerulve az execcap-problematikat); tud valaki kesz libraryrol,
ami ezt megcsinalja?
Azt meg lehet szepen oldani, hogy uid>0 eseten ne nullazodjon a capability
set?
Lattam mindenfele ganyolast, amik ezeket a problemakat allitolag megoldjak,
de nem lehet tudni, milyen mas problemakat okoznak...
Az RSBAC, a LIDS es a medusa agyu lenne erre a verebre, nem akarom oket
hasznalni.
restrict,
http://www.balabit.hu/downloads/restrict/restrict-0.1.4.tar.gz

pontosan az LD_PRELOAD-os megoldast hasznalja, kornyezeti valtozokbol
veve a beallitasokat.

tud capeket, uid-et es chroot-ot allitani (esetleg uid-et hazudni a
processznek, mert valami akkor sem indul el nem-root-kent, ha a megfeleo
cap-je meg meglenne)
--
Bazsi
Loading...