Selinux problemi

Linux, poslužitelj, mreže i sigurnost

Moderator/ica: Moderatori/ce

Avatar
shrike
Moderator
Postovi: 10322
Pridružen/a: 07 pro 2007, 18:07
Spol: Y
OS: utuntu 19.10
Kontakt:

Selinux problemi

Post Postao/la shrike »

Imam problema sa selinuxom koje iskreno ne znam riješiti. U permissive modu se uspije pokrenuti, ali u
defualt ne radi. Dosta toga krepa zbog krivih postavki za udev koji je ne može ništa pokrenuti pa eto, ako mi tko može pomoći ja bih bio presretan. Dolje je primjer kako to sve izgleda. Ima greška za svega, ali mi moun i udev izgledaju najgore.

Kod: Označi sve

[    5.898472] SELinux: 2048 avtab hash slots, 59893 rules.
[    5.929576] SELinux: 2048 avtab hash slots, 59893 rules.
[    5.952622] SELinux:  6 users, 6 roles, 1660 types, 90 bools, 1 sens, 1024 cats
[    5.952632] SELinux:  77 classes, 59893 rules
[    5.958109] SELinux:  Permission read_policy in class security not defined in policy.
[    5.958270] SELinux:  Permission audit_access in class file not defined in policy.
[    5.958371] SELinux:  Permission audit_access in class dir not defined in policy.
[    5.958461] SELinux:  Permission execmod in class dir not defined in policy.
[    5.958546] SELinux:  Permission audit_access in class lnk_file not defined in policy.
[    5.958642] SELinux:  Permission open in class lnk_file not defined in policy.
[    5.958738] SELinux:  Permission execmod in class lnk_file not defined in policy.
[    5.958842] SELinux:  Permission audit_access in class chr_file not defined in policy.
[    5.958946] SELinux:  Permission audit_access in class blk_file not defined in policy.
[    5.959043] SELinux:  Permission execmod in class blk_file not defined in policy.
[    5.959143] SELinux:  Permission audit_access in class sock_file not defined in policy.
[    5.959242] SELinux:  Permission execmod in class sock_file not defined in policy.
[    5.959342] SELinux:  Permission audit_access in class fifo_file not defined in policy.
[    5.959436] SELinux:  Permission execmod in class fifo_file not defined in policy.
[    5.959776] SELinux:  Permission syslog in class capability2 not defined in policy.
[    5.959877] SELinux: the above unknown classes and permissions will be denied
[    5.959968] SELinux:  Completing initialization.
[    5.959973] SELinux:  Setting up existing superblocks.
[    5.959995] SELinux: initialized (dev sysfs, type sysfs), uses genfs_contexts
[    5.960043] SELinux: initialized (dev rootfs, type rootfs), uses genfs_contexts
[    5.960056] SELinux: initialized (dev bdev, type bdev), uses genfs_contexts
[    5.960071] SELinux: initialized (dev proc, type proc), uses genfs_contexts
[    5.960092] SELinux: initialized (dev tmpfs, type tmpfs), uses transition SIDs
[    5.960112] SELinux: initialized (dev devtmpfs, type devtmpfs), uses transition SIDs
[    5.960557] SELinux: initialized (dev debugfs, type debugfs), uses genfs_contexts
[    5.961083] SELinux: initialized (dev sockfs, type sockfs), uses task SIDs
[    5.961092] SELinux: initialized (dev pipefs, type pipefs), uses task SIDs
[    5.961116] SELinux: initialized (dev anon_inodefs, type anon_inodefs), uses genfs_contexts
[    5.961126] SELinux: initialized (dev devpts, type devpts), uses transition SIDs
[    5.961150] SELinux: initialized (dev hugetlbfs, type hugetlbfs), uses transition SIDs
[    5.961168] SELinux: initialized (dev mqueue, type mqueue), uses transition SIDs
[    5.961180] SELinux: initialized (dev selinuxfs, type selinuxfs), uses genfs_contexts
[    5.961210] SELinux: initialized (dev sysfs, type sysfs), uses genfs_contexts
[    5.961699] SELinux: initialized (dev tmpfs, type tmpfs), uses transition SIDs
[    5.961984] SELinux: initialized (dev usbfs, type usbfs), uses genfs_contexts
[    5.962013] SELinux: initialized (dev hda1, type ext4), uses xattr
[    5.965894] type=1403 audit(1317152076.785:2): policy loaded auid=4294967295 ses=4294967295
[    6.302515] type=1400 audit(1317152077.121:3): avc:  denied  { read write } for  pid=209 comm="findfs" name="console" dev=devtmpfs ino=850 scontext=system_u:system_r:fsadm_t:s0 tcontext=system_u:object_r:device_t:s0 tclass=chr_file
[    6.498360] type=1400 audit(1317152077.317:4): avc:  denied  { read } for  pid=214 comm="mount" name="run" dev=hda1 ino=261635 scontext=system_u:system_r:mount_t:s0 tcontext=system_u:object_r:var_t:s0 tclass=lnk_file
[    6.525855] type=1400 audit(1317152077.345:5): avc:  denied  { write } for  pid=214 comm="mount" name="/" dev=tmpfs ino=1827 scontext=system_u:system_r:mount_t:s0 tcontext=system_u:object_r:device_t:s0 tclass=dir
[    6.526014] type=1400 audit(1317152077.345:6): avc:  denied  { add_name } for  pid=214 comm="mount" name="mount" scontext=system_u:system_r:mount_t:s0 tcon
Es gibt keinen Gott, kein Universum, keine menschliche Rasse, kein irdisches Leben, keinen Himmel, keine Hölle. Es ist alles ein Traum - ein grotesker und dummer Traum. Nichts existiert außer dir. Und du bist nur ein Gedanke - ein vagabundierender Gedanke, ein nutzloser Gedanke, ein heimatloser Gedanke, der verloren in der leeren Ewigkeit wandelt!
Avatar
drade
Postovi: 910
Pridružen/a: 12 svi 2010, 07:57
OS: linux

