Portál AbcLinuxu, 25. dubna 2024 00:14


Dotaz: selinux blokuje firewall-cmd spuštěný z udev

13.10.2014 01:18 miro
selinux blokuje firewall-cmd spuštěný z udev
Přečteno: 302×
Odpovědět | Admin
Používám Fedoru 20.

Vytvořil jsem si v udev pravidlo na spouštění skriptu. Skript se začne provádět, ale kousne se na prvním řádku s příkazem firewall-cmd (firewall-cmd --query-masquerade nebo firewall-cmd --add-masquerade). Pokud skript spustím sám z příkazové řádky jako root, dělá to, co má. Pokud vypnu selinux, skript dělá to, co má, i když je spuštěn pravidlem v udev. Se zapnutým selinuxem to však z udev nefunguje.

grep setroubleshoot /var/log/messages nenajde nic.

Když se pokusím odchytit výstup z firewall-cmd pomocí /bin/firewall-cmd --query-masquerade &>> /path/to/mylog, najdu v logu tento výstup (když ten log sleduji pomocí tail -f, tak to trvá cca 25 vteřin):

ERROR:dbus.proxies:Introspect error on :1.9:/org/fedoraproject/FirewallD1: dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

Další řádky skriptu už se neprovedou. To se samozřejmě týká jen situace, kdy je skript spuštěn pravidlem v udev a při zapnutém selinuxu. Pokud spustím skript ručně nebo pokud mám vypnutý selinux, tak tam ta chybová hláška není.

Je mi jasné, že musím něco povolit někde v selinuxu, ale netuším co a kde mám hledat, nevěděl by někdo?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.10.2014 09:05 lieko
Rozbalit Rozbalit vše Re: selinux blokuje firewall-cmd spuštěný z udev
Odpovědět | | Sbalit | Link | Blokovat | Admin
Skontroluj

/var/log/audit/audit.log
13.10.2014 22:48 miro
Rozbalit Rozbalit vše Re: selinux blokuje firewall-cmd spuštěný z udev
audit.log mi vyplivnul toto:
type=USER_AVC msg=audit(1413231256.362:421): pid=509 uid=81 auid=4294967295 ses=4294967295 subj=system_u:system_r:system_dbusd_t:s0-s0:c0.c1023 msg='avc:  denied  { send_msg } for msgtype=method_return dest=:1.69 spid=468 tpid=3369 scontext=system_u:system_r:firewalld_t:s0 tcontext=system_u:system_r:udev_t:s0-s0:c0.c1023 tclass=dbus  exe="/usr/bin/dbus-daemon" sauid=81 hostname=? addr=? terminal=?'
type=USER_AVC msg=audit(1413231256.363:422): pid=509 uid=81 auid=4294967295 ses=4294967295 subj=system_u:system_r:system_dbusd_t:s0-s0:c0.c1023 msg='avc:  denied  { send_msg } for msgtype=method_return dest=:1.69 spid=468 tpid=3369 scontext=system_u:system_r:firewalld_t:s0 tcontext=system_u:system_r:udev_t:s0-s0:c0.c1023 tclass=dbus  exe="/usr/bin/dbus-daemon" sauid=81 hostname=? addr=? terminal=?'
type=USER_AVC msg=audit(1413231256.363:423): pid=509 uid=81 auid=4294967295 ses=4294967295 subj=system_u:system_r:system_dbusd_t:s0-s0:c0.c1023 msg='avc:  denied  { send_msg } for msgtype=method_return dest=:1.69 spid=468 tpid=3369 scontext=system_u:system_r:firewalld_t:s0 tcontext=system_u:system_r:udev_t:s0-s0:c0.c1023 tclass=dbus  exe="/usr/bin/dbus-daemon" sauid=81 hostname=? addr=? terminal=?'
type=USER_AVC msg=audit(1413231256.365:424): pid=509 uid=81 auid=4294967295 ses=4294967295 subj=system_u:system_r:system_dbusd_t:s0-s0:c0.c1023 msg='avc:  denied  { send_msg } for msgtype=method_return dest=:1.69 spid=468 tpid=3369 scontext=system_u:system_r:firewalld_t:s0 tcontext=system_u:system_r:udev_t:s0-s0:c0.c1023 tclass=dbus  exe="/usr/bin/dbus-daemon" sauid=81 hostname=? addr=? terminal=?'
type=USER_AVC msg=audit(1413231281.376:425): pid=509 uid=81 auid=4294967295 ses=4294967295 subj=system_u:system_r:system_dbusd_t:s0-s0:c0.c1023 msg='avc:  denied  { send_msg } for msgtype=method_return dest=:1.69 spid=468 tpid=3369 scontext=system_u:system_r:firewalld_t:s0 tcontext=system_u:system_r:udev_t:s0-s0:c0.c1023 tclass=dbus  exe="/usr/bin/dbus-daemon" sauid=81 hostname=? addr=? terminal=?'
Co s tím dál, to zatím netuším.
14.10.2014 00:22 miro
Rozbalit Rozbalit vše Re: selinux blokuje firewall-cmd spuštěný z udev
Výše uvedený výstup zkopnu třebas do /root/my-audit.log a pak:
#audit2allow -m local -l -i /root/my-audit.log > /root/local.te
#cat /root/local.te

module local 1.0;

require {
	type udev_t;
	type firewalld_t;
	class dbus send_msg;
}

#============= firewalld_t ==============
allow firewalld_t udev_t:dbus send_msg;

#checkmodule -M -m -o local.mod local.te
#semodule_package -o local.pp -m local.mod
#semodule -i local.pp
Díky liekovi za nakopnutí, linuxforums za řešení a všem ostatním za přečtení. A povzdech nakonec - pořád mi ten selinux připadá strašně neintuitivní. A řekl bych, že zdaleka nejsem sám.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.