Een Linux-systeem zit boordevol veiligheidsmaatregelen. Maar hoe veilig is het, wat kan beter en neemt de veiligheid af door bepaalde aanpassingen? OpenSCAP helpt je hierbij. Aan de hand van een profiel test je of een systeem voldoet aan gestelde veiligheidseisen. Dat betreft bijvoorbeeld bestandspermissies, file hashes, configuratie van daemons, instellingen voor wachtwoorden en nog veel meer. Je voert een scan uit en krijgt vervolgens een rapport met resultaten. Op basis hiervan verbeter je zwakke punten en handhaaf je de systeemveiligheid.  

 

SCAP staat voor “Security Content Automation Protocol” met als doel om de interoperabiliteit te verhogen. OpenVAS (ook in deze editie van Linux Magazine beschreven) gebruikt het ook. SCAP definieert onder meer het bestandsformaat van tests en rapporten. Met een OVAL-bestand definieer je de uit te voeren tests. Middels een profiel geef je aan welke tests uitgevoerd moeten worden. Een XCCDF-bestand bestaat uit één of meerdere profielen. Om het delen en verspreiden van SCAP-gegevens te vergemakkelijken, bundel je met een DataStream-bestand meerdere files, zoals XCCDF- en OVAL-bestanden.

De SCAP Security Guide (SSG) is geen handleiding, maar bevat juist tests en profielen voor distributies (waaronder Fedora en Debian) en voor enkele applicaties, zoals Firefox. Bij Debian komt het als pakket ssg-debian pas beschikbaar in versie 10. Voor Fedora installeer je het pakket scap-security-guide. Je vindt de bestanden in de volgende directory:

 

/usr/share/xml/scap/ssg/content/

 

De profielen voor Fedora staan in ssg-fedora-xccdf.xml. De tests zijn beschreven in ssg-fedora-oval.xml.

 

OpenSCAP

Bij bekende distributies, zoals Fedora en Debian, is OpenSCAP in de officiële repository aanwezig. OpenSCAP bestaat uit een aantal pakketten. We gebruiken hier als voorbeeld Fedora. Voor een andere distributie is de naamgeving of indeling mogelijk anders.

Het pakket openscap bevat de basisfunctionaliteit, waaronder probes om tests daadwerkelijk uit te voeren. Om een scan op de commandline te starten, installeer je openscap-scanner. Voor een grafische interface gebruik je het pakket scap-workbench. Als je wilt dat er regelmatig een scan wordt uitgevoerd, installeer dan openscap-daemon.

Om een remote machine te scannen, heb je openscap-utils nodig. Op de remote machine hoef je alleen het pakket openscap-scanner te installeren. De scanner kopieert namelijk de noodzakelijke tests en profielen tijdelijk naar de remote machine. Hierdoor beheer je deze bestanden op een centrale plek.

 

Scan

Om op de commandline een systeem te scannen, gebruik je het commando oscap. Daarbij moet je het te gebruiken profiel aangeven. Haal die informatie als volgt op:

 

oscap info /usr/share/xml/scap/ssg/content/ssg-fedora-xccdf.xml

Profiles:

        standard

        common

 

Voor oscap moet je altijd het volledige pad naar bestanden opgeven. Dit XCCDF-bestand bevat twee profielen: standard en common. Het standaardprofiel bevat maar een minimaal aantal tests. Daarom gebruiken we het profiel ‘common’ voor de scan:

 

sudo oscap xccdf eval –profile common –results xccdf-scan-results.xml –report xccdf-scan-report.html –oval-results  /usr/share/xml/scap/ssg/content/ssg-fedora-xccdf.xml

 

Het controleren van bestandspermissies kost bijvoorbeeld veel tijd. Daarom duurt een scan lang, soms tientallen minuten. De optie –results schrijft een XML-resultaatbestand weg, dat we hieronder gebruiken. Een HTML-rapport krijgen we door de optie –report. Door de optie –oval-results staat hierin technische detailinformatie van individuele tests.

Open het rapport. Bovenaan staat een algemeen overzicht van de testresultaten. Daaronder zie je een lijst met individuele resultaten. Door hierop te klikken, verschijnt een pop-up venster met details. Erg nuttig is de beschrijving van welk deel van het systeem de test raakt en het doel ervan, de zogenaamde rationale. Verder vind je voor gefaalde tests (waar mogelijk) de optie om een Bash script of een Ansible snippet te genereren. Klik daarvoor op show. Je gebruikt dit om het systeem aan te passen, zodat de test bij een volgende scan slaagt. Dit heet remediation. Op de commandline genereer je een dergelijk script op basis van het XML-resultaatbestand:

 

oscap xccdf generate fix –profile common –output remediation.sh –template urn:xccdf:fix:script:sh xccdf-scan-results.xml

 

Gebruik voor Ansible als template urn:xccdf:fix:script:ansible. Automatische remediation tijdens het scannen is mogelijk door de optie –remediate. Dat raden we echter af, omdat je dan het systeem ongecontroleerd aanpast.

 

