Deze sectie bevat de beste praktijken die gevolgd moeten worden om Zabbix op een veilige manier op te zetten.
De hier vermelde praktijken zijn niet vereist voor de werking van Zabbix. Ze worden aanbevolen voor een betere beveiliging van het systeem.
Het principe van minimale rechten moet te allen tijde worden toegepast bij Zabbix. Dit principe betekent dat gebruikersaccounts (in de Zabbix frontend) of procesgebruikers (voor Zabbix-server/proxy of agent) alleen die rechten hebben die essentieel zijn voor het uitvoeren van beoogde functies. Met andere woorden, gebruikersaccounts moeten te allen tijde worden uitgevoerd met zo min mogelijk rechten.
Het geven van extra rechten aan het 'zabbix'-gebruiker zal het in staat stellen om toegang te krijgen tot configuratiebestanden en bewerkingen uit te voeren die de algehele beveiliging van de infrastructuur kunnen compromitteren.
Bij het implementeren van het principe van minimale rechten voor gebruikersaccounts, moeten frontend gebruikerstypen in Zabbix in aanmerking worden genomen. Het is belangrijk om te begrijpen dat hoewel een gebruikerstype "Admin" minder rechten heeft dan het gebruikerstype "Super Admin", het wel administratieve rechten heeft waarmee configuraties kunnen worden beheerd en aangepaste scripts kunnen worden uitgevoerd.
Sommige informatie is zelfs beschikbaar voor niet-bevoorrechte gebruikers. Bijvoorbeeld, hoewel Alerts → Scripts niet beschikbaar is voor niet-Super Admins, zijn de scripts zelf beschikbaar voor ophalen via de Zabbix API. Het beperken van scriptrechten en het niet toevoegen van gevoelige informatie (zoals toegangscertificaten, etc.) moet worden gebruikt om blootstelling van gevoelige informatie die beschikbaar is in globale scripts te vermijden.
In de standaardconfiguratie delen Zabbix-server- en Zabbix-agent-processen één 'zabbix'-gebruiker. Als u wilt zorgen dat de agent geen toegang heeft tot gevoelige gegevens in de serverconfiguratie (bijvoorbeeld inloggegevens voor de database), moet de agent worden uitgevoerd als een andere gebruiker:
UTF-8 is de enige codering die door Zabbix wordt ondersteund. Het staat bekend om zijn probleemloze werking zonder enige beveiligingsproblemen. Gebruikers dienen zich ervan bewust te zijn dat er bekende beveiligingsproblemen zijn bij het gebruik van sommige andere coderingen.
Bij het gebruik van Windows-installatieprogramma's wordt aanbevolen om de standaard paden te gebruiken die door het installatieprogramma worden geboden. Het gebruik van aangepaste paden zonder de juiste rechten kan de beveiliging van de installatie in gevaar brengen.
Op RHEL, installeer het mod_ssl-pakket:
Maak een map aan voor SSL-sleutels:
Maak een SSL-certificaat aan:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/private/apache-selfsigned.key -out /etc/httpd/ssl/apache-selfsigned.crt
Vul de prompts passend in. De belangrijkste regel is degene die om de Common Name vraagt. U moet de domeinnaam invoeren die u met uw server wilt associëren. Als u geen domeinnaam heeft, kunt u in plaats daarvan het openbare IP-adres invoeren. We zullen example.com in dit artikel gebruiken.
Landcode (tweeletterige code) [XX]:
Naam van provincie of staat (volledige naam) []:
Plaatsnaam (bijv. stad) [Default City]:
Organisatienaam (bijv. bedrijf) [Default Company Ltd]:
Naam van organisatie-eenheid (bijv. sectie) []:
Common Name (bijv. uw naam of de hostnaam van uw server) []:example.com
E-mailadres []:
Bewerk Apache SSL-configuratie:
/etc/httpd/conf.d/ssl.conf
DocumentRoot "/usr/share/zabbix"
ServerName example.com:443
SSLCertificateFile /etc/httpd/ssl/apache-selfsigned.crt
SSLCertificateKeyFile /etc/httpd/ssl/private/apache-selfsigned.key
Herstart de Apache-service om de wijzigingen toe te passen:
Voeg een virtuele host toe aan de Apache-configuratie en stel een permanente omleiding in voor de document root naar de Zabbix SSL-URL. Vergeet niet example.com te vervangen door de werkelijke naam van de server.
/etc/httpd/conf/httpd.conf
#Voeg de volgende regels toe
<VirtualHost *:*>
ServerName example.com
Redirect permanent / https://example.com
</VirtualHost>
Herstart de Apache-service om de wijzigingen toe te passen:
Om Zabbix frontend te beschermen tegen aanvallen waarbij het protocol wordt gedowngraded, raden we aan om een HSTS (HTTP Strict Transport Security) beleid in te schakelen op de webserver.
Bijvoorbeeld, om het HSTS-beleid in te schakelen voor je Zabbix frontend in de Apache-configuratie:
voeg de volgende opdracht toe aan de configuratie van je virtuele host:
Herstart de Apache-service om de wijzigingen toe te passen:
To protect Zabbix frontend against Cross Site Scripting (XSS), data injection, and similar attacks, we recommend enabling Content Security Policy on the web server. To do so, configure the web server to return the HTTP header.
The following CSP header configuration is only for the default Zabbix frontend installation and for cases when all content originates from the site's domain (excluding subdomains). A different CSP header configuration may be required if you are, for example, configuring the URL widget to display content from the site's subdomains or external domains, switching from OpenStreetMap to another map engine, or adding external CSS or widgets.
To enable CSP for your Zabbix frontend in Apache configuration, follow these steps:
1. Locate your virtual host's configuration file:
/etc/httpd/conf/httpd.conf
on RHEL-based systems/etc/apache2/sites-available/000-default.conf
on Debian/Ubuntu2. Add the following directive to your virtual host's configuration file:
<VirtualHost *:*>
Header set Content-Security-Policy: "default-src 'self' *.openstreetmap.org; script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; img-src 'self' data: *.openstreetmap.org; style-src 'self' 'unsafe-inline'; base-uri 'self'; form-action 'self';"
</VirtualHost>
3. Restart the Apache service to apply the changes:
# On RHEL-based systems:
systemctl restart httpd.service
# On Debian/Ubuntu
systemctl restart apache2.service
Het wordt aanbevolen om als onderdeel van het verhardingsproces van de webserver alle webserverhandtekeningen uit te schakelen. De webserver geeft standaard een softwarehandtekening weer:
De handtekening kan worden uitgeschakeld door twee regels toe te voegen aan het configuratiebestand van Apache (als voorbeeld gebruikt):
De PHP-handtekening (X-Powered-By HTTP-header) kan worden uitgeschakeld door het php.ini-configuratiebestand te wijzigen (de handtekening is standaard uitgeschakeld):
Voor configuratiewijzigingen in het configuratiebestand is het vereist om de webserver opnieuw te starten.
Er kan een extra beveiligingsniveau worden bereikt door gebruik te maken van mod_security (pakket libapache2-mod-security2) met Apache. mod_security maakt het mogelijk om de serverhandtekening te verwijderen in plaats van alleen de versie uit de serverhandtekening te verwijderen. De handtekening kan worden gewijzigd in elke gewenste waarde door "SecServerSignature" te veranderen in een gewenste waarde nadat mod_security is geïnstalleerd.
Raadpleeg de documentatie van uw webserver om hulp te vinden bij het verwijderen/wijzigen van softwarehandtekeningen.
Het wordt aanbevolen om standaard foutpagina's uit te schakelen om informatieblootstelling te voorkomen. De webserver gebruikt standaard ingebouwde foutpagina's:
Standaard foutpagina's moeten worden vervangen/verwijderd als onderdeel van het proces van het verharden van de webserver. De "ErrorDocument"-richtlijn kan worden gebruikt om een aangepaste foutpagina/tekst te definiëren voor de Apache-webserver (als voorbeeld gebruikt).
Raadpleeg de documentatie van je webserver voor hulp bij het vervangen/verwijderen van standaardfoutpagina's.
Het wordt aanbevolen om de webserver testpagina te verwijderen om informatieblootstelling te voorkomen. Standaard bevat de webroot van de webserver een testpagina genaamd index.html (Apache2 op Ubuntu wordt hier als voorbeeld gebruikt):
De testpagina moet worden verwijderd of ontoegankelijk worden gemaakt als onderdeel van het proces om de webserver te beveiligen.
Standaard is Zabbix geconfigureerd met de X-Frame-Options HTTP-responsheader ingesteld op SAMEORIGIN
, wat betekent dat inhoud alleen kan worden geladen in een frame met dezelfde oorsprong als de pagina zelf.
Zabbix frontend-elementen die inhoud ophalen van externe URL's (namelijk, de URL dashboard widget) tonen de opgehaalde inhoud in een zandbak met alle beperkingen van de zandbak ingeschakeld.
Deze instellingen verbeteren de beveiliging van de Zabbix frontend en bieden bescherming tegen XSS- en clickjacking-aanvallen. Superbeheerders kunnen de parameters voor iframe sandboxing en X-Frame-Options HTTP-responsheader wijzigen zoals nodig. Weeg de risico's en voordelen zorgvuldig af voordat u de standaardinstellingen wijzigt. Het volledig uitschakelen van sandboxing of X-Frame-Options wordt niet aanbevolen.
De Zabbix Windows-agent die is gecompileerd met OpenSSL, probeert toegang te krijgen tot het SSL-configuratiebestand in c:\openssl-64bit. De map "openssl-64bit" op schijf C: kan worden aangemaakt door niet-bevoegde gebruikers.
Dus voor het beveiligen van de beveiliging is het nodig om deze map handmatig aan te maken en de schrijftoegang voor niet-beheerdersgebruikers in te trekken.
Houd er rekening mee dat de mappennamen verschillend zullen zijn op 32-bits en 64-bits versies van Windows.
Om de complexiteit van aanvallen op wachtwoord-brute force te vergroten, wordt voorgesteld om de toegang tot het bestand ui/data/top_passwords.txt
te beperken door de configuratie van de webserver aan te passen. Dit bestand bevat een lijst van de meest voorkomende en contextspecifieke wachtwoorden, en wordt gebruikt om gebruikers te weerhouden dergelijke wachtwoorden in te stellen als de parameter Vermijd gemakkelijk te raden wachtwoorden is ingeschakeld in het wachtwoordbeleid.
Bijvoorbeeld bij NGINX kan toegang tot het bestand worden beperkt door gebruik te maken van de location
-directive:
Bij Apache kan dit worden gedaan met behulp van een .htaccess
-bestand: