Bizonyos parancsok kiadásának megtiltása usereknek. (globálisan)

Fórumok

Üdv!

Azt szereném, hogy ha egy user belép akkor bizonyos parancsokat ne adhasson ki. pl
Ne érdekelje őket(usereket), hogy rajta kívül ki van még bejelentkezve (w|who)
Ne legyenek arra se kíváncsiak, hogy kik vannak a Sambahoz kapcsolódva (smbstatus)
Ne érdekelje őket kik mikor léptek be a szerverre (last)
és még sok más ami most nem jut eszembe.

Ezt tudjátok hogy lehetne megoldani? Lehet, hogy úgy lenne egyszerűbb ha én adnám meg, hogy milyen parancsokat adhatnak ki csak.

budacsik

(szerk.: Ja és persze nem utolsó sorban a logok se érdekeljék őket!!)

Hozzászólások

Egy adott file futtatasat meg lehet tiltani, de mi van akkor, ha letolti valahonnet a cuccot, es ugy futtatja? Ha magat a funkciot akarod megtiltani (pl. amit a w nevu program hasznal) az mar egy erdekesebb problema. SELinux? Ehhez nem ertek.

szerintem chmod

lehet a /proc hozzáféréssel kéne barmolni valamit

chmod 700 /utvonal/parancs

viszont oda kell figyelni, mert nehany parancs eseteben ez
problemat okozhat...
a 'who' pl nem ilyen, de az 'smbstatus' mar gyanus
(bar most fejbol nemtom pontosan okoz-e gondot ha csak a root latja)

---
PtR

Én azt hittem, hogy van erre olyasmi megoldás, hogy mindenkinek a könyvtárában elhelyezek egy fájl amiben a megengedett parancsok vannak felsorolva. Aztán valamivel rábírom a rendszert, hogy figyelje azt a fájlt.

(ha hülyeséget mondtam, bocsi)

chmod 700 /utvonal/parancs

ezzel susen nem sokat ersz. van nekije egy demonja ami bootnal visszaallitja a jogokat. mar nem tudom melyik demon volt, de anno (huuu de reg volt szerencsere) ezt en is beszivtam.

Jó tudom a logokat beállíthatom, hogy csak a tulajdonos tudja olvasni (cd /var/log majd chmod 600 *), de ez részmegoldás csak.

alias parancs juzerre ?

pl. who -> echo Nincs jogod futtatni ezt a parancsot !

?

es majd aszongya, hogy unalias w es keszen van. A letoltes ellen -noexec mount opcioval vedekezhetsz, ezt /home, /tmp -re ki kell adni, rendes helyen meg mashol ugysem irhat. Es a mar emlegetett chmod a megoldas. A hivatalos UNIX allaspont a restricted shell hasznalata, de ha a fenti megoldasokat nem szereted, akkor nem sok eselyed van ra, hogy korrekten be tudd allitani az rsh-hoz szukseges kornyezetet (kell restricted PATH hozza, es igy tovabb). En nem sok olyan embert lattam, aki jol be tud allitani rsh kornyezetet. Amugy meg hasznalj valami privilegiumokat kezelo kiegeszitest (mint pl. a mar emlegetett selinux, az tan jo hozza), de az felek nagy falat lesz :-)

Csak, hogy kipróbáljam, elmondja nekem valaki, hogy hogy kell beállítani azt az aliast???
Aztán a többi védekezés majd jön sörben.

> Aztán a többi védekezés majd jön sörben.

Ez teljesen hibás megközelítés. Felépítesz olyan védelmet, amit csak az nem lép
át, aki nem akar. És azt mondod, hogy ha majd átlépik, akkor folytatod. Parancsok letiltása, alias stb. irányba elindulni óriási hiba, ebben az irányban nem tudsz olyan védelmet felépíteni, amit ne lehetne pillanatok alatt áthágni. Beleölhetsz újabb és újabb energiákat, valahányszor megtudod hogy egy user kellően okos ahhoz hogy átlépje (btw honnan fogod ezt megtudni??? vagy abba a tévhitbe ringatod magad a nagyon szar védelmeddel hogy az jó?), hogy erősíts rajta, de ettől nem lesz jobb, csak te még nem látod, mert te sem látod magadtól, hogy hogyan lehet egy ilyen alias-os vagy hasonló buta védelmet átlépni.

A parancsok (például who) nem azért tudják azt, amit kiírnak, mert a rendszer kitüntetetten kezelné őket és csak nekik adnák oda ezt az információt. Azért tudják, mert a rendszer ezeket az információkat _bárkinek_ odaadja, a who történetesen csak egy parancs, amelyik némelyik ilyen infót begyűjti és megjeleníti. Ha letiltod, lesz másik amivel meg lehet nézni. Ha valaki csak egy shellt kap, és egyetlenegy külső programot sem indíthat, csak és kizárólag beépített shell parancsokat, akkor is le tudja kérdezni ezeket az infókat.

Ha használható védelmet akarsz, magát az információforrást kell megszüntetni, nem pedig a forrást kiolvasó/feldolgozó programot kiiktatni. El kell venni a jogot a /proc fájlrendszerről (kivéve saját processzek), a /sys-ről, ilyesmik... Réges régen voltak erre mindenféle kernel patchek, ki tudja azóta léteznek-e még vagy esetleg bekerültek-e a hivatalos kernelbe. Például a /proc fájlrendszernél asszem (ilyen patch esetén) mountolási opció hogy mi legyen a fájlok elérési módja és a csoportja, így például meg tudod csinálni, hogy csak egy kitüntetett csoport tagja tudják a /proc-ot úgy olvasni ahogy az alapból olvasható, a többi felhasználó csak a saját processzeinek könyvtárához fér hozzá.

