<chapter id="security">
<title
>O &kppp; e recomendações de segurança</title>

<para
>Esta seção é principalmente para superusuários (<systemitem
>root</systemitem
>), pessoas com grande necessidade de segurança, ou simplesmente pessoas interessadas tecnicamente. Não é necessário ler isto se você somente usa o &Linux; em sua casa para uso pessoal, apesar de sempre ser bom aprender algumas coisinhas a mais sobre o seu sistema.</para>

<sect1 id="security-restricting-access">
<title
>Restringindo o acesso ao &kppp;</title>

<para
>Um administrador de sistema deve querer restringir o acesso como quem tem permissão de usar o &kppp;. Existem duas maneiras de realizar isto.</para>

<sect2 id="security-group-permissions">
<title
>Restringindo o acesso com permissões de grupo</title>

<para
>Crie um novo grupo (você pode desejar nomeá-lo como <systemitem
>discagem</systemitem
> ou similar), e coloque cada usuário que deve ter permissão para usar o &kppp; neste grupo. Então digite em um terminal:</para>

<screen
><prompt
>#</prompt
> <userinput
><command
>chown</command
> <option
>root.discagem</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
>Isto considera que o &kde; foi instalado em <filename class="directory"
> /opt/kde/</filename
> e que seu novo grupo foi nomeado <systemitem
>discagem</systemitem
>.</para>

</sect2>

<sect2 id="security-kppps-way">
<title
>Restringindo o acesso através do &kppp;</title>

<para
>Antes de fazer qualquer coisa, o &kppp; verifica se existe um arquivo nomeado <filename
>/etc/kppp.allow</filename
>. Se este arquivo existir, somente os usuários nomeados neste arquivo terão permissão de discar. Este arquivo deve ser legível para todos (mas é claro <emphasis
>NÃO</emphasis
> gravável). Somente nomes de login são reconhecidos, logo você não pode usar <acronym
>UID</acronym
>s neste arquivo. Aqui está um exemplo simples:</para>

<screen
># /etc/kppp.allow
# linhas de comentário como esta são ignoradas
# bem como linhas vazias

frederico
carlos
diana
</screen>

<para
>No exemplo acima, somente os usuários <systemitem
>frederico</systemitem
>, <systemitem
>carlos</systemitem
> e <systemitem
>diana</systemitem
> tem permissão de discagem, bem como cada usuário com uma <acronym
>UID</acronym
> de 0 (assim você não precisa listar o root explicitamente neste arquivo).</para>

</sect2>

</sect1>

<sect1 id="security-why-suid">
<title
>O &kppp; possui o bit <acronym
>SUID</acronym
> ligado? Qual a implicação para segurança?</title>

<para
>É virtualmente impossível escrever um discador sem o bit <acronym
>SUID</acronym
> que seja tanto seguro como fácil de usar para usuários inexperientes. O &kppp; lida com os riscos de segurança com a estratégia a seguir.</para>

<itemizedlist>
<listitem>
<para
>Imediatamente após o programa iniciar, o &kppp; se bifurca.</para>
</listitem>
<listitem>
<para
>O processo mestre, que manipula todas as operações da <acronym
>GUI</acronym
> (como a interação com o usuário), desliga o estado do <acronym
>SUID</acronym
> após a bifurcação, e se executa com privilégios normais do usuário.</para>
</listitem>
<listitem>
<para
>O processo escravo mantém estes privilégios, e é responsável por todas as ações que precisam de privilégios de <systemitem
>root</systemitem
>. Para manter esta parte segura, nenhuma chamada de biblioteca do &kde; ou &Qt; são usadas aqui, apenas chamadas de bibliotecas simples. O código-fonte para este processo é curto (cerca de 500 linhas) e bem documentado, assim é fácil para você verificar por falhas de segurança.</para>
</listitem>
<listitem>
<para
>Os processos mestre e escravo comunicam-se com o padrão &UNIX; <acronym
>IPC</acronym
>.</para>
</listitem>
</itemizedlist>

<para
>Agradecimentos especiais para Harri Porten por escrever este excelente pedaço de código. Pensava-se que seria impossível, mas ele dominou-o em uma semana.</para>

</sect1>

</chapter>
