<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>
