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
|
<chapter id="security">
<title
>Kwestie związane z bezpieczeństwem w &kppp;</title>
<para
>Ta część dokumentacji przeznaczona jest dla Administratorów systemu (użytkownika <systemitem
>root</systemitem
>), osób o wysokich wymaganiach dotyczących bezpieczeństwa, lub osób zainteresowanych technicznymi kwestiami funkcjonowania systemu. Nie jest konieczne czytanie tego tekstu, jeżeli wykorzystujesz Linuksa w domu dla swoich potrzeb, jednak zawsze możesz nauczyć się czegoś interesującego.</para>
<sect1 id="security-restricting-access">
<title
>Ograniczanie dostępu do &kppp; </title>
<para
>Administrator systemu może decydować kto może wykorzystywać &kppp;Istnieją dwie możliwości realizacji tego zadania.</para>
<sect2 id="security-group-permissions">
<title
>Ograniczanie dostępu z wykorzystaniem grupowych praw dostępu</title>
<para
>Utwórz nową grupę (możesz ją nazwać na przykład <systemitem
>dialout</systemitem
>) i przypisz do niej wszystkich użytkowników, którzy będą mogli korzystać z &kppp;, a nasŧępnie wpisz następującego polecenia:</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
>W powyższym przykładzie, zakłada się iż &kde; zainstalowano w katalogu <filename class="directory"
> /opt/kde/</filename
> oraz, że nowo utworzona grupa nosi nazwę <systemitem
>dialout</systemitem
>.</para>
</sect2>
<sect2 id="security-kppps-way">
<title
>Ograniczanie dostępu z wykorzystaniem mechanizmów &kppp;</title>
<para
>Zanim program &kppp; wykona cokolwiek, najpierw sprawdza on istnienie pliku <filename
>/etc/kppp.allow</filename
>. Zawiera on listę wszystkich użytkowników, którzy mogą skorzystać z programu &kppp;. Plik ten powinien posiadać ustawione prawo odczytu dla każdego użytkownika (ale oczywiście <emphasis
>BEZ</emphasis
> prawa zapisu). Program &kppp; rozpoznaje jedynie nazwy (loginy) użytkowników, tak więc nie możesz wykorzystywać numerów <acronym
>UID</acronym
> użytkownika. Poniżej przedstawiono krótki przykład:</para>
<screen
># /etc/kppp.allow
# komentarze oraz linie puste są ignorowane
krzys
antek
monika
</screen>
<para
>W powyższym przykładzie, jedynie użytkownicy: <systemitem
>krzys</systemitem
>, <systemitem
>antek</systemitem
> oraz <systemitem
>marta</systemitem
> mogą wykorzystać program &kppp; i zadzwonić do dostawcy internetowego. Poza wymienionymi w pliku loginami, pełne możliwości programu może wykorzystywać użytkownik o numerze <acronym
>UID</acronym
> równym 0 (co oznacza, że nie musisz wpisywać tutaj użytkownika: root)</para>
</sect2>
</sect1>
<sect1 id="security-why-suid">
<title
>Program &kppp; ma ustawiony znacznik <acronym
>SUID</acronym
> ? Czy nie wpływa to negatywnie na bezpieczeństwo?</title>
<para
>Jest praktycznie niemożliwe napisanie programu, który ma dostęp do sprzętu (modemu), bez zastosowania znacznika <acronym
>SUID</acronym
> w sposób jednocześnie bezpieczny i łatwy dla niedoświadczonego użytkownika. Program &kppp; radzi sobie z tym problemem w sposób następujący:</para>
<itemizedlist>
<listitem>
<para
>Natychmiast po uruchomieniu program &kppp; rozdziela się (fork) na osobne procesy..</para>
</listitem>
<listitem>
<para
>Proces główny, obsługujący interfejs użytkownika (<acronym
>GUI</acronym
>), pozbywa się znacznika <acronym
>SUID</acronym
> i działa dalej na prawach zwykłego użytkownika.</para>
</listitem>
<listitem>
<para
>Proces pomocniczy utrzymuje podwyższone uprawnienia, gdyż jest on odpowiedzialny za wszystkie działania wymagające uprawnień Administratora. Aby jego działanie było bezpieczne, to ta część programu nie wykorzystuje żadnych funkcji środowiska &kde; lub bibliotek &Qt;. Kod źródłowy procesu pomocniczego jest krótki (około 500 linii) oraz dobrze udokumentowany, tak aby możliwe było szybkie wykrycie wszelkich luk i zagrożeń dla bezpieczeństwa.</para>
</listitem>
<listitem>
<para
>Procesy główny oraz pomocniczy komunikują się ze sobą z wykorzystaniem standardowego mechanizmu <acronym
>IPC</acronym
>. systemu &UNIX; </para>
</listitem>
</itemizedlist>
<para
>Specjalne podziękowania należą się Harri'emu Portenowi za napisanie tego wspaniałego programu. Wszyscy myśleli, że jest to niemożliwe, ale jemu udało się to w ciągu tygodnia.</para>
</sect1>
</chapter>
|