FreeBSD MAC

A Unix/Linux szerverek üzemeltetése wikiből
(Változatok közti eltérés)
57. sor: 57. sor:
 
* <tt>security.mac.seeotheruids.enabled</tt> bekapcsolja a modul funkcióit, ami alapértelmezésben megtiltja a felhasználóknak hogy mások processeit és socket-jeit lássák.
 
* <tt>security.mac.seeotheruids.enabled</tt> bekapcsolja a modul funkcióit, ami alapértelmezésben megtiltja a felhasználóknak hogy mások processeit és socket-jeit lássák.
 
* <tt>security.mac.seeotheruids.specificgid_enabled</tt> segítségével kivételt állíthatunk be egy csoportnak. A csoport gid-jét a <tt>security.mac.seeotheruids.specificgid=XXX</tt> sysctl változóba kell tenni.
 
* <tt>security.mac.seeotheruids.specificgid_enabled</tt> segítségével kivételt állíthatunk be egy csoportnak. A csoport gid-jét a <tt>security.mac.seeotheruids.specificgid=XXX</tt> sysctl változóba kell tenni.
* <tt>security.mac.seeotheruids.primarygroup_enabled</tt> használatával elsődleges csoportoknak adhatunkn kivételt. Fontos, hogy a <tt>security.mac.seeotheruids.specificgid_enabled</tt> ne legyen ekkor bekapcsolva
+
* <tt>security.mac.seeotheruids.primarygroup_enabled</tt> használatával elsődleges csoportoknak adhatunk kivételt. Tehát így a process vagy socket group tagjai látni fogják az adott processt vagy socket-et. Fontos, hogy a <tt>security.mac.seeotheruids.specificgid_enabled</tt> ne legyen ekkor bekapcsolva.
  +
  +
Példa:
  +
  +
test1 user nem látja mások processeit
  +
[test1@homokozo /usr/home/test1]$ ps aux
  +
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
  +
test1 727 0.0 1.1 1676 1360 v1 I 2:56PM 0:00.10 -sh (sh)
  +
test1 728 0.0 1.6 3120 1920 v1 S 2:56PM 0:00.69 bash
  +
test1 805 0.0 0.7 1340 860 v1 R+ 3:21PM 0:00.07 ps aux
  +
  +
Készítsünk egy <tt>seeother</tt> csoportot, tegyük bele <tt>test1</tt>-et és állítsuk be kivételnek a csoportot
  +
[root@homokozo ~]# pw groupadd seeother
  +
[root@homokozo ~]# pw groupmod seeother -M test1
  +
[root@homokozo ~]# pw groupshow seeother
  +
seeother:*:1002:test1
  +
[root@homokozo ~]# sysctl security.mac.seeotheruids.specificgid=1002
  +
security.mac.seeotheruids.specificgid: 0 -> 1002
  +
[root@homokozo ~]# sysctl security.mac.seeotheruids.specificgid_enabled=1
  +
security.mac.seeotheruids.specificgid_enabled: 0 -> 1
  +
Tada:
  +
[test1@homokozo /usr/home/test1]$ ps aux |wc -l
  +
63
  +
  +
Megjegyzés:
  +
A belépett felhasználókat nem kell kiléptetni ha beállítjuk ezt a sysctl változót, de ha a csoportot és a felhasználó tagságát a csoportban akkor hoztuk létre amikor a user be volt lépve az újra beléptetés szükséges.

A lap 2006. október 8., 15:35-kori változata

Tartalomjegyzék

1 MAC implementáció a FreeBSD-ben

1.1 Bevezető

1.1.1 Mi az a MAC?

A Mandatory Access Control rövidítése. Olyan biztonsági modell ami a DAC kibővítésére, helyettesítésére szolgál. Egy DAC rendszerben a felhasználók maguk mondhatják meg, hogy az általuk birtokolt objektumoknak milyen jogai lehetnek. Ezzel szemben a MAC -ben a felhasználó nem adhat az objektumainak az adminisztrátor által beállíott jogoknál lazább jogokat.

1.1.2 MAC címkék

A rendszerünk minden egyes objektumát (felhasználók, fájlok, hálózati interfészek, képernyő) el kell látnunk úgynevezett címkékkel, ezek a címkék a használt biztonsági modultól függően sok mindent jelenthetnek. Pl a biba/high címke a Biba policy modulra vonatkozik és az értéke "high". A FreeBSD három előre definiált value van. A high a lehető legmagasabb, a low a legalacsonyabb, az equal pedig egy "dontcare" értéket állít be. Az object -ek mellett nem árt tisztázni a subject fogalmát, ami nem más mint az az entitás (esetek nagyrészében process) ami az objektumok közt áramoltat adatot. Ahhoz, hogy egy partíción más és más labelt adhassunk file-jainknak, engedélyezni kell minden partíción a multi labeling -et a

