SELinux User: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 30: | Zeile 30: | ||
== Bedeutung dieser Fehlermeldung == | == Bedeutung dieser Fehlermeldung == | ||
| − | '''ping''' sagt, dass der Socket keine Berechtigung hat | + | '''ping''' sagt, dass der Socket keine Berechtigung hat. |
Den genauen Verstoß kann man mit '''ausearch''' anzeigen und die Behebung mit '''audit2allow''': | Den genauen Verstoß kann man mit '''ausearch''' anzeigen und die Behebung mit '''audit2allow''': | ||
| Zeile 72: | Zeile 72: | ||
== Weitere Rechte freigeben == | == Weitere Rechte freigeben == | ||
| − | Wenn ''xinux'' jetzt versucht '''ping''' zu benutzen, dann kommt folgende Meldung: | + | Wenn ''xinux'' jetzt versucht '''ping''' zu benutzen, dann kommt folgende Meldung: |
| + | |||
| + | * ping localhost | ||
<!-----> | <!-----> | ||
ping: socket: Die Operation ist nicht erlaubt | ping: socket: Die Operation ist nicht erlaubt | ||
| − | Diagnose | + | Diagnose: |
| + | |||
| + | * ausearch -m AVC -ts recent | ||
| + | |||
| + | <!-----> | ||
| + | ---- | ||
| + | time->Tue Nov 29 09:44:19 2022 | ||
| + | type=AVC msg=audit(1669711459.943:667): avc: denied { net_raw } for pid=14186 comm="ping" capability=13 scontext=user_u:user_r:user_t:s0 tcontext=user_u:user_r:user_t:s0 tclass=capability permissive=0 | ||
| + | ---- | ||
| + | time->Tue Nov 29 09:44:19 2022 | ||
| + | type=AVC msg=audit(1669711459.943:668): avc: denied { net_raw } for pid=14186 comm="ping" capability=13 scontext=user_u:user_r:user_t:s0 tcontext=user_u:user_r:user_t:s0 tclass=capability permissive=0 | ||
| + | * ausearch -m AVC -ts recent | audit2allow -R | ||
| + | |||
| + | <!-----> | ||
| + | require { | ||
| + | type user_t; | ||
| + | class capability net_raw; | ||
| + | } | ||
| + | |||
| + | #============= user_t ============== | ||
| + | allow user_t self:capability net_raw; | ||
| + | Diese Zeilen fügen wir zu der bestehenden ''.te''-Datei hinzu: | ||
| + | |||
| + | module my_user_ping 1.0; | ||
| + | |||
| + | require { | ||
| + | type user_t; | ||
| + | class icmp_socket create; | ||
| + | class rawip_socket create; | ||
| + | '''class capability net_raw;''' | ||
| + | } | ||
| + | |||
| + | #============= user_t ============== | ||
| + | allow user_t self:icmp_socket create; | ||
| + | allow user_t self:rawip_socket create; | ||
| + | '''allow user_t self:capability net_raw;''' | ||
| + | <span id="neu-kompilieren-und-installieren"></span> | ||
| + | === Neu kompilieren und installieren: === | ||
| + | |||
| + | * make -f /usr/share/selinux/devel/Makefile my_user_ping.pp | ||
| + | * semodule -i my_user_ping.pp | ||
Version vom 29. November 2022, 08:52 Uhr
SELinux-Kontext des jetzigen Benutzers ausgeben
- id -Z (Ausgangseinstellung für jeden Benutzer):
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
User xinux dem SELinux User user_u zuordnen und user_ping ausschalten
- semanage login -a -s user_u xinux
- id -Z (als xinux):
user_u:user_r:user_t:s0
- setsebool user_ping 0
Ping für SELinux User user_u per eigenes Modul freischalten
- xinux
- ping localhost
Bedeutung dieser Fehlermeldung
ping sagt, dass der Socket keine Berechtigung hat.
Den genauen Verstoß kann man mit ausearch anzeigen und die Behebung mit audit2allow:
- ausearch -m AVC -ts recent
----
time->Tue Nov 29 09:02:06 2022
type=AVC msg=audit(1669708926.962:629): avc: denied { create } for pid=13973 comm="ping" scontext=user_u:user_r:user_t:s0 tcontext=user_u:user_r:user_t:s0 tclass=icmp_socket permissive=0
----
time->Tue Nov 29 09:02:06 2022
type=AVC msg=audit(1669708926.962:630): avc: denied { create } for pid=13973 comm="ping" scontext=user_u:user_r:user_t:s0 tcontext=user_u:user_r:user_t:s0 tclass=rawip_socket permissive=0
----
time->Tue Nov 29 09:02:06 2022
type=AVC msg=audit(1669708926.962:631): avc: denied { create } for pid=13973 comm="ping" scontext=user_u:user_r:user_t:s0 tcontext=user_u:user_r:user_t:s0 tclass=icmp_socket permissive=0
----
time->Tue Nov 29 09:02:06 2022
type=AVC msg=audit(1669708926.962:632): avc: denied { create } for pid=13973 comm="ping" scontext=user_u:user_r:user_t:s0 tcontext=user_u:user_r:user_t:s0 tclass=rawip_socket permissive=0
- ausearch -m AVC -ts recent | audit2allow -R
require {
type user_t;
class icmp_socket create;
class rawip_socket create;
}
#============= user_t ==============
allow user_t self:icmp_socket create;
allow user_t self:rawip_socket create;
audit2allow Vorschlag installieren
- In diesem Fall ist der Vorschlag von audit2allow relativ sinnvoll, da der icmp_socket schon vordefiniert ist.
- ausearch -m AVC -ts recent | audit2allow -M my_user_ping
- semodule -i my_user_ping.pp
Weitere Rechte freigeben
Wenn xinux jetzt versucht ping zu benutzen, dann kommt folgende Meldung:
- ping localhost
ping: socket: Die Operation ist nicht erlaubt
Diagnose:
- ausearch -m AVC -ts recent
----
time->Tue Nov 29 09:44:19 2022
type=AVC msg=audit(1669711459.943:667): avc: denied { net_raw } for pid=14186 comm="ping" capability=13 scontext=user_u:user_r:user_t:s0 tcontext=user_u:user_r:user_t:s0 tclass=capability permissive=0
----
time->Tue Nov 29 09:44:19 2022
type=AVC msg=audit(1669711459.943:668): avc: denied { net_raw } for pid=14186 comm="ping" capability=13 scontext=user_u:user_r:user_t:s0 tcontext=user_u:user_r:user_t:s0 tclass=capability permissive=0
- ausearch -m AVC -ts recent | audit2allow -R
require {
type user_t;
class capability net_raw;
}
#============= user_t ==============
allow user_t self:capability net_raw;
Diese Zeilen fügen wir zu der bestehenden .te-Datei hinzu:
module my_user_ping 1.0;
require {
type user_t;
class icmp_socket create;
class rawip_socket create;
class capability net_raw;
}
#============= user_t ==============
allow user_t self:icmp_socket create;
allow user_t self:rawip_socket create;
allow user_t self:capability net_raw;
Neu kompilieren und installieren:
- make -f /usr/share/selinux/devel/Makefile my_user_ping.pp
- semodule -i my_user_ping.pp