Files
Blog/posts/1Jul-SELinuxMetZabbix.md
Eli Winderickx 3606b5d8a7 Base 0
2024-03-24 14:41:41 +01:00

66 lines
3.2 KiB
Markdown

---
title: "SELinux beleid voor Zabbix maken"
excerpt: 'Standaard is er een SELinux beleid voor de Zabbix server en agent. Bij de Proxy loopt dat soms mis en moeten we zelf een beleid genereren.'
date: '2023-07-01T18:00:00.000Z'
author: Eli Winderickx
hero_image: /SELinuxZabbix_Cover.png
category: SELinux,Linux,Zabbix,Security
---
## 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.
````bash
# Zet SELinux tijdelijk op permissive
sudo setenforce 0
````
Nu kan je in het audit-log controleren welke hits er gemaakt werden:
````bash
# 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:
```bash
sudo setsebool -P zabbix_can_network 1
```
![Auditlog met duidelijk te activeren SELinux policy](/SELinuxZabbix1.png)
### 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](/SELinuxZabbix2.png)
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.
```bash
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:
````bash
# 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
```