/nl-kat-coordination

Repo nl-kat-coordination for minvws

Primary LanguageMakefileEuropean Union Public License 1.2EUPL-1.2

Wat is OpenKAT?

OpenKAT heeft als doel het monitoren, registreren en analyseren van de status van informatiesystemen. Het uitgangspunt is dat veel van de grote beveiligingsincidenten worden veroorzaakt door kleine fouten en bekende kwetsbaarheden en dat als je die tijdig kunt vinden je systemen en infrastructuur een stuk veiliger worden.

OpenKAT scant, verzamelt, analyseert en rapporteert in een permanent proces:

Flow van OpenKAT

OpenKAT scant netwerken, analyseert kwetsbaarheden en maakt toegankelijke rapporten. Het integreert de meest gebruikte netwerktools en scansoftware in een modulair framework, heeft toegang tot externe databases zoals shodan en combineert de informatie uit al deze bronnen in overzichtelijke rapportages.

Het pakket is nuttig als je een complex of omvangrijk systeem wilt monitoren en wilt weten of hierin bekende kwetsbaarheden of configuratiefouten te vinden zijn. Door de modulaire opbouw en uitbreidbaarheid is OpenKAT in een veelheid aan situaties toepasbaar, dat wil zeggen dat je het aan kunt passen en naar je eigen hand kunt zetten.

Documentatie

Wil je meer weten over de werking van OpenKAT, lees dan de uitgebreide documentatie. Een toegankelijk startpunt is de informatiebrochure, waarin ook bovenstaand model wordt uitgelegd. Alle informatie over OpenKAT en de functionaliteit van het pakket is te vinden op de wiki.

Actuele release

De actuele release van OpenKAT is 1.10. De changelog van versie 1.10 is te vinden op de wiki.

Hoe is OpenKAT ontstaan?

Het Ministerie van VWS heeft de 'Kwetsbaarheden Analyse Tool' gebouwd om de eigen infrastructuur en het stelsel rondom CoronaCheck te monitoren. OpenKAT is door eigen programmeurs van het ministerie gebouwd.

De dynamiek van de vaccinatiecampagne leverde voor de informatiebeveiliging een aantal kwesties op:

  • Schaal:

Bij de vaccinatiecampagne zijn enorm veel organisaties betrokken waarmee informatie wordt uitgewisseld.

  • Dynamiek:

COVID houdt zich niet aan een net en planbaar schema maar vroeg zeker in de eerste fase om directe actie. 's Avonds deed de minister een belofte in het parlement, na een nacht doorwerken werden de volgende ochtend weer nieuwe systemen of functies uitgerold.

  • Focus:

De grootste veiligheidsincidenten in dit soort systemen worden veroorzaakt door bekende kwetsbaarheden, configuratiefouten en slordigheid. Ook foutjes bij een update of een nieuwe uitrol na de initiele pentest willen we kunnen vinden.

Hoe lost OpenKAT deze kwesties op?

Toen OpenKAT werd bedacht was vooral duidelijk dat er monitoring moest komen en wel geautomatiseerd, flexibel en herleidbaar. De opbouw van het systeem geeft een indicatie van de mogelijkheden:

  • Framework:

OpenKAT is een framework dat ingezet kan worden voor informatieverzameling, opslag en verwerking. Het is zo flexibel dat 'de stukjes er bijna uitvallen': zo goed als alles wat gescheiden kan worden is dat ook. Zo kan er op nieuwe ontwikkelingen worden gereageerd en konden nieuwe functies worden opgenomen.

  • Plugins voor informatieverzameling:

De 'Boefjes' halen informatie binnen: het zijn plugins varierend van een klein scriptje of scraper tot een externe tool die in een eigen container draait. Is er een nieuw issue dat nog niet wordt gedekt, dan maak je er een boefje voor dat de informatie ophaalt.

  • Forensische borging:

