Configuratietools

We zijn in het vorige artikel al even kort ingegaan op de toolset die aanwezig is om RSBAC te configureren. Er zijn twee manieren om dit te doen: middels de command line en middels (dialog) menuutjes. Initieel is alleen de gebruiker met het UID 400 bevoegd om configuratie aanpassingen te maken. Let goed op, zoals eerder uitgelegd mag ook root de configuratie niet aanpassen zonder expliciet gegeven toestemming. "Nou," zou u kunnen denken "dan su ik toch gewoon even naar UID 400?". Helaas, dat helpt u ook niet verder want ook su moet eerst toestemming krijgen van de security officer om dat te mogen doen. Het staat per default 'uit'. In het systeem logfile (meestal /var/log/messages) zal dan een logregel staan die er ongeveer als volgt uit zal ziet:
Apr 25 08:34:08 rsbac kernel: rsbac_adf_request(): request CHANGE_OWNER, 
caller_pid 1369, caller_prog_name su, caller_uid 0, target-type PROCESS, 
tid 1369, attr owner, value 400, result NOT_GRANTED by AUTH
Hier staat dat de functie rsbac_adf_request een 'request' van het type 'change_owner' heeft binnengekregen van het programma met de naam 'su', wat met UID 0 (root) draaide in een proces met process-id 1369: of het toegestaan was om dat process te laten wisselen van 'owner' en wel naar een owner met UID 400 (de security officer). Kort gezegd: root wil via su security officer worden maar mag dat niet van AUTH. Het helpt dus niet: u moet lokaal inloggen als security officer om de configuratie aan te kunnen passen.

Bent u eenmaal ingelogged als security officer kunt u de aanpassingen zoals gezegd op twee manieren maken: via de command line of via het menusysteem. Welk mechanisme u (vooral) gaat gebruiken hangt af van uw gebruikspatroon. Als u bijvoorbeeld dagelijks een aantal standaard-systemen moet inrichten is het handig om daarvoor een script te kunnen schrijven en zult u dus de command line tools tenminste willen kennen. Het configureren gaat in de praktijk vaak prettiger met het menusysteem, vooral omdat de RSBAC tools soms onvriendelijke syntaxen gebruiken, bijvoorbeeld als lange reeksen enen en nullen moeten worden meegegeven om bitmaps van permissies mee aan te duiden. Daarbij geef ik als waarschuwing mee dat het menu-systeem weliswaar vriendelijker in de omgang is maar dat het nog steeds niet allemanszaak is om ze te bedienen. Iemand die de theorie achter RSBAC niet voldoende goed kent - met name de werking van de geselecteerde modellen - zal er nog steeds niet goed mee uit de voeten kunnen.

Bij het initiële booten zullen een aantal diensten niet op willen komen. Verdere studie van het logfile maakt meestal vlot duidelijk welke toegang nog verleend moet worden. Als voorbeeld noemde ik in het vorige artikel de httpd daemon. Deze dient door de gebruiker root opgestart te worden, omdat de daemon moet luisteren op poort 80. Luisteren op lage poortnummers is op en Linux (Unix) systeem voorbehouden aan de 'superuser'. De meeste httpd daemons zijn netjes geschreven en zullen daarom zo snel mogelijk willen wisselen naar een minder gevaarlijke identiteit. Dat voorkomt misbruik van de daemon door kwaadwillenden en beperkt het risico op overmatige schade door bugs. Maar omdat wisselen van de identiteit voor httpd standaard niet door RSBAC wordt toegestaan sterft de daemon af.

Hieronder laat ik zien hoe we zowel via menu's als via de command line interface httpd weer aan de praat kunnen krijgen.

Command line

In ons voorbeeld gaan we er van uit dat de daemon zal moeten kunnen wisselen naar UID 30. Dat kunnen we realiseren door het volgende commando in te toetsen:
secoff:~ > auth_set_cap FILE add /usr/sbin/httpd 30
Uitvragen van de zojuist gezette permissie kan ook:
secoff:~ > auth_set_cap FILE get /usr/sbin/httpd 
30
secoff:~ > _
Nu zou het starten van de httpd daemon moeten lukken. Op soortgelijke wijze kunt u ook bijvoorbeeld atd en de portmapper portmap toestemming geven van UID te wisselen.

Menu

De andere manier is middels het opstarten van het menu. In figuur 1 zien we het menu wat we te zien krijgen als we als security officer intoetsen:
secoff@doos:~ > rsbac_fd_menu /usr/sbin/httpd 

Figuur 1. RSBAC menu

In dit menu scrollen we naar beneden met de pijltjestoetsen tot we de optie AUTH capabilities vinden. Deze selecteren we. Er worden dan een aantal vervolgschermen getoond, waarin het gewenste UID kan worden ingevuld.