1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
<chapter id="security">
<title
>O &kppp; e recomendações de segurança</title>
<para
>Esta seção é principalmente para super-usuá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>
|