De ruwe data wordt opgeslagen met een hash en een externe timestamp. Hierdoor is terug te halen welke informatie op welk moment is opgeslagen. Komen er nieuwe kwetsbaarheden voor een bepaalde software versie? Dan is die al in het systeem bekend en hoeft er niet apart gescand te worden.

  • Datamodel:

Om alle inputs te verwerken wordt data omgezet in objecten, die passen in een vooraf uitgewerkt datamodel. Zo is een IP adres een object, dat via verschillende routes kan worden gevonden en logische relaties heeft met andere objecten. Het datamodel is uitbreidbaar.

  • Automatisch scannen:

Het pakket zoekt zelf naar informatie, aan de hand van de logische relaties in het datamodel. De resultaten van de scans leiden weer tot nieuwe acties, net als het verstrijken van tijd leidt tot herhaling van eerdere scans.

  • Vrijwaringen per gebruiker en organisatie:

De intensiteit van een scan wordt bepaald aan de hand van de beschikbare vrijwaring. OpenKAT kan genoeg tools aanspreken om een systeem zwaar te belasten en daarvoor is toestemming nodig. Is die er niet, dan kan altijd via 'derden' informatie worden verzameld zoals met shodan en vergelijkbare databases.

  • Bevindingen en rapportages:

De resultaten van de analyse zijn eenvoudig te bekijken, per gebruiker, organisatie, object etc. Rapportages zijn beschikbaar voor veelvoorkomende vragen en eenvoudig uitbreidbaar.

Welke code bevat OpenKAT?

OpenKAT omvat de volgende repositories:

De centrale repo van OpenKAT bevat alle documentatie en informatie om OpenKAT zelf te installeren.

Mula is de scheduler, die in OpenKAT de boefjes aanstuurt.

Octopoes is het datamodel met alle objecten. Octopoes omvat ook de XTDB, waarin alle objecten zijn opgeslagen.

Rocky is de frontend van OpenKAT. Rocky maakt gebruik van Manon Open voor de scheiding van stijl en inhoud.

Bytes bevat de database met ruwe informatie en metadata, met externe signing voor de forensische borging.

Boefjes bevat twee onderdelen van OpenKAT: boefjes, de plugins die scans uitvoeren en whiskers, de normalizers die de data normaliseren en er objecten van maken.

Hoe kan ik OpenKAT installeren en gebruiken?

OpenKAT kan direct worden geinstalleerd met behulp van de installatiehandleiding op de wiki. De standaard installatie werkt in elk geval met Ubuntu en met MacOS X. Er zijn ook debian packages beschikbaar.

Bij het bouwen van een productieomgeving bepalen de beschikbare bronnen en de toepassing hoe ver je de systemen splitst en schaalt. Voorbeelden van de installatiemogelijkheden zijn beschikbaar.

Welke ondersteuning krijgt het project?

OpenKAT is gebouwd door het Ministerie van VWS, Directie Informatiebeleid, programma Realisatie Digitale Ondersteuning. Dit is een tijdelijk programma in verband met de pandemie. De komende periode is er ondersteuning voor de doorontwikkeling van OpenKAT. Onder andere Z-Cert heeft ontwikkeltijd ter beschikking gesteld. Het team staat open voor samenwerking met gebruikers en andere partijen.

Wat levert dit op voor andere open source projecten?

OpenKAT en onderdelen ervan kunnen onder de voorwaarden van de EU PL 1.2 licentie worden toegepast in andere projecten. Zo maakt de frontend gebruik van Manon-Open, een framework waarin content en styling zijn gescheiden en dat goed bruikbaar is voor andere projecten. Daarnaast is het mogelijk om OpenKAT te integreren in andere systemen. Het uitgangspunt is dat het als framework functioneert en aanpasbaar is aan verschillende situaties.

Licenties

Onder welke licentie is OpenKAT vrijgegeven?

