Felhasznaloi programok engedelyezese

Problema: Userek futtatnak sajat konyvtarukbol programokat. (~5 adott program 3-4 verzioja kozul barmelyiket).
Le kell korlatozni, hogy csak a megadott programokat futtathassa, es a na-ezzel-jol-ledosolok-egy-adsl nevu progit nem.

15-20 perc googlezes utan egyedul a DigSig modult talaltam, de itt az egesz rendszer osszes binarist/libraryt/kernelmodult ala kell irni. ez iszonyu nagy munka, foleg ha frissiteni kell egy fajlt.

Aztan a dazuko-t neztem ki. Az example progi jol mukodott, de sajna az egesz sz@r: a kernel minden fajlelereskor egy userspace programra var. ha ezt a progit tortenetessen egy kill -9 kigyilkolja, akkor a kernel egy nemletezo processre var. lol.

Igy marad a sajat modul irasa: a adott konyvtar (es alkonyvtaraibol) inditott program elso 4k- reszebol egy md5 szamitas, es ez osszeshasonlitasa az engedelyezett programokkal. Valamint a /tmp-bol sem lehet inditani semmit.
Persze minden configolhato a proc-on keresztul: tmp tiltas ki/be kapcsolasa, az egesz tiltas ki/be kapcsolasa (ilyenkor csak jelenti a kernel.log-ba, hogy ki mit inditott)

Igy mukodik (az ls-nek direkt van rosszul az md5-je, hogy ne futhasson):


root@ubuntu-test:~# modprobe restrictrun
FATAL: Error inserting restrictrun (/lib/modules/2.6.20-15-server/misc.ko): Invalid argument
root@ubuntu-test:~# modprobe restrictrun path=/home/users
root@ubuntu-test:~# cat /etc/allowrun-md5.conf >/proc/restrictrun/md5
root@ubuntu-test:~# egrep 'aa.sh|ls' /proc/restrictrun/md5
aa.sh   4cf24418512edd212d19ff166bceaaf0
ls-bad      b499d5d43c1897ca5061a66a8aeb572_
root@ubuntu-test:~# (cd /home/users; ./aa.sh)
aa.sh  ls-bad
root@ubuntu-test:~# echo 1 >/proc/restrictrun/enforce
root@ubuntu-test:~# (cd /home/users; ./aa.sh)
./aa.sh: 2: ./ls-bad: Operation not permitted
root@ubuntu-test:~# echo 0 >/proc/restrictrun/enforce
root@ubuntu-test:~# /tmp/ls-bad /media/
cdrom  cdrom0  floppy  floppy0
root@ubuntu-test:~# echo 1 >/proc/restrictrun/disabletmp
root@ubuntu-test:~# echo 1 >/proc/restrictrun/enforce
root@ubuntu-test:~# /tmp/ls-bad
bash: /tmp/ls-bad: Operation not permitted

Debian forras: http://elbandi.net/restrictrun/
Telepites:


dpkg-buildpackage -us -uc -b
dpkg -i restrictrun-*
apt-get install module-assistant linux-headers-$(uname -r)
module-assistant a-i restrictrun
nano /etc/default/restrictrun
/etc/init.d/restrictrun start

Hozzászólások

selinux kicsit nagyfa kategoria... a smack meg valami labelt hasznal, ami a binarishoz kotott, ha user torli a binarist, es ujat masol fel, akkor megmarad a label? ekkor viszon nem lehetunk biztosak, hogy nem a dosoljuk-le-az-adsl-t tolti fel progineve neven.

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!