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