OpenKAT is beschikbaar onder de EU PL 1.2 licentie. Deze licentie is gekozen omdat het een redelijke mate van vrijheid biedt, maar wel het publieke karakter waarborgt. De EU PL 1.2 licentie blijft behouden bij verdere verspreiding van de software. Wijzigingen en toevoegingen kunnen plaatsvinden onder de EU PL 1.2 licentie of onder verenigbare licenties, die een vergelijkbaar karakter hebben.

De tools die door OpenKAT worden aangesproken kunnen hun eigen licentie hebben, uit het OS/S domein of vanuit commerciele toepassing. De eigenaar van het systeem dat deze tools aanspreekt is hier zelf verantwoordelijk voor. De opname van nieuwe boefjes in de KAT-alogus wordt geregeld in een aparte overeenkomst.

Plugins bouwen

Het gebruik van plugins zoals boefjes (scraper), whiskers (normalizer) of bits (businessrule) die informatie uit andere tools analyseren maakt het mogelijk om systemen met een ander type licentie met OpenKAT te laten samenwerken. Plugins zijn eenvoudig te bouwen en vallen onder de EU PL 1.2 licentie, voor zover je ze in de KATalogus wilt laten opnemen voor verdere verspreiding. OpenKAT als systeem kan hierdoor prima in een corporate omgeving functioneren.

Meedoen!

Hoe kan ik meedoen en meehelpen?

Je kunt direct meedoen en betrokken zijn bij de ontwikkeling van OpenKAT:

  • Installeer het systeem en gebruik het, geef ons feedback

  • Boef je eigen boefjes, whiskers en bits

  • Help mee om het datamodel uit te breiden

  • Stel nieuwe features voor

  • Stuur bugreports in als issue

  • Help mee met het beschikbaar maken van OpenKAT voor andere operating systems

Kunnen externe ontwikkelaars ook code toevoegen aan het project?

Ja, dat is zeker de bedoeling van het openbaar maken van de broncode. We zijn op zoek naar mensen die willen meehelpen. In eerste instantie ligt de coordinatie van het project bij het ontwikkelteam bij het Ministerie van VWS, maar we staan open voor alle bijdragen. De opzet is om rond OpenKAT een community op te bouwen die de software gebruikt en helpt ontwikkelen, om er zo voor te zorgen dat het een goede bijdrage kan leveren aan de informatiebeveiliging.

Hoe kan ik wijzigingen zoals bugfixes, patches en nieuwe features toevoegen?

Je kunt direct PR’s insturen via Github, of contact opnemen met de community manager via meedoen@openkat.nl.

OpenKAT hanteert de volgende uitgangspunten voor het schrijven van code:

  • python 3.8

  • Alle code via pullrequests met reviews

  • Python met PEP8:

  • Pylint

  • Black, 120 tekens regellengte:

  • Type hinting

  • Tests

Op Github tref je een development branch aan. Hiervoor kunnen pull requests voor review worden aangeleverd. Op basis van de development branch wordt de main branch gevoed, ten behoeve van productiereleases. De reviews worden gedaan door VWS developers.

Als je wilt dat je boefje wordt opgenomen in de KAT-alogus geldt er een aparte regeling, waar we je graag over vertellen. Stuur een mailtje naar meedoen@openkat.nl.

Ik run Arch/NetBSD/OpenVMS of iets anders leuks, hoe kan ik zorgen dat OpenKAT het ook op mijn systeem doet?

OpenKAT gaat er vanuit dat je ubuntu of debian gebruikt, maar de community manager kreeg het onder Mac OS X zo aan de gang. Probeer het dus gerust, en help ons vooral met fixes en documentatie voor de installatie op je favoriete systeem!

Internationalisatie

In welke talen is OpenKAT beschikbaar?

OpenKAT ondersteunt op dit moment de volgende talen:

  • Engels

  • Nederlands

  • Papiamento

De meeste documentatie in de software zelf is in het Engels geschreven. De handleidingen en de wiki zijn in het Nederlands, maar willen we graag ook in andere talen beschikbaar maken.

Contact met het team

Er een aantal opties om contact te leggen het met team van OpenKAT: