<chapter id="security">
<title
>&kppp; en beveiliging</title>

<para
>Deze sectie is hoofdzakelijk voor de systeembeheerder (<systemitem
>root</systemitem
>) met hoge beveiligingsniveaus of eenvoudig technisch geïnteresseerde mensen. Het is niet nodig dit te lezen als u &Linux; alleen thuis voor uzelf gebruikt, hoewel u er wel wat van op kan steken.</para>

<sect1 id="security-restricting-access">
<title
>Beperking van toegang tot &kppp;</title>

<para
>Een systeembeheerder zou de toegang willen beperken tot wie het is toegestaan om &kppp; te gebruiken. Er zijn twee manieren om dat te doen.</para>

<sect2 id="security-group-permissions">
<title
>Beperking van toegang met groepstoegangsrechten</title>

<para
>Maak ee nieuwe groep aan (deze zou de naam <systemitem
>dialout</systemitem
> of zoiets) kunnen krijgen en zet elke gebruiker die &kppp; mag gebruiken in die groep. Type daarna op de prompt:</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
>Hierbij is aangenomen dat &kde; is geïnstalleerd in <filename class="directory"
> /opt/kde/</filename
> en dat uw nieuwe groep de naam <systemitem
>dialout</systemitem
> heeft gekregen.</para>

</sect2>

<sect2 id="security-kppps-way">
<title
>Beperking van toegang op de manier van &kppp;</title>

<para
>Alvorens iets te doen, controleert &kppp; of er een bestand genaamd <filename
>/etc/kppp.allow</filename
> is. Als zo'n bestand bestaat, dan mogen alleen gebruikers genoemd in dit bestand uitbellen. Dit bestand moet leesbaar zijn door iedereen (maar natuurlijk <emphasis
>NIET</emphasis
> beschrijfbaar.) Alleen aanmeldnamen worden herkend, zodat u geen <acronym
>UID</acronym
>'s in dit bestand kunt gebruiken. Hier is een kort voorbeeld:</para>

<screen
># /etc/kppp.allow
# commentaar regels zoals deze worden genegeerd
# evenals lege regels

fred
karl
daisy
</screen>

<para
>In het bovenstaande voorbeeld mogen alleen de gebruikers <systemitem
>fred</systemitem
>, <systemitem
>karl</systemitem
> en <systemitem
>daisy</systemitem
> uitbellen, evenals elke gebruiker met een <acronym
>UID</acronym
> van 0 (u hoeft root dus niet expliciet in deze lijst op te nemen).</para>

</sect2>

</sect1>

<sect1 id="security-why-suid">
<title
>&kppp; heeft het <acronym
>SUID</acronym
> bit aan? Hoe zit dat met de beveiliging?</title>

<para
>Het is vrijwel onmogelijk om een uitbel systeem te schrijven zonder het <acronym
>SUID</acronym
>-bit dat zowel veilig is als voor onervaren gebruikers gemakkelijk te gebruiken. &kppp; houdt rekening met de beveiligingszaken met de volgende strategie.</para>

<itemizedlist>
<listitem>
<para
>Onmiddellijk nadat het programma start, doet &kppp; een fork.</para>
</listitem>
<listitem>
<para
>Het hoofdproces, dat alle <acronym
>GUI</acronym
>-bewerkingen uitvoert (zoals interactie met de gebruiker), laat de <acronym
>SUID</acronym
>-status vallen na de fork en draait met normale gebruikersprivileges.</para>
</listitem>
<listitem>
<para
>Het slave-proces behoudt zijn privileges en is verantwoordelijk voor alle acties die nodig zijn met <systemitem
>root</systemitem
>-privileges. Om dit gedeelte veilig te houden, worden hier geen &kde;- of &Qt;- bibliotheekaanroepen gebruikt, alleen eenvoudige bibliotheekaanroepen. De broncode voor dit proces is kort (ongeveer 500 regels) en goed gedocumenteerd, zodat het gemakkelijk voor u is om te controleren op beveiligingsgaten.</para>
</listitem>
<listitem>
<para
>Hoofd- en slave-processen communiceren met standaard &UNIX; <acronym
>IPC</acronym
>.</para>
</listitem>
</itemizedlist>

<para
>Speciale dank gaat naar Harri Porten voor het schrijven van dit uitzonderlijke stuk code. Het leek onmogelijk, maar hij heeft het binnen een week gedaan.</para>

</sect1>

</chapter>
