Tworzenie modułów selinux dla nowych aplikacji

Jeżeli selinux blokuje nam działanie jakieś aplikacji, na środowisku testowym wprowadzamy selinux w tryb targeted permissive:

setselinux 0

instalujemy pakiet troubleshootingu

yum install setroubleshoot-server

czyścimy plik /var/log/audit/audit.log

mv /var/log/audit/audit.log /var/log/audit/audit.log_old

Uruchamiamy aplikację

np: systemctl start nginx

Korzystamy z niej przez chwilę tak, aby wygenerować wszystkie możliwe przypadki użycia

Po czym korzystamy z audit2allow do wygenerowania reguł selinuksa .te

cat /var/log/audit/audit.log | audit2allow -l -v -m nazwamodulu > nazwamodulu.te

W tym miejscu zalecam się zatrzymać i sprawdzić zawartość modułu, czy przypadkiem nie pozwolił na coś za dużo, lub na coś, co nie dotyczy naszej aplikacji.

checkmodule -M -m -o nazwamodulu.mod nazwamodulu.te
semodule_package -o nazwamodulu.pp -m nazwamodulu.mod
semodule -v -i nazwamodulu.pp

przełączamy selinux w tryb enforcing

setselinux 1

i restartujemy aplikację, np. nginx

systemctl restart nginx

Następnie należy zweryfikować, czy aplikacja zachowuje się poprawnie.