Workbench

Als de SCAP Security Guide op je systeem aanwezig is, zie je bij het opstarten van de workbench eerst een pop-up scherm. De workbench detecteert je distributie en toont die bij Select content to load. De workbench gebruikt hiervoor standaard de DataStream-bestanden, maar kan ook XCCDF aan. Klik op Load Content om de profielen en tests voor je systeem te laden, waarna de workbench verschijnt.

Bovenaan zie je bij Profile de beschikbare profielen. Het getal erachter is het aantal bijbehorende tests. Standaard checkt de workbench de lokale machine. Om een remote machine te scannen, activeer je de optie Remote Machine (over SSH) en vult in de verschenen velden de hostnaam en het userID in.

In het centrale deel eronder zie je een overzicht van de tests, die bij het gekozen profiel horen. Klik op een test om een beschrijving te zien. Om de scan te starten, klik je op Scan rechtsonder. Door de optie Dry run aan te vinken, voert de workbench geen scan uit, maar zie je in een pop-up scherm het uit te voeren oscap commando. Mocht je tijdens de scan het systeem toch meteen willen herstellen, vink dan de optie Remediate aan.

Als de scan voltooid is, zie je onderaan twee nieuwe knoppen. Om het rapport te zien, klik je op Show Report. De webbrowser wordt geopend en je ziet hetzelfde rapport als hiervoor. Om de resultaten te bewaren, klik je op Save Results. Kies hier het gewenste formaat, bijvoorbeeld als HTML-webpagina.

 

Tailoring

Om een profiel aan te passen, maak je een zogenaamd tailoring bestand. Hiermee schakel je bijvoorbeeld bepaalde tests uit of verander je een testwaarde, zoals de minimumwachtwoordlengte. Door een tailoring bestand blijft het profiel zelf ongewijzigd en beïnvloed je alleen het scanproces. Zo’n bestand aanmaken, doe je het eenvoudigst via de workbench.

Klik rechts naast het profiel op Customize. In het pop-up scherm geef je eerst een naam als identificatie op. Vervolgens verschijnt een venster met alle tests bij het gekozen profiel. Tests activeren of deactiveren doe je door een vinkje te zetten of juist weg te halen in het betreffende selectievakje. Een testwaarde pas je rechts aan bij Modify Value. Klik tot slot op OK onderaan de lijst en sla de aanpassingen op als tailoring bestand via het menu File -> Save Customization only.

In de workbench kies je dit bestand vervolgens via Customization helemaal bovenaan. Op de commandline gebruik je het bestand middels de optie –tailoring-file:

 

sudo oscap xccdf eval –tailoring-file <pad_naar_bestand> –profile common –results xccdf-results.xml –report xccdf-scan-report.html –oval-results /usr/share/xml/scap/ssg/content/ssg-fedora-xccdf.xml

 

Daemon

Om je systeem automatisch op gezette tijden te scannen, gebruik je de OpenSCAP daemon. Start de service als volgt:

 

sudo systemctl start oscapd

 

De daemon werkt op basis van taken. Die taken maak je aan met het commando oscapd-cli:

 

sudo oscapd-cli task-create –i

 

Het argument -i is verplicht en start een dialoog om de taak aan te maken. Achtereenvolgens geef je zaken op als de te scannen host, het te gebruiken DataStream-bestand, het profiel en de frequentie. Haal nu de lijst met taken op:

 

sudo oscapd-cli task

 

Standaard is een taak niet geactiveerd. Doe dat als volgt:

 

sudo oscapd-cli task <taak_id> enable

 

Hierbij is <taak_id> het taaknummer in de kolom ID van de lijst hierboven. Om een lijst van resultaten voor een taak te krijgen, gebruik je:

 

sudo oscapd-cli result <taak_id>

 

Je ziet dan de volgende lijst met resultaten:

 

Results of Task “mijn_taak”, ID = 1

 

—+———————+—————–

ID | Timestamp           | Status          

—+———————+—————–

3  | 2017-07-21 15:10:10 | Evaluation Error

2  | 2017-07-21 14:10:33 | Evaluation Error

1  | 2017-07-21 13:09:50 | Evaluation Error

 

De status Evaluation Error betekent niet dat de scan mislukt is, maar dat het systeem niet conform het gekozen profiel is. Om een HTML-rapport zoals in afbeelding 1 te genereren, tik je het volgende in:

 

sudo oscapd-cli result <task_id> <result_id> report > xccdf-scan-report.html

 

Behalve het taaknummer <task_id> geef je tevens het nummer <result_id> op van de gewenste scanrun.

 

Tot slot

Met OpenSCAP heb je een inzichtelijk hulpmiddel om op een gestandaardiseerde manier de veiligheid van je systeem te controleren. De Security Guide is daarbij onmisbaar en gelukkig verschijnen steeds meer bijdragen voor verschillende distributies.

 

Links

OpenSCAP – www.open-scap.org