webroot van Apache verplaatst naar `/plf/www`
---
## ๐ง Stap 1 โ Maak de nieuwe webroot-directory aan
bash
sudo mkdir -p /plf/www/html /plf/www/cgi-bin
---
## ๐ Stap 2 โ Stel de bestandsrechten correct in
bash
sudo chmod -R 755 /plf
๐น Betekent:
* **Eigenaar**: lezen, schrijven, uitvoeren
* **Groep/anderen**: lezen, uitvoeren
---
## ๐ Stap 3 โ Pas Apache-configuratie aan
### Open het hoofdbestand van Apache:
bash
sudo nano /etc/httpd/conf/httpd.conf
๐ Zoek en vervang elk voorkomen van `/var/www` met `/plf/www`.
Gebruik in **Nano**:
* `Ctrl + \` om te zoeken en vervangen
* Typ: `/var/www` โ druk Enter
* Typ: `/plf/www` โ druk Enter
* Kies โAโ (All) om alles te vervangen
๐พ Sla op met `Ctrl + O`, sluit af met `Ctrl + X`.
---
## ๐ Stap 4 โ Herstart Apache
bash
sudo systemctl restart httpd
Gebruik dit om te controleren of het werkt:
bash
sudo systemctl status httpd
---
## ๐ Stap 5 โ Maak een testpagina aan
bash
sudo nano /plf/www/html/test.html
Plak deze inhoud:
html
Testpagina
Testpagina
---
## ๐งช Stap 6 โ Test de website in browser of met `curl`
bash
curl http://rocky1.domain.test/test.html
๐ด Je zult nu waarschijnlijk een **403 Forbidden** melding krijgen vanwege SELinux.
---
## ๐ Stap 7 โ Controleer SELinux-fout via log
bash
sudo tail -n 25 /var/log/httpd/error_log
Als daar iets staat zoals:
Permission denied: AH00035: access to /test.html denied (filesystem path '/plf/www/html/test.html')...
Gebruik dan:
bash
sudo grep http /var/log/audit/audit.log | audit2why
๐ง **audit2why** legt uit *waarom* SELinux het blokkeert (meestal omdat het bestand geen juiste context heeft).
---
## ๐ Stap 8 โ Vergelijk de SELinux contexten
bash
ls -Z /var/www
ls -Z /plf/www
Je zult zien dat `/var/www` bestandslabels zoals `httpd_sys_content_t` heeft, maar `/plf/www` **niet**.
---
## โ
Stap 9 โ Tijdelijke oplossing met `chcon`
bash
sudo chcon -R -t httpd_sys_content_t /plf/www
Test opnieuw:
bash
curl http://rocky1.domain.test/test.html
โ
Als het nu **werkt**, weet je dat SELinux het veroorzaakte.
---
## ๐ Stap 10 โ Test reset via `restorecon`
bash
sudo restorecon -R /plf/www
๐ก Dit **herstelt** de labels naar wat SELinux verwacht volgens de bestaande policy.
bash
curl http://rocky1.domain.test/test.html
โ Nu zie je weer **Forbidden**, want de context is teruggezet naar een niet-werkende standaard.
---
## ๐ ๏ธ Stap 11 โ Structurele oplossing met `semanage`
Geef SELinux permanent toestemming om `/plf/www` te gebruiken voor Apache-content:
bash
sudo semanage fcontext -a -t httpd_sys_content_t "/plf/www(/.*)?"
๐ Daarna de context opnieuw toepassen:
bash
sudo restorecon -R -v /plf/www
๐งช Test weer:
bash
curl http://rocky1.domain.test/test.html
---
## ๐ Stap 12 โ Voeg een tweede testpagina toe
bash
sudo nano /plf/www/html/test2.html
Plak:
html
Testpagina 2
Testpagina 2
Test:
bash
curl http://rocky1.domain.test/test2.html
โ
Als deze werkt zonder `Forbidden`, dan zijn je rechten en SELinux-permissies nu correct en **blijvend** ingesteld.
---
## ๐งผ Handige controle-commando's
| Doel | Commando | |
| ---------------------------------- | ------------------------------ | ----------- |
| Controleer HTTP-poorten in SELinux | \`sudo semanage port -l | grep http\` |
| Controleer Apache-status | `sudo systemctl status httpd` | |
| Controleer firewall-instellingen | `sudo firewall-cmd --list-all` | |
| Controleer SELinux status | `sestatus` | |
| Controleer huidige SELinux labels | `ls -Z /plf/www/html` | |