Re: Selinux problemi

Post Postao/la drade »

Najbrze bi ti bilo iskoristiti audit2allow tool, nije najpouzdaniji jer ce sve sto je "denied" pretvoriti u allow rulove bez puno razmisljanja o mogucim posljedicama, no te "allow" rulove mozes prilagoditi svojim potrebama.

Kod: Označi sve

cat /var/log/audit/audit.log | audit2allow -m local > custom.te
Prodji kroz custom.te datoteku i pogledaj sto mozes uciniti.
When you're a kid and you wanna go "Weee !", but you ain't got drugs yet ... You hold out for your life, hold on to your little GONADS ... and STRIFE.
Avatar
shrike
Moderator
Postovi: 10322
Pridružen/a: 07 pro 2007, 18:07
Spol: Y
OS: utuntu 19.10
Kontakt:

Re: Selinux problemi

Post Postao/la shrike »

Daje ovo:

Kod: Označi sve

cat: /var/log/audit/audit.log: No such file or directory
Ja sam mislio dati unconfined prava na udev i mount za sada pa vidjeti kako ide dalje, ili da mi netko kaže koja bi trebala biti. ALi, nemam pojma kako dati unconfined prava na udev. Skužio sam da tutoriali po netu ili nisu update, ili naredbe ne rade.
Es gibt keinen Gott, kein Universum, keine menschliche Rasse, kein irdisches Leben, keinen Himmel, keine Hölle. Es ist alles ein Traum - ein grotesker und dummer Traum. Nichts existiert außer dir. Und du bist nur ein Gedanke - ein vagabundierender Gedanke, ein nutzloser Gedanke, ein heimatloser Gedanke, der verloren in der leeren Ewigkeit wandelt!
Avatar
shrike
Moderator
Postovi: 10322
Pridružen/a: 07 pro 2007, 18:07
Spol: Y
OS: utuntu 19.10
Kontakt:

Re: Selinux problemi

Post Postao/la shrike »

Evo, primjerice, uputstva kažu da bi ovo trebalo raditi ali ne radi

Kod: Označi sve

: setsebool -P allow_execmem=1 /sbin/udevd
Dobijem ovo (ili za bilo što osim execmem):

Kod: Označi sve

setsebool: '=' not found in boolean expression /sbin/udevd
Ima li tu kakvog objašnjenja?
Es gibt keinen Gott, kein Universum, keine menschliche Rasse, kein irdisches Leben, keinen Himmel, keine Hölle. Es ist alles ein Traum - ein grotesker und dummer Traum. Nichts existiert außer dir. Und du bist nur ein Gedanke - ein vagabundierender Gedanke, ein nutzloser Gedanke, ein heimatloser Gedanke, der verloren in der leeren Ewigkeit wandelt!
Avatar
drade
Postovi: 910
Pridružen/a: 12 svi 2010, 07:57
OS: linux

Re: Selinux problemi

Post Postao/la drade »

