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
>&kppp; e la sicurezza</title>
<para
>Questa sezione si rivolge principalmente a superutenti (<systemitem
>root</systemitem
>) con alte richieste di sicurezza, o semplicemente a persone interessate nella parte tecnica. Non è necessario leggere questa sezione se usi &Linux; a casa, sebbene potresti in ogni caso imparare qualcosa.</para>
<sect1 id="security-restricting-access">
<title
>Restringere l'accesso a &kppp;</title>
<para
>Un amministratore di sistema potrebbe voler restringere l'accesso a chi dovrebbe poter usare &kppp;. Ci sono due modi per far ciò.</para>
<sect2 id="security-group-permissions">
<title
>Restringere l'accesso con i permessi del gruppo</title>
<para
>Crea un nuovo gruppo (puoi chiamarlo ⪚ <systemitem
>dialout</systemitem
> o qualcosa di simile), e inserisci nel gruppo ogni utente che dovrebbe poter usare &kppp;. Digita quindi al 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
>Ciò assume che &kde; è stato installato in <filename class="directory"
> /opt/kde/</filename
> e che il nuovo gruppo è chiamato <systemitem
>dialout</systemitem
>.</para>
</sect2>
<sect2 id="security-kppps-way">
<title
>Restringere l'accesso nel modo di &kppp;</title>
<para
>Prima di tutto, &kppp; controlla se esiste un file chiamato <filename
>/etc/kppp.allow</filename
>. Se questo file esiste, solo gli utenti nominati in questo file possono effettuare connessioni. Questo file deve essere leggibile da tutti (ma ovviamente <emphasis
>NON</emphasis
> scrivibile). Solo i nomi di utenti sono riconosciuti, così non puoi usare <acronym
>UID</acronym
> in questo file. Qui vi è un breve esempio:</para>
<screen
># /etc/kppp.allow
# le linee di commento come questa sono ignorate
# così come le linee vuote
federico
carlo
daisy
</screen>
<para
>Nell'esempio sopra, solo gli utenti <systemitem
>federico</systemitem
>, <systemitem
>carlo</systemitem
> e <systemitem
>daisy</systemitem
> possono effettuare connessioni, così come gli utenti con un <acronym
>UID</acronym
> uguale a 0 (così non devi elencare <quote
>root</quote
> esplicitamente nel file).</para>
</sect2>
</sect1>
<sect1 id="security-why-suid">
<title
>&kppp; ha il bit <acronym
>SUID</acronym
> attivo? E la sicurezza?</title>
<para
>È virtualmente impossibile scrivere un programma per la connessione senza il bit <acronym
>SUID</acronym
> che sia allo stesso tempo sicuro e facile da usare da parte di utenti inesperti. &kppp; cerca di risolvere i problemi di sicurezza con la seguente strategia.</para>
<itemizedlist>
<listitem>
<para
>Subito dopo l'avvio del programma, &kppp; effettua un fork.</para>
</listitem>
<listitem>
<para
>Il processo master, che gestisce tutte le operazioni dell'interfaccia grafica (come l'interazione con l'utente), perde lo stato <acronym
>SUID</acronym
> dopo il fork, e viene così eseguito con i normali privilegi dell'utente.</para>
</listitem>
<listitem>
<para
>Il processo slave mantiene i suoi privilegi, ed è responsabile di tutte le azioni che richiedono i privilegi di <systemitem
>root</systemitem
>. Per mantenere sicura questa parte, non sono usate chiamate a librerie &kde; o &Qt;, ma solo chiamate di libreria semplici. Il codice sorgente di questo processo è corto (circa 500 linee) e ben documentato, così è semplice da controllare in cerca di falle di sicurezza.</para>
</listitem>
<listitem>
<para
>I processi master e slave comunicano l'un l'altro con le procedure <acronym
>IPC</acronym
> (Inter-Process Communication, o comunicazione interprocesso N.d.T.) standard di &UNIX;.</para>
</listitem>
</itemizedlist>
<para
>Particolari ringraziamenti ad Harri Porten per aver scritto in modo eccellente questa parte di codice. Si pensava che fosse impossibile, ma è riuscito a scriverla in una settimana.</para>
</sect1>
</chapter>
|