blog_hero_SELinux beleid voor Zabbix maken

SELinux beleid voor Zabbix maken

Jul 01 2023

Controleren of SELinux blokkeert

SELinux zorgt voor een extra beveiliging op Linux servers. Die beveiliging werkt in bepaalde gevallen beter dan het moet. Het is in die scenario's niet duidelijk of SELinux een blokkerend element is. Hiervoor kan je snel SELinux even op een toegankelijkere stand zetten. Het grote voordeel hiervan is dat er naast het ontbreken van blokkades, er wel wordt bijgehouden wat er geblokkeerd zou worden.

# Zet SELinux tijdelijk op permissive
sudo setenforce 0

Nu kan je in het audit-log controleren welke hits er gemaakt werden:

# Audit2why maakt de soms grote blob tekst beter leesbaar.
sudo cat /var/log/audit/audit.log | audit2why

Een beleid aanmaken en activeren

Als SELinux ongewenst iets blokkeert, kunnen we daar een module voor aanmaken en soms in heel simpele gevallen, kunnen we een standaard module simpelweg activeren. Deze standaard modules komen mee met de installaties van het softwarepakket.

Standaard beleid activeren

Als uit het auditlog iets vergelijkbaars met hieronder komt, kan je de lijn die daar vermeldt wordt, simpelweg uitvoeren en dan ben je klaar. Best kan je deze setting dan ook opnemen in een configuratiesysteem om ervoor te zorgen dat als je een gelijkaardige server opzet, dit meteen goed staat.

In onderstaand voorbeeld voeren we dan dit commando uit:

sudo setsebool -P zabbix_can_network 1

Auditlog met duidelijk te activeren SELinux policy

Zelf een beleid maken

In het geval dat er geen standaard beleid beschikbaar is voor het probleem dat je ervaart, gaat je geen oneliner terugkrijgen van SELinux en moet je zelf een beleid genereren. Dat kan je zelf met een aantal stappen. In het audit log kan dan verschillende rechten terugvinden voor bepaalde processen.

Ontbrekende SELinux beleid voor Zabbix agent

Hier zie je dat zabbix_agent_t een blokkade krijgt. Dat is niet wenselijk. De eerste stap om hier nu een correct beleid van te maken, is via onderstaand commando waar we alle entries verzamelen die te maken hebben met zabbix_agent_t. Dit wordt dan opgeslagen in zabbix_agent.te in een heel leesbare vorm. Je zal in het bestand verschillende unieke overeenkomsten terugvinden.

sudo ausearch --raw | grep zabbix_agent_t | audit2allow -M zabbix_agent

Als we het zabbix_agent.te bestand hebben uit het voorgaande proces,kunnen we van het .te-bestand een .mod-bestand maken en daarna ook een .pp-bestand die SELinux kan gebruiken voor de policy te gebruiken. Dat doen we zo:

# Eerst het .mod bestand aanmaken
checkmodule -M -m -o zabbix_agent.mod zabbix_agent.te
# Daarna het .pp. Dit is de effectieve policy
semodule_package -o zabbix_agent.pp -m zabbix_agent.mod
```

Nu staat de policy in het ``.pp-bestand`` en kan je die toepassen zodat deze actief wordt in SELinux.

```bash
sudo semodule -i zabbix_agent.pp
```