<chapter id="security"> <title>Sikkerhedshensyn med &kppp;</title> <para>Dette afsnit er i hovedsagelig beregnet for systemadministratorer (<systemitem>root</systemitem>), de med høje sikkerhedskrav eller helt enkelt teknisk interesserede. Det er ikke nødvendigt at læse dette hvis du kun anvender &Linux; selv derhjemme, selvom du i alle tilfælde kan lære et og andet.</para> <sect1 id="security-restricting-access"> <title>Begræns adgangen til &kppp;</title> <para>En systemadministrator kan ville begrænse adgangen med hensyn til hvem der får lov at bruge &kppp;. Der findes to måder at opnå dette.</para> <sect2 id="security-group-permissions"> <title>Begræns adgangen med gruppetilladelser</title> <para>Opret en ny gruppe (du vil måske kalde den til <systemitem>dialout</systemitem> eller noget lignende), og tilføj alle brugere som skal få lov til at anvende &kppp; til denne gruppe. Skriv derefter på kommandolinjen:</para> <screen><prompt>#</prompt> <userinput><command>chown</command> <option>root.dialout</option> <filename>/opt/kde/bin/kppp</filename></userinput> <prompt>#</prompt> <userinput><command>chmod</command> <option>4750</option> <filename>/opt/kde/bin/kppp</filename></userinput> </screen> <para>Dette forudsætter at &kde; installeredes i <filename class="directory"> /opt/kde/</filename> og at den nye gruppe hedder <systemitem>dialout</systemitem>.</para> </sect2> <sect2 id="security-kppps-way"> <title>Begræns adgangen på &kppp;s egen måde</title> <para>Inden den gør noget, kontrollerer &kppp; om der findes en fil som hedder <filename>/etc/kppp.allow</filename>. Hvis denne fil findes, tillades kun brugere som nævnes i denne fil at ringe op. Denne fil skal være læsbar af alle (men selvfølgelig <emphasis>IKKE</emphasis> skrivbar). Kun brugernavne genkendes, så du kan ikke anvende en <acronym>UID</acronym> i denne fil. Her er et kort eksempel:</para> <screen># /etc/kppp.allow # kommentarlinjer som denne ignoreres # præcis som tomme linjer hans karl lene </screen> <para>I ovenstående eksempel, tillades kun brugerne <systemitem>hans</systemitem>, <systemitem>karl</systemitem> og <systemitem>lene</systemitem> at ringe op, så vel som alle brugere med <acronym>UID</acronym> 0 (så du behøver ikke eksplicit angive root i filen).</para> </sect2> </sect1> <sect1 id="security-why-suid"> <title>Kppp har <acronym>SUID</acronym>-bitten sat? Hvad sker der så med sikkerheden?</title> <para>Det er mere eller mindre umuligt at skrive et opkaldsprogram som både er sikkert og let at anvende for uerfarne brugere uden at sætte <acronym>SUID</acronym>-bitten. &kppp; håndterer sikkerhedsproblemerne med følgende strategi.</para> <itemizedlist> <listitem> <para>Umiddelbart efter at programmet er startet, så skaber &kppp; en ny proces (fork).</para> </listitem> <listitem> <para>Hovedprocessen, som håndterer hele den grafiske grænsefladen med brugerpåvirkning, slipper <acronym>SUID</acronym>-tilstanden efter den nye processen er lavet, og kørt med normale brugerrettigheder.</para> </listitem> <listitem> <para>Den nye proces beholder sine rettigheder, og har ansvaret for alle handlinger som behøver rettigheder som <systemitem>root</systemitem>. For at holde denne del sikker, så anvendes ingen kald til &kde;- eller &Qt;-biblioteker, bortset fra enkle bibliotekskald. Kildekoden for denne proces er kort (omkring 500 linjer) og veldokumenteret, så det er let at kontrollere den for at finde sikkerhedshuller.</para> </listitem> <listitem> <para>Hovedprocessen og den nye proces kommunikerer med almindelige &UNIX; <acronym>IPC</acronym>.</para> </listitem> </itemizedlist> <para>Særlig tak til Harri Porten for at have skrevet denne udmærkede kode. Det ansås for at være umuligt, men det lykkedes for ham på en uge.</para> </sect1> </chapter>