Om deze tutorial beknopt te houden, zullen we niet diep ingaan op het "wat" en "hoe" van de ELK-stack. In plaats daarvan zullen we snel en duidelijk bespreken hoe het te gebruiken met Osquery. We gaan er ook van uit dat je een praktische kennis van SQL hebt, niettegenstaande de meegeleverde gids).
Wat is Osquery?
Osquery, ontwikkeld door Facebook, is een platformonafhankelijke, open-source tool die wordt gebruikt om systemen te doorzoeken en te bewaken met behulp van op SQL gebaseerde zoekopdrachten.
Osquery kan communiceren met het systeem en gedetailleerde informatie verzamelen, zoals geheugengebruik, actieve processen, geladen kernelmodules, hardwaregebeurtenissen, netwerkverbindingen, enz. De tool werkt op alle systemen, inclusief Windows, Linux, Mac en BSD.
Met Osquery kunt u SQL-query's maken die informatie over het systeem weergeven en deze informatie gebruiken om de verzamelde gegevens te controleren en te analyseren.
Osquery installeren op Debian-systemen
Het installeren van Osquery op Debian-systemen is heel eenvoudig, en hoewel het niet beschikbaar is in de belangrijkste repo's van Debian, is het toevoegen ervan vrij eenvoudig.
Laten we eens kijken naar de eerste methode die u kunt gebruiken om Osquery op Debian te installeren:
De eerste en eenvoudigste stap is om het deb-installatieprogramma van de hoofdpagina te downloaden:
https://pkg.osquery.io/deb/osquery_4.6.0-1.linux_amd64.deb
wget https://pkg.osquery.io/deb/osquery_4.6.0-1.linux_amd64.debsudo dpkg -i osquery_4.6.0-1.linux_amd64.deb
We raden de bovenstaande methode aan omdat de deb-pakketten zeer weinig afhankelijk zijn van de meeste Debian-distributies. Als u echter iets aan apt wilt toevoegen, gebruikt u de volgende methode:.
Voer de volgende opdrachten in om Osquery vanuit de repositories te installeren:.
exporteren OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80Bsudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $OSQUERY_KEY
sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb hoofd'
sudo apt-get update
sudo apt-get install osquery
Osquery gebruiken op Debian 10
Voordat we diep ingaan op het bouwen van geautomatiseerde scripts en het werken met de ELK-stack, laten we een paar eenvoudige Osquery-gebruik op het lokale systeem bespreken.
Osquery heeft drie hoofdcomponenten die u kunt gebruiken om met de API te communiceren.
Osquery: Het eerste onderdeel is osqueryi, een interactieve shell-sessie. De osqueryi-modus is volledig op zichzelf staand en vereist geen interactie met de Osquery-Osquery-daemon. Met behulp van de osqueryi-modus kunt u interactief SQL-query's uitvoeren en het huidige systeem verkennen, vergelijkbaar met een SQL-shell.
OPMERKING: Osquery respecteert gebruikersruimten en als u de shell als een normale gebruikersmodus uitvoert, heeft u geen toegang tot bevoorrechte tabellen.
Osqueryd: Het andere onderdeel is osqueryd, de Osquery-daemon die wordt gebruikt om query's te plannen en statuswijzigingen op de achtergrond vast te leggen. De daemon werkt door het aggregeren van queryresultaten die over een specifiek tijdsbestek zijn uitgevoerd en genereert logboeken die worden gebruikt om de statuswijzigingen van elke query te vergelijken.
Osqueryctl: Het derde onderdeel is Osqueryctl, een helperscript dat wordt gebruikt om de implementatieconfiguratie te testen. U kunt het ook gebruiken als een Osquery-servicemanager, zodat u de service kunt starten en stoppen.
Out of the box, Osquery is niets meer dan een eenvoudig hulpmiddel om informatie over het systeem op te vragen. Wanneer u de query's echter combineert om goed gesorteerde en geaggregeerde gegevens te maken, wordt het meer dan een querytool.
Om aan de slag te gaan, laten we beginnen met de basis om te begrijpen hoe het werkt:
De eerste stap is om hulp te krijgen met de opdracht:
sudo osqueryd --helpDit commando geeft de Osquery daemon help weer, met een lijst van argumenten die je in de shell kunt gebruiken.
De volgende, en de gemakkelijkste manier om met Osquery te communiceren, is door de osqueryi-sessie te gebruiken. Als u bijvoorbeeld het commando osqueryi uitvoert zonder een argument, valt u in een SQL-achtige shell:
sudo osqueryiBinnen de osqueryi-shell kunt u opdrachten en SQL-syntaxis uitvoeren om specifieke informatie over het systeem te selecteren.
Gebruik de opdracht om de helpmodus in de osqueryi-shell te bekijken:
osquery > .helpenAls u deze opdracht uitvoert, moet er hulp worden weergegeven met betrekking tot de Osquery-sessie.
Omdat Osquery een relationele database-mapper voor uw systeem is, heeft het een lijst met tabellen die u kunt gebruiken om informatie uit SQLite-query's te selecteren.
OPMERKING: Osquery-query's zijn gebaseerd op SQLite. U kunt de documentatie raadplegen als Osquery niet voldoende informatie biedt:
https://www.sqlite.org/index.html
Gebruik in de osqueryi-shell de opdracht:
osquery > .tafelsDeze opdracht geeft een overzicht van de beschikbare tabellen met systeeminformatie.
Van daaruit kunt u informatie uit de beschikbare schema's selecteren. Bekijk bijvoorbeeld de informatie over DNS-resolvers.
SELECTEER * VAN dns_resolvers;Afhankelijk van het schema dat u opvraagt, krijgt u een enorme hoeveelheid informatie en moet u mogelijk een combinatie van SQL-query's gebruiken om het te begrijpen.
U kunt meer leren over Osquery-tabellen en -schema's in de volgende bron:
https://osquery.io/schema/4.6.0/
Een basis SQL-gids
Osquery werkt door SQLite-syntaxisquery's te gebruiken om informatie over een systeem te verzamelen. Ik heb geen idee waarom Facebook deze route koos, maar het werkt.
Deze eenvoudige zelfstudie bespreekt de basisprincipes van SQLite om uit te leggen hoe u het kunt gebruiken om te communiceren met Osquery.
OPMERKING: Dit is op geen enkele manier bedoeld als een handleiding voor SQL of verwante talen. Raadpleeg de primaire documentatie voor meer taalspecifieke handleidingen.
Specifieke items uit een tabel selecteren
Met behulp van de standaard SQLite-syntaxis kunnen we specifieke informatie uit een tabel selecteren met behulp van de SELECT-instructie zoals weergegeven:
SELECTEER pid, naam, pad FROM processen;SQL-functies toevoegen
Osquery ondersteunt ook SQL-functies, waardoor u verschillende acties kunt uitvoeren met gegevens die uit de query's zijn verzameld.
Met de telfunctie kunt u bijvoorbeeld het aantal gebruikers in uw systeem bekijken.
SELECTEER AANTAL(*) VAN gebruikers;Deze opdracht retourneert het totale aantal gebruikers in het systeem.
De mogelijkheid voor Osquery om SQL-syntaxis te gebruiken is een enorm voordeel dat u kan helpen bij het bouwen van complexe datasets die u een meer diepgaande analyse van een systeem kunnen geven. Het creëert ook een brug die SQL-ontwikkelaars die engines zoals PostgreSQL, MySQL en anderen gebruiken, kunnen gebruiken om zich gemakkelijk aan te passen.
https://osquery.leesdedocs.io/nl/stabiel/introductie/sql/
Een leuk zijproject
Wanneer u Osquery verder onderzoekt en ermee experimenteert, zult u ontdekken dat het een uitgebreide en krachtige tool is waarmee u eenvoudig projecten kunt maken die specifiek zijn afgestemd op het bewaken van uw systemen.
Vanwege de omvang van deze tutorial en om verwarrende beginners te voorkomen, zullen we niet ingaan op complexe projecten. Dat gezegd hebbende, hier zijn enkele hulpmiddelen die u kunt bouwen met Osquery:
- Verzamel logboeken met Logstash
- Bouw een systeemmonitordashboard met Elasticsearch, Logstash en Kibana.
- Bouw Osquery-vloot met Kolide
https://osquery.leesdedocs.io/en/stable/implementatie/log-aggregatie/
https://www.elastisch.co/guide/nl/beats/filebeat/7.10/filebeat-module-osquery.html
https://github.com/fleetdm/fleet
Conclusie
In deze tutorial hebben we gekeken naar de basisprincipes van Osquery, inclusief hoe het te gebruiken om systeeminformatie te verzamelen.
Hoewel niet allesomvattend, was deze gids bedoeld om u een snelle en duidelijke introductie tot Osquery te geven; het was in geen geval een naslaggids.
Voel je vrij om andere bronnen te gebruiken om een dieper inzicht te krijgen in de verschillende concepten die we in deze tutorial hebben besproken.