Sajnos a Unixokat túl régen tervezték ahhoz, hogy ilyenekre gondoljanak. Security van benne (nem tudod mások fájljait írni stb.), de privacy már annál kevésbé (sok esetben nem tudod más felhasználók elől eltitkolni, hogy mit csinálsz). Biztos hogy be akarod engedni a usereket a gépre, adni nekik parancssort? Nem jó, ha letiltod a belépést, csak speciális (smb, ftp stb.) kapcsolatokat engedélyezel?

PAX és GrSec a kernelbe, noexec a /home, /tmp -re, szigorú hardened policy.

--
A nyúl egy igazi jellem. Ott ül a fűben, de akkor sem szívja!

1. alias
Az alias helyettesítést egy karakterrel ki lehet kerülni: '\' az alias elejére.
pl.:
$ alias d='echo alias'
$ echo 'nem alias' > d && chmod +x d
$ d
alias
$ \d
nem alias

2. rbash (bash -r)
Alapértelmezett shell-t rbash-ra rakod. Ilyenkor az user egy pár kulcsfontosságú dolgot nem tud megcsinálni, csak akkor, ha explicit megengeded neki. Pl. nem engedi meg a cd-t, az olyan parancsokat, amiben / van, nem lehet PATH-ot változtatni, stb. (ld. man bash, RESTRICTED SHELL rész). Sohasem próbáltam, de jó dolognak tűnik.. :)

Viszont az rbash segítségével is tetszőleges fájlt ki tudsz olvasni, amit anélkül is tudnál. Például "ls /proc" helyett azt mondod, hogy "echo /proc/*", aztán mondjuk "cat /proc/1/stat" helyett meg azt, hogy "echo $(</proc/1/stat)". Máris semmi külső program, az rbash saját maga mutatja meg neked /proc alól amit csak akarsz. Innen kezdve tök ugyanazokhoz az információkhoz férsz hozzá, mint sima bash alól, maximum picit (sokkal) kényelmetlenebbül.

Olvasd már el, amit fentebb írtam a restricted shellről. Ha nem állítod be jól a PATH-t, simán kijön belőle. Pl. normál PATH-t kapok: _csak_ annyi a dolgom, hogy azt mondjam: sh
és máris készen vagyok. Azaz kell csinálni restricted könyvtárakat, abba belerakni olyan parancsokat amiket kaphat, ezt beállítani a PATH-ba, de ehhez tudnod kell, hogy melyik engedélyezett parancsnak vannak az rsh szempontjából fölösleges funkciói. Ha adsz vi hozzáférést, akkor azt mondom a szerkesztőben, hogy
:!sh
és kint vagyok. Ha adsz perl/awk/tcl/stb hozzáférést, kb ugyanennyi erővel lehet sima shell-t indítani. Szóval én nem ezzel indulnék el, már ha ilyen marhaságot akarnék csinálni.

Max azt a ronda gányolós modszert tudom javasolni, hogy nem adsz neki futtatási jogokat a /bin -ből (/usr/bin; /usr/local/bin, etc...) átrakod a cumókat a /sbin (/usr/sbin...) -be. /home; /tmp -re meg noexec. Meg nem mondom neked, hogy mennyire fogod ezzel elbarmolni az egész rendszert, de ennyit tudtam hozzászólni. Persze ez magával hozza azt is, hogy rootkent kell(ene) mindent csinálnod, ami ugye nem nyerő, vagy sudozni, mint állat.

De ha ennyire nem akarod, hogy lássák, mit csinálsz, akkor tényleg legegyszerűbb, ha nem is adsz nekik shellt.

Osszegezve az itt elhangzottakat:

Nem a parancsot kell tiltani, hanem a kimenetet imho. grsec, pax, selinux, rsbac, stb. Sok minden elhangzott. Szerintem most menj es olvass alaposan utana, aztan gyere vissza ha mar valasztottal _megfelelo_ modszert.

--
Live Free or Die
UNIX

En alapban azt nem ertem, hogy az egysegsugaru usernek miert kell shellt adni? Adsz neki egy scponlyc-t maximum, tud masolgatni, meg mindenfele ilyesmit csinalni, es ennyi. Nem megoldas?

chpax, grsecurity + chroot, csak a szükséges programokkal, eszközfájlokkal; nem kell /proc, /sys...

Lehet hülyeséget mondok, akkor sorry, de miért nem lehet ACL-lel megoldani, h név szerint kik futtathassák az adott parancsot?
Azoknak, akik futtathatják esetleg egy külön csoportot létrehozni.
A /home és a /tmp meg legyen _noexec_ _nosuid_.

1. Megfogadom azt a tanácsot, hogy most visszavonulok, választok egy megoldást és ha nem megy jövök.

Eddig nem volt senkinek joga bejelentkezni ssh-n, még a rootnak sem csak egyedül én tudtam, de most a putty port forwarding miatt kellett megendnem + 2 user-nek. de ha minden igaz ez ideiglenes állapot, mert nemsokára lesz új szerver és azon megcsinálom a VPN-t és slussz passz.

Csak 1 dolog jutott eszembe: osh avagy Operator Shell, ez erre van kitalalva.