shrike je napisao/la:Daje ovo:

Kod: Označi sve

cat: /var/log/audit/audit.log: No such file or directory
Ja sam mislio dati unconfined prava na udev i mount za sada pa vidjeti kako ide dalje, ili da mi netko kaže koja bi trebala biti. ALi, nemam pojma kako dati unconfined prava na udev. Skužio sam da tutoriali po netu ili nisu update, ili naredbe ne rade.
Trebao bi instalirati paket(e) setroubleshoot, audit(d), checkpolicy, a mozda cak i audit2allow (python-sepolgen na debianu).

Onda ces dobiti audit daemon kojime mozes troubleshootati selinux incidente, a uz to ces dobiti i audit2allow tool.

Bukvalno dozvoljavanje kroz "allow rule" ti nece pomoci, jer ti proces treba napraviti tranziciju u drugu domenu. No pokusaj pa vidi, mozda i uspije.

Drugim rijecima, jedna od "deny" poruka odnosi se na proces koji se vrti u domeni:

Kod: Označi sve

mount_t
koji treba pristup datotekama koji imaju type

Kod: Označi sve

var_t
Ukratko, kako bi to bilo moguce, moras napraviti nekakav "entrypoint" za tranziciju u drugu domenu.

Tupi "allow rule" bi mogao biti nesto poput (ovo je bez tranzicije, a iz prilozenog log izvadka):

Kod: Označi sve

allow fsadm_t device_t:chr_file { add_name };
allow mount_t var_t:file { read };
allow mount_t device_t:dir { write };
EDIT:
Pokusaj napraviti relabel sustava (mozda to popravi selinux "deny" poruke)"

Kod: Označi sve

touch /.autorelabel
reboot
Mozes pokusati i komandom:

Kod: Označi sve

restorecon -vvFR /direktorij
Mozda ce popraviti situaciju, a mozda napraviti vecu sracku.
When you're a kid and you wanna go "Weee !", but you ain't got drugs yet ... You hold out for your life, hold on to your little GONADS ... and STRIFE.
Avatar
shrike
Moderator
Postovi: 10322
Pridružen/a: 07 pro 2007, 18:07
Spol: Y
OS: utuntu 19.10
Kontakt:

Re: Selinux problemi

Post Postao/la shrike »

OK, nisam razumio previše, a i da jesam ne znam kak ouraditi išta od toga.- Koja točn onaredba ide i kako točno izgleda da dam nečemu prava za var_t, kako se vrši tranzicija u domenu, što zapravo jesu te tranzicije, itd?
Jer ovako selinux djeluje kao čisto smeće. program koji je to trabao uključiti nije to uradio, program koji treba mijenjati pravila je to nesposoban i da dobijem imalo spsooban sustav trebam izvoditi čuda.

EDIT:

ovo sa autorelebel nikada nije radilo i nije mi jasno zašto bi i što bi to uopće radilo? relabel na bootu nikada nije pomogao.
Es gibt keinen Gott, kein Universum, keine menschliche Rasse, kein irdisches Leben, keinen Himmel, keine Hölle. Es ist alles ein Traum - ein grotesker und dummer Traum. Nichts existiert außer dir. Und du bist nur ein Gedanke - ein vagabundierender Gedanke, ein nutzloser Gedanke, ein heimatloser Gedanke, der verloren in der leeren Ewigkeit wandelt!
Avatar
drade
Postovi: 910
Pridružen/a: 12 svi 2010, 07:57
OS: linux

Re: Selinux problemi

Post Postao/la drade »

shrike je napisao/la:OK, nisam razumio previše, a i da jesam ne znam kak ouraditi išta od toga.- Koja točn onaredba ide i kako točno izgleda da dam nečemu prava za var_t, kako se vrši tranzicija u domenu, što zapravo jesu te tranzicije, itd?
Jer ovako selinux djeluje kao čisto smeće. program koji je to trabao uključiti nije to uradio, program koji treba mijenjati pravila je to nesposoban i da dobijem imalo spsooban sustav trebam izvoditi čuda.
Ajde kreni s alatima koje sam ti naveo na pocetku posta, vrati se na onaj audit2allow "crap" pa procackaj po custom.te datoteci.

Ako ti autorelabel ne radi, mozes pokusati:

Kod: Označi sve

fixfiles relabel
reboot
EDIT:
setsebool komanda ti ne uspijeva jer se omogucuje na ovaj nacin (koliko ti je to pametno ...):

Kod: Označi sve