tune2fs -l enable /path/to/fs

paranccsal.


1.1.3 Telepítés

A FreeBSD-be az 5.0-ás verziótol került bele a TrustedBSD project részeként létrehozott MAC implementáció. A GENERIC kernelnek nem része a MAC, ha be szeretnénk kapcsolni tegyük az

options MAC

sort a kernelconfigunkba, majd fordítsuk újra a kernelt

make buildkernel KERNCONF=GENERIC && make installkernel KERNCONF=GENERIC

A MAC framework részét képzi még számos modul, amiket az /etc/loader.conf -ba írva a bootolási folyamat során betöltődnek. Természetesen van mód ezeket a kernelbe fordítani, de így nagyobb az esély, hogy kizárjuk magunkat kedvenc rendszerünkből egy rosszul sikerült konfiguráció során.

1.2 MAC

1.2.1 Címkék használata

Subjectekre(processzekre):

setpmac biba/high

Objectekre:

setfmac biba/high test.txt

Megadhatunk konkrét értékeket is:

setfmac biba/5(4-10) 

Ahol a zárójel előtt az effektív, használatban levő érték van a zárójelekben pedig a legalacsonyabb és legmagasabb állítható érték) Hálózati interfészre:

ifconfig xl0 maclabel biba/equal

1.2.2 Modularitás

Alaphelyzetben, modulok nélkül is lehetőségünk van a MAC framework egyes részeit letiltani a sysctl parancs segítségével. Az alapértelmezett értékek mindegyiknél 1.

  • security.mac.enforce_fs Fájlrendszer policyk
  • security.mac.enforce_kld enforces MAC kernel linking policies on the dynamic kernel linker (see kld(4)).
  • security.mac.enforce_network enforces MAC network policies.
  • security.mac.enforce_pipe enforces MAC policies on pipes.
  • security.mac.enforce_process enforces MAC policies on processes which utilize inter-process communication.
  • security.mac.enforce_socket enforces MAC policies on sockets (see the socket(2) manual page).
  • security.mac.enforce_system enforces MAC policies on system activities such as accounting and rebooting.
  • security.mac.enforce_vm enforces MAC policies on the virtual memory system.

1.2.2.1 See no other uids

Modul betöltése:

kldload mac_seenootheruids.ko

vagy

echo mac_seeotheruids_load="YES" >> /etc/rc.conf

ha a bootolas során szeretnénk bekapcsolni A modul nem igényli a label -ek használatát és átlátszó módon képes működni más MAC modulokkal. Erre a későbbiekben lesz példa

  • security.mac.seeotheruids.enabled bekapcsolja a modul funkcióit, ami alapértelmezésben megtiltja a felhasználóknak hogy mások processeit és socket-jeit lássák.
  • security.mac.seeotheruids.specificgid_enabled segítségével kivételt állíthatunk be egy csoportnak. A csoport gid-jét a security.mac.seeotheruids.specificgid=XXX sysctl változóba kell tenni.
  • security.mac.seeotheruids.primarygroup_enabled használatával elsődleges csoportoknak adhatunk kivételt. Tehát így a process vagy socket group tagjai látni fogják az adott processt vagy socket-et. Fontos, hogy a security.mac.seeotheruids.specificgid_enabled ne legyen ekkor bekapcsolva.

Példa:

test1 user nem látja mások processeit

[test1@homokozo /usr/home/test1]$ ps aux                                     
USER    PID %CPU %MEM   VSZ   RSS  TT  STAT STARTED      TIME COMMAND        
test1   727  0.0  1.1  1676  1360  v1  I     2:56PM   0:00.10 -sh (sh)       
test1   728  0.0  1.6  3120  1920  v1  S     2:56PM   0:00.69 bash           
test1   805  0.0  0.7  1340   860  v1  R+    3:21PM   0:00.07 ps aux         

Készítsünk egy seeother csoportot, tegyük bele test1-et és állítsuk be kivételnek a csoportot

[root@homokozo ~]# pw groupadd seeother            
[root@homokozo ~]# pw groupmod seeother -M test1   
[root@homokozo ~]# pw groupshow seeother      
seeother:*:1002:test1                         
[root@homokozo ~]# sysctl security.mac.seeotheruids.specificgid=1002         
security.mac.seeotheruids.specificgid: 0 -> 1002                             
[root@homokozo ~]# sysctl security.mac.seeotheruids.specificgid_enabled=1    
security.mac.seeotheruids.specificgid_enabled: 0 -> 1                        

Tada:

[test1@homokozo /usr/home/test1]$ ps aux |wc -l         
      63                                                

Megjegyzés: A belépett felhasználókat nem kell kiléptetni ha beállítjuk ezt a sysctl változót, de ha a csoportot és a felhasználó tagságát a csoportban akkor hoztuk létre amikor a user be volt lépve az újra beléptetés szükséges.