Stranica: 1/3.

Selinux problemi

Postano: 27 ruj 2011, 22:42
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

Re: Selinux problemi

Postano: 27 ruj 2011, 22:53
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.

Re: Selinux problemi

Postano: 27 ruj 2011, 23:04
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.

Re: Selinux problemi

Postano: 27 ruj 2011, 23:40
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?

Re: Selinux problemi

Postano: 27 ruj 2011, 23:41
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.

Re: Selinux problemi

Postano: 27 ruj 2011, 23:54
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.

Re: Selinux problemi

Postano: 27 ruj 2011, 23:56
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

Re: Selinux problemi

Postano: 28 ruj 2011, 00:09
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.

Re: Selinux problemi

Postano: 28 ruj 2011, 00:17
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

Re: Selinux problemi

Postano: 28 ruj 2011, 19:29
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?