setsebool allow_execmem 1
When you're a kid and you wanna go "Weee !", but you ain't got drugs yet ... You hold out for your life, hold on to your little GONADS ... and STRIFE.
Avatar
shrike
Moderator
Postovi: 10322
Pridružen/a: 07 pro 2007, 18:07
Spol: Y
OS: utuntu 19.10
Kontakt:

Re: Selinux problemi

Post Postao/la shrike »

Evo, jedini output iz custom.te je ovo:

Kod: Označi sve

module local 1.0;

Jedino što dobijem sa setsebool je ovo:

Kod: Označi sve

Usage:  setsebool [ -P ] boolean value | bool1=val1 bool2=val2...
probao sam već sve kombinacije i nijedna ne radi.
Es gibt keinen Gott, kein Universum, keine menschliche Rasse, kein irdisches Leben, keinen Himmel, keine Hölle. Es ist alles ein Traum - ein grotesker und dummer Traum. Nichts existiert außer dir. Und du bist nur ein Gedanke - ein vagabundierender Gedanke, ein nutzloser Gedanke, ein heimatloser Gedanke, der verloren in der leeren Ewigkeit wandelt!
Avatar
drade
Postovi: 910
Pridružen/a: 12 svi 2010, 07:57
OS: linux

Re: Selinux problemi

Post Postao/la drade »

shrike je napisao/la:Evo, jedini output iz custom.te je ovo:

Kod: Označi sve

module local 1.0;

Jedino što dobijem sa setsebool je ovo:

Kod: Označi sve

Usage:  setsebool [ -P ] boolean value | bool1=val1 bool2=val2...
probao sam već sve kombinacije i nijedna ne radi.
Ovo si takodjer probao ?:

Kod: Označi sve

setsebool -P allow_execmem 1
Ajde umjesto audit2allow -m local napravi:

Kod: Označi sve

ausearch -m AVC --comm mount | audit2allow -M mount_problem.te
i

Kod: Označi sve

ausearch -m AVC --comm findfs | audit2allow -M findfs_problem.te
Pogledaj sadrzaj datoteki mount_problem.te i findfs_problem.te.

EDIT:
Evo ti neki allow rule za igru:

Kod: Označi sve

module wtf 1.0;

require {
	type mount_t;
	type device_t; 
        type fsadm_t;
	type var_r;
};

allow fsadm_t device_t:chr_file { add_name  };
allow mount_t var_t:file { read ioctl getattr };
allow mount_t device_t:dir { write };
Kompiliraj to i loadaj:

Kod: Označi sve

cd /usr/share/selinux/devel/
nano wtf.te (paste-aj gore naveden sadrzaj u datoteku)
make
semodule -i wtf.pp
semodule -l | grep wtf
When you're a kid and you wanna go "Weee !", but you ain't got drugs yet ... You hold out for your life, hold on to your little GONADS ... and STRIFE.
Avatar
shrike
Moderator
Postovi: 10322
Pridružen/a: 07 pro 2007, 18:07
Spol: Y
OS: utuntu 19.10
Kontakt:

Re: Selinux problemi

Post Postao/la shrike »

ausearch (obje verzije) daje

Kod: Označi sve

<no matches>
only letters and numbers allowed in module names
kompiliranje ne radi jer make ne može ništa naći. ako treba dati kakve ekstra opcije za make, ne znam.

Nikakva kombinacija, ukljućujući

Kod: Označi sve

setsebool -P allow_execmem 1
ne radi.
Da li postoji make.pp i udevd.pp negdje da se može skinuti?

Fascinantno mi je kako postoji čitavi more ultrakompliciranih i realno jedva koristivi alata, uključujući GUI alate, za debugiranje selinuxa, ali jedva koji za postavljanje selinuxa (ti koji i postoje su za fedoru ili abandonware koji neradi). Moj dojam da je selinux beskorisno, ekstremno loše osmišljeno smeće raste eksponencijalno. Ipak, želim ići do kraja i vidjeti da li aura oko selinuxa ipak ima neki sadržaj ili je to sve stvar mitova i legendi. Kakav je idući savjet?
Es gibt keinen Gott, kein Universum, keine menschliche Rasse, kein irdisches Leben, keinen Himmel, keine Hölle. Es ist alles ein Traum - ein grotesker und dummer Traum. Nichts existiert außer dir. Und du bist nur ein Gedanke - ein vagabundierender Gedanke, ein nutzloser Gedanke, ein heimatloser Gedanke, der verloren in der leeren Ewigkeit wandelt